nginx负载均衡和高可用

代理和负载均衡的区别
    代理负责把连接请求直接转发到后台某个web节点
    负载均衡负责把请求使用某种调度算法分散发布给后台所有web节点
    
1.配置nginx代理服务器lb1

(1)启动lb1,安装nginx
vim /etc/yum.repos.d/nginx.repo
添加:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
保存退出
yum -y install nginx 
systemctl start nginx
systemctl enable nginx

(2)创建代理配置文件,添加优化项(或直接使用第(4)步的配置)
vim /etc/nginx/conf.d/lb1.conf
添加:
server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://192.168.1.102;                                
                proxy_set_header Host $http_host;                                #转发请求时,包含头部“HOST”信息
                proxy_set_header X-Real-IP $remote_addr;                        #和下行一起,共同实现追踪客户端原ip
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                
                proxy_connect_timeout 30;                                        #代理和后端服务器连接超时时间
                proxy_send_timeout 60;                                            #后端服务器传回代理的超时时间
                proxy_read_timeout 60;                                            #代理等待后端服务器的响应时间
                
                proxy_buffering on;                                                #启用缓存,后端返回内容先缓存,再给客户端,收到多少转多少
                proxy_buffer_size 32k;                                            #代理缓存用户头信息的缓存区大小
                proxy_buffers 4 128k;                                            #缓存区的设置
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://192.168.1.102;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
保存退出
systemctl restart nginx

(3)客户端修改hosts文件指向lb1,测试访问

(4)扩展:创建优化项文件,网站配置文件直接调用(选做,但推荐)
vim /etc/nginx/nginx_params
添加:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
保存退出

网站配置调用
vim /etc/nginx/conf.d/lb1.conf
修改为:
server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://192.168.1.102;
                include nginx_params;
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://192.168.1.102;
                include nginx_params;
        }
}
保存退出
重启nginx:systemctl restart nginx


2.负载均衡(Load Balance),简写LB
    面对高并发web请求,使用各种调度算法(rr,wrr,lc,wlc,ip_hash),分散转发到后台web群集节点,提高数据吞吐量,高容灾
    常见的LB:
            软件:lvs  nginx   haproxy   
            硬件:F5
            云LB:阿里云SLB    腾讯云CLB   青云QLB   ucloud ULB
            
    四层负载:ip地址    tcp/udp  端口号
    七层负载:HTTP  https  ftp   SMTP  
    
(1)修改lb1的配置文件,添加负载均衡功能
vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
        server 192.168.1.102:80;
        server 192.168.1.106:80;
}

server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }
}
保存退出
重启nginx:systemctl restart nginx 

(2)客户端访问验证,浏览器如果判断不出来,就看web节点上的日志。

(3)nginx负载均衡后端状态
    down             当前节点服务器不参与负载均衡
    backup          备份服务器
    max_fails        允许请求失败的次数
    fails_timeout    经过max_fails失败后,服务的暂停时间
    max_conns       同一ip最大连接数
    
例子:
vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
        server 192.168.1.102:80 max_fails=2 fails_timeout=10s max_conns=1;  
        server 192.168.1.106:80 down;            #一般用于停机维护
}

#################################################################################
1.配置4层负载均衡,发布内部服务器的ssh和mysql
vim /etc/nginx/nginx.conf
插入数据到http字段上方:
stream {
        upstream sshweb1 {
                server 192.168.1.109:22;
        }
        upstream mysql {
                server 192.168.1.105:3306;
        }

        server {
                listen 5555;
                proxy_pass sshweb1;
                proxy_connect_timeout 30;
                proxy_timeout 60;
        }
        server {
                listen 7777;
                proxy_pass mysql;
                proxy_connect_timeout 30;
                proxy_timeout 60;
        }
}
保存退出
重启服务:systemctl restart nginx

#############################################################################
高可用-增加容错性(HA:High availability)
    
协议:VRRP(虚拟路由冗余协议) 公有协议  224.0.0.18
      HSRP(热备份路由协议)   私有协议,Cisco公司

高可用软件:
    keepalived:使用vrrp实现多台主机高可用群集
    高可用角色:master 主服务器
                backup 备服务器
                
实施步骤:
目的:实现两台负载均衡器的高可用
环境:两台负载均衡器
        lb1:192.168.1.117  
        lb2:192.168.1.118

(1)安装keepalived(两台都装)
yum -y install keepalived

(2)配置keepalived
主服务器:lb1
vim /etc/keepalived/keepalived.conf
修改为:
global_defs {
   router_id lb1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254
    }
}
保存退出
启动服务:systemctl restart keepalived

备服务器:lb2
vim /etc/keepalived/keepalived.conf
修改为:
global_defs {
   router_id lb2            #路由id号,和主服务器必须不同
}

vrrp_instance VI_1 {
    state BACKUP            #状态:BACKUP备   MASTER主
    interface ens33
    virtual_router_id 51
    priority 99                #优先级:备比主要小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254        #虚拟路由ip,公共ip
    }
}
保存退出
启动服务:systemctl restart keepalived

(3)查看虚拟ip(漂移ip地址)
ip a show dev ens33

(4)复制lb1(192.168.1.117)关于nginx的配置到lb2(192.168.1.118)
现在lb2安装nginx:yum -y install nginx
在lb1上scp复制nginx的所有配置:
    scp -rp /etc/nginx/*  root@192.168.1.118:/etc/nginx
然后,在lb2上启动nginx服务:
    systemctl restart nginx
    
(5)客户端修改hosts文件,访问验证(访问成功,关闭主服务器,再访问)
vim /etc/hosts
修改为:
192.168.1.254  blog.benet.com zh.benet.com
保存退出

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_46715997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值