ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

3.Nginx的高可用集群

2022-05-26 20:00:48  阅读:262  来源: 互联网

标签:nginx 可用 keepalived Nginx Master 集群 服务器 节点 路由器


高可用示意图如下:
NGINX主从备份
    NGINX实现主从备份目前主流方案是Keepalived+Nginx实现双机热备。

Keepalived介绍:
    Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。
    但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用

VRRP协议:
    虚拟路由冗余协议
    可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,
    但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),
    占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。
    master会发组播消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,
    这时就需要根据VRRP的优先级来选举一个backup当master,保证路由器的高可用
    
具体实现原理:
    1)Master没挂,则Master占有vip且nginx运行在Master上
    2)Master挂了,则backup抢占vip且在backup上运行nginx服务
    3)如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上
    4)检测后端服务器的健康状态
    Master和Backup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上

开始部署实现:
1.准备工作
    1.1有两台服务器:wmd01 wmd02
    1.2各自安装nginx和keepalived 
        1.keepalived 通过yum安装:
            yum install keepalived –y
            安装后,keepalive的配置文件路径:/etc/keepalived/keepalivec.conf 
2.nginx的配置文件:
    两个服务器的nginx配置文件都相同,没有什么变动,做主备节点
3.keepalive的配置:/etc/keepalived/keepalivec.conf
    主节点(Master节点配置)
    (1)修改/etc/keepalived/keepalivec.conf 配置文件
        global_defs {
        	 notification_email {
        		 acassen@firewall.loc
        		 failover@firewall.loc
        		 sysadmin@firewall.loc
        	 }
        	 notification_email_from Alexandre.Cassen@firewall.loc
             #当前主机ip
        	 smtp_server 192.168.17.129
        	 smtp_connect_timeout 30
        	 # 重点1:通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL,host文件路径:/etc/hosts
        	 router_id LVS_DEVEL  
        }
        
        #重点2:检测脚本,目的是定时执行,检测nginx的状态,如果挂了尝试重启,如果启动失败,则停止该节点的nginx和keepaive
        vrrp_script chk_http_port {
        	 script "/usr/local/src/nginx_check.sh"	 # 执行脚本所在的位置,自定义脚本后面会提及
        	 interval 2 	#检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
        	 weight 2       #脚本执行满足,权重加2,这里其实没搞明白..
        }

        #重点3:主备节点的区别配置	
        vrrp_instance VI_1 {
        	 state MASTER	 # 备份服务器上将 MASTER 改为 BACKUP
        	 interface ens33	 # 绑定的网卡,通过ipconfig查看
        	 virtual_router_id 51	 # 主、备机的 virtual_router_id 必须相同
        	 priority 100 	# 主、备机取不同的优先级,主机值较大,备份机值较小(比如主机100,备机90)
        	 advert_int 1 	#每隔一秒发送一次心跳,确保从服务器(keepalive)是否还活着
        	 authentication {		# 心跳检测需要的密码
        		 auth_type PASS
        		 auth_pass 1111
         	}
        	 virtual_ipaddress {
            	 192.168.17.50 	# VRRP H 虚拟地址(重点:虚拟ip配置,客户端通过该ip进行访问,主节点和备用节点谁占有这个ip,谁提供反向代理服务)
        	 }
        }
    (2)在/usr/local/src 添加检测脚本nginx_check.sh,检查Nginx是否还活着
            #!/bin/bash
            #查看ningx的进程号,并统计数量
            A=`ps -C nginx –no-header |wc -l`
            #等于0时,即nginx挂了,尝试重启
            if [ $A -eq 0 ];then
             /usr/local/nginx/sbin/nginx 	#Nginx启动命令的位置
             sleep 2
             #启动失败,杀掉keepalive
             if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
             killall keepalived
             fi
            fi
    (3)把两台服务器上 nginx 和 keepalived 启动
            启动 nginx:	./nginx
            启动 keepalived:	systemctl start keepalived.service
可以使用ipconfig,查看虚拟Ip的绑定 5、最终测试 (1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50(虚拟ip:这就是keepalive的强大处,统一了nginx集群的统一入口) (2)把主服务器上的(192.168.17.129)Nginx 和 keepalived 停止,再输入 192.168.17.50,依旧可以访问Nginx。

标签:nginx,可用,keepalived,Nginx,Master,集群,服务器,节点,路由器
来源: https://www.cnblogs.com/wmd-l/p/16314744.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有