博客园  :: 首页  :: 新随笔  :: 管理

LVS+Nginx实现高可用集群

Posted on 2022-04-30 22:13  揽星河、入梦  阅读(535)  评论(0编辑  收藏  举报

Nginx基础

什么是Ngnix

  1. Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,其特点是占有内存少,并发能力强
  2. 主要用来反向代理
  3. 通过配置文件可以实现负载均衡和集群
  4. 静态资源虚拟化
    image
    image

nginx.conf结构模型

image

Nginx进程模型

image
image
通过ps -ef|grep nginx查看主进程和工作进程,在nginx.conf中设置,进行设置worker_processes,一般来说CPU有几个就设置几个工作进程或者N-1个。

Nginx处理Web请求机制解析

image
传统服务器同步阻塞(bio)
image
Nginx是异步非阻塞的多路复用器,在nginx.conf中设置use epoll(默认配置),worker_connections可以设置每个worker的最大连接数。
image

日志切分

设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了。

  1. 参数意义
    $remote_addr 客户端ip
    $remote_user 远程客户端用户名,一般为:’-’
    $time_local 时间和时区
    $request 请求的url以及method
    $status 响应状态码
    $body_bytes_send 响应客户端内容字节数
    $http_referer 记录用户从哪个链接跳转过来的
    $http_user_agent 用户所使用的代理,一般来时都是浏览器
    $http_x_forwarded_for 通过代理服务器来记录客户端的ip
  2. 日志切分
    image
    image
    添加一个定时任务处理
    image
    常用定时任务命令:
    service crond start//启动服务
    service crond stop//关闭服务
    service crond restart//重启服务
    service crond reload//重新载入配置
    crontab -e // 编辑任务
    crontab -l // 查看任务列表

Nginx跨域问题

在server中添加配置、
image

Nginx中配置静态资源防盗链

在server中添加配置
image

Nginx的模块化设计解析

image

OSI网络模型

image

Nginx的集群负载均衡器

image
image
负载均衡-默认轮询
负载均衡-加权轮询,在后面增加weight = 2

upstream tomcats {
        server 192.168.1.173:8080 weight = 2;
        server 192.168.1.174:8080 weight = 1;
        server 192.168.1.175:8080 weight = 3;
}

upstream参数

  1. max_conns
    限制每台server的连接数,用于保护避免过载,可以起到限流作用
upstream tomcats {
        server 192.168.1.173:8080 max_conns=2;
        server 192.168.1.174:8080 max_conns=2;
        server 192.168.1.175:8080 max_conns=2;
}
  1. slow_start
    缓慢的启动,慢慢加入到集群,会在配置的时间内将权重慢慢升级到配置的权重值,必须要使用在集群里面,必须要和权重一起使用
upstream tomcats {
        server 192.168.1.173:8080 max_conns=2 slow_start=60s;
        server 192.168.1.174:8080 max_conns=2;
        server 192.168.1.175:8080 max_conns=2;
}

注意:
1、商业版要收费
2、该参数不能使用在hash和random load balancing中
3、如果在upstream中只有一台server,则该参数失效。
3. down
一种状态,标识服务器节点不可用

upstream tomcats {
        server 192.168.1.173:8080  down;
        server 192.168.1.174:8080 weight = 1;
        server 192.168.1.175:8080 weight = 3;
}
  1. backup
    表明服务器是一台备用机(其他服务挂掉之后,才会被访问)
upstream tomcats {
        server 192.168.1.173:8080 weight = 2;
        server 192.168.1.174:8080 weight = 1;
        server 192.168.1.175:8080 weight = 3;
}

注意
backup参数不能使用在hash和random load balancing中
5. max_fails
表示失败几次,则标识server已宕机,踢出上游服务

upstream tomcats {
        server 192.168.1.173:8080 weight = 2;
        server 192.168.1.174:8080 weight = 1;
        server 192.168.1.175:8080 weight = 3;
}
  1. fail_tiemout
    表示失败的重试时间
upstream tomcats {
        server 192.168.1.173:8080 max_fails=2 fail_timeout=15s;
        server 192.168.1.174:8080 weight = 1;
        server 192.168.1.175:8080 weight = 3;
}

Keepalived提高吞吐量

keepalived: 设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header 信息
image

负载均衡之ip_hash

upstream tomcats {
        ip_hash;

        server 192.168.1.173:8080;
        server 192.168.1.174:8080;
        server 192.168.1.175:8080;
}

image
hash原理根据服务器数量进行取模分配
其中ip_hash底层是使用请求ip通过“.”分割后取前三个数,如图:
image
注意:若服务器发生问题需要临时移除,不能在集群中直接删除服务器,必须使用“down”,避免hash算法发生更改。

一致性hash算法

image
image
image

负载均衡之url_hash和least_conn

image
image

使用Nginx配置SSL证书

image
image
image
image

Keepalived双机主备原理

image
VRRP:虚拟路由冗余协议
image

配置Keepalived-主

image
image
image
image

把Keepalived注册为系统服务

在解压文件目录下cd Keepalived/etc
cp init.d/Keepalived etc/init.d
cp sysconfig/Keepalived etc/sysconfig
systemctl daemon-reload
systemctl start Keepalived.service
systemctl stop Keepalived.service
systemctl restart Keepalived.service

配置Keepalived-备

image
image

Keepalived配置Nginx自动重启

image
image
image

Keepalived双主热备

image
双机主备会造成资源浪费,所以设置成双主热备,互为主备。
image
image
image
image

为何使用LVS+Nginx

image
image
image
image

LVS三种模式

  1. NAT
    image
  2. TUN
    image
  3. DR
    image

配置LVS-DR模式ipvsadm

image
image
image
image
image
image
image
image
image
image
image
先安装ipvsadm: yum install ipvsadm
image
image
image
image

LVS负载均衡算法

image
image