请选择 进入手机版 | 继续访问电脑版

keepalived+nginx高可用配置说明(亲验)

[复制链接]
余峻 发表于 2021-1-2 17:40:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
keepalived+nginx高可用设置说明(亲验)

keepalived和nginx的安装及原理分析不再叙述,如需相识自行查阅资料。本文主要对keepalived和nginx的设置文件举行说明、搭建高可用集群说明及验证(原理照旧需要相识的)。
ngin及keepalived常用下令
主要分为以下3大步举行摆设及验证
1.分别验证应用服务器1、应用服务器2摆设的应用是否可以大概正常访问。
2.分别验证主、备nginx负载访问应用是否能正常访问。
3.通过keepalived虚拟ip来验证nginx负载应用是否正常以及其高可用。
资源说明如下(用四台服务器做高可用模仿):
  1. 应用服务器1:192.168.144.129  应用端口:8080应用服务器2:192.168.144.130  应用端口:8080keepalived+nginx服务器 主:192.168.144.131keepalived+nginx服务器 备:192.168.144.132
复制代码
1.应用可用性验证(测试应用自行准备,也可直接用Tomcat替代之)
应用服务器1:192.168.144.129 应用端口:8080

应用服务器2:192.168.144.130 应用端口:8080

2.nginx设置文件修改(修改之前备份,精良习惯):/usr/local/nginx/conf/nginx.conf
为了看得清晰些,生存了主要设置及说明
主:192.168.144.131
  1. #工作历程:值越大,处置处罚的并发越多,处置处罚并发数的设置 CPU焦点数,(双核4线程,可以设置为4)worker_processes  2;events {    #单个工作历程可以允许同时创建外部毗连的数量,connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操纵系统级别的“历程最大可打开文件数”,可通过 ulimit -n 下令查询。    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    #需要负载的服务器所在及端口设置    upstream demo {       #两台应用服务器ip及所在       server 192.168.144.130:8080;       server 192.168.144.129:8080;    }    server {        #nginx监听的端口,通过nginx访问用8088端口        listen       8088;        #主机名        server_name  192.168.144.131;        #访问所在包罗/nginx/走如下负载,默认的是:/        location ~ /nginx/ {            root   html;            #注意:demo需要和upstream 后的值一致            proxy_pass http://demo;            index  index.html index.htm;        }        #location ~ /getSystemHostIp {        #    root   html;        #    proxy_pass http://192.168.144.129:8080;        #    index  index.html index.htm;        #}        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }}
复制代码
备:192.168.144.132
  1. #工作历程:值越大,处置处罚的并发越多,处置处罚并发数的设置 CPU焦点数,(双核4线程,可以设置为4)worker_processes  2;events {    #单个工作历程可以允许同时创建外部毗连的数量,connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操纵系统级别的“历程最大可打开文件数”,可通过 ulimit -n 下令查询。    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    #需要负载的服务器所在及端口设置    upstream demo {       #两台应用服务器ip及所在       server 192.168.144.130:8080;       server 192.168.144.129:8080;    }    server {        #nginx监听的端口,通过nginx访问用8088端口        listen       8088;        #主机名        server_name  192.168.144.132;        #访问所在包罗/nginx/走如下负载,默认的是:/        location ~ /nginx/ {            root   html;            #注意:demo需要和upstream 后的值一致            proxy_pass http://demo;            index  index.html index.htm;        }        #location ~ /getSystemHostIp {        #    root   html;        #    proxy_pass http://192.168.144.129:8080;        #    index  index.html index.htm;        #}        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }}
复制代码
改完设置均需重启nginx或重新加载nginx,下令见开头链接
分别通过主、备nginx访问应用验证负载,效果如下
主:192.168.144.131:8088


备:192.168.144.132:8088


3.keepalived康健查抄nginx脚本服务脚本作用是nginx意外停止后keepalived使其自动启动
主、备相同(本人脚本路径):/usr/local/src/nginx_check_new.sh
nginx_check_new.sh内容:如果文件格式为“doc”需要改为“unix”,下令:dos2unix nginx_check_new.sh
  1. nxPidNum=`ps -C nginx --no-header |wc -l`keepalivedPidNum=`ps -C keepalived --no-header |wc -l`if [ $nxPidNum -eq 0 ];then    /usr/local/nginx/sbin/nginx    sleep 3    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then       killall keepalived    elif [ $keepalivedPidNum -eq 0 ];then       service keepalived start    fielif [ $keepalivedPidNum -eq 0 ];then    service keepalived startfi
复制代码
需要给脚本赋可执行权限:chmod +x nginx_check_new.sh
keepalived设置文件内容(修改之前备份,精良习惯):/etc/keepalived/keepalived.conf
为了看得清晰些,生存了主要设置及说明,康健查抄接纳TCP_CHECK,使用vrrp_script及track_script方式并未生效,这里不做叙述
主:192.168.144.131
  1. ! Configuration File for keepalivedglobal_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.144.131   smtp_connect_timeout 30   router_id LVS_DEVEL131      #全网唯一标识,不可重复}vrrp_instance VI_1 {    state MASTER               #主:MASTER,备BACKUP    interface ens33            #本机网卡    virtual_router_id 51       #路由标识:主备值一样    priority 100               #查验次数,值 主>从    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.144.111        #虚拟ip    }}virtual_server 192.168.144.111 8099 {   #虚拟ip    delay_loop 6    lb_algo rr    lb_kind NAT    persistence_timeout 5    protocol TCP    real_server 192.168.144.131 8099 {  #本机IP        weight 1        notify_down /usr/local/src/nginx_check_new.sh #当8099端口关闭执行脚本        TCP_CHECK {            connect_timeout 3    #毗连超时时间3秒            nb_get_retry 3  #重连次数3次            delay_before_retry 3  #重连隔断3秒            connect_port 8088  #监听8088端口        }    }}
复制代码
备:192.168.144.132
  1. ! Configuration File for keepalivedglobal_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.144.132   smtp_connect_timeout 30        router_id LVS_DEVEL132  #全网唯一标识,不可重复}vrrp_instance VI_1 {    state BACKUP           #主:MASTER,备BACKUP    interface ens33        #本机网卡    virtual_router_id 51   #路由标识:主备值一样    priority 99            #查验次数,值 主>从    advert_int 1                authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.144.111    #虚拟ip    }}virtual_server 192.168.144.111 8099 {    #虚拟ip    delay_loop 6    lb_algo rr    lb_kind NAT    persistence_timeout 5    protocol TCP    real_server 192.168.144.132 8099 {  #本机IP        weight 1        notify_down /usr/local/src/nginx_check_new.sh #当8099端口关闭执行脚本        TCP_CHECK {            connect_timeout 3    #毗连超时时间3秒            nb_get_retry 3  #重连次数3次            delay_before_retry 3  #重连隔断3秒            connect_port 8088  #监听8088端口        }    }}
复制代码
修改设置后重新启动keepalived即可,下令见文章头部链接
通过keepalived设置的虚拟ip验证应用连通性


连通性没问题,继续验证高可用性
1.首先检察主、备的呆板的检察ip所在信息:由下图可看出现在通过192.168.144.111访问进去的真实主机是192.168.144.131
主:ip所在信息

备:ip所在信息

2.将主:192.168.144.131的keepalived及nginx停掉(下令见文章首链接),再次检察主、备的ip所在信息:
主:ip所在信息

备:ip所在信息

由上图可看出现在通过192.168.144.111访问进去的真实主机是192.168.144.132,自动跳转乐成,通过192.168.144.111访问应用也没问题


现重新启动主:192.168.144.131 的keepalived及nginx,在次验证看看192.168.144.111访问应用路由的真实所在是192.168.144.131照旧192.168.144.132?
固然是192.168.144.131,因为前面keepalived设置的主机权重大于备机:下图位置

到此,所有摆设及验证过程竣事,乐成实现了keepalived+nginx的高可用。

来源:https://blog.csdn.net/liyu1059915776/article/details/111994456
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )