ICode9

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

keepalived+nginx 高可用

2021-04-10 23:59:03  阅读:208  来源: 互联网

标签:可用 keepalived 192.168 nginx VIP sh master


一、背景:

nginx可实现应用的负载均衡、反向代理,但当nginx服务或服务器不可用时,后端应用也将无法访问,为解决nginx的单点故障问题,故引入VIP、keepalived,真正实现应用架构的高可用

二、基本原理

引入的VIP即虚拟ip,不是nginx服务器的真实IP,而是一个虚拟的“漂移的”IP,为实现nginx服务的高可用,nginx将存在多台服务器(>=2),每台对应的后端应用服务器集群的配置应保持一致,为保障nginx能7*24的提供负载均衡或反向代理的服务,在多台nginx服务器中选择1台进行服务,那么怎么选择这台呢?这就是VIP的意义,根据keepalived中配置的规则(优先级排序),priority最高的那个将绑定VIP,成为mater,其余主机成为BACKUP,master将一直发送组播信息,而当master挂或者由于priority降低将导致它推出master的角色,backup收不到组播信息后就认为master已挂,这时他们之间会进行抢占、选举,再根据priority选出master。

三、配置实现

1、环境说明:

在这里插入图片描述

2、master 配置

192.168.10.134 安装nginx、keepalived
yum install keepalived
修改keepalived配置文件:
[root@node1 ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id node1 #标识本节点的名称,通常为hostname
}
vrrp_script chk_nginx {
	script "/data/sh/check_nginx.sh" #定义检查脚本
	interval 2 #每2s检查一次
	weight -20 #若脚本执行失败则将priority-20
}

vrrp_instance VI_1 { #定义第一个示例
    state MASTER   #标识角色为master
    interface ens33 #定义接口名称、即本机的网卡名称、通过 ifconfig得到
    virtual_router_id 51 #定义房间号,主备必须保持一致
    priority 100 #定义本机的优先级,master要比backup高
    advert_int 1 #组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16 #设置VIP
    }

	track_script {        #设置nginx的检查脚本,必须在vrrp_script中有定义
		chk_nginx
	}
}

检查脚本的内容:

[root@node1 ~]# cat /data/sh/check_nginx.sh 
#!/bin/sh

killall -0 nginx &>/dev/null
if [[ $? -ne 0 ]];then

	exit 1
fi
  • 授予脚本执行权限 chmod +x /data/sh/check_nginx.sh

3、backup 主机 配置

192.168.10.135 主机:

  • 安装keepalived
    yum install keepalived
  • 修改keepalived的配置文件:
[root@node2 etc]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id node1
}
vrrp_script chk_nginx {
	script "/data/sh/check_nginx.sh"
	interval 2
	weight -20
}

vrrp_instance VI_1 {
    state BACKUP  #标识本机是backup角色
    interface ens33
    virtual_router_id 51 
    priority 90  #优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16
    }

	track_script {
		chk_nginx
	}
}
  • 检查脚本与master一致;
  • 授予脚本执行权限 chmod +x /data/sh/check_nginx.sh

四、测试:

1、主备均启动nginx、keepalived后,查看对应日志

  • master日志如下,显示已绑定VIP:
 [root@node1 init.d]# tail -f /var/log/keepalived.log 
Apr 10 23:11:17 test_kubeadm_web Keepalived_vrrp[22117]: Sending gratuitous ARP on ens33 for 192.168.200.16
Apr 10 23:11:17 test_kubeadm_web Keepalived_vrrp[22117]: Sending gratuitous ARP on ens33 for 192.168.200.16
Apr 10 23:11:17 test_kubeadm_web Keepalived_vrrp[22117]: Sending gratuitous ARP on ens33 for 192.168.200.16
Apr 10 23:11:17 test_kubeadm_web Keepalived_vrrp[22117]: Sending gratuitous ARP on ens33 for 192.168.200.16

查看vip已绑定成功:
在这里插入图片描述

  • backup主机日志如下,显示未绑定VIP:
    在这里插入图片描述

2、在master主机上停掉nginx,备机接管、抢占VIP:

[root@node1 ~]# systemctl stop nginx

192.168.10.134 master 日志,priority 从100降为80,状态变成backup:
在这里插入图片描述
192.168.10.135 备机抢占VIP,切换为master:
在这里插入图片描述

3、在192.168.10.134主机启动恢复nginx,再次抢占VIP:

192.168.10.134 master 日志,priority 从80升到100,状态变成master:
在这里插入图片描述
192.168.10.135 priority是90,故又切回了backup状态:
在这里插入图片描述
再次绑定VIP:
在这里插入图片描述

标签:可用,keepalived,192.168,nginx,VIP,sh,master
来源: https://blog.csdn.net/weixin_42808782/article/details/115586364

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

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

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

ICode9版权所有