linux系统lnmp架构keepalived高可用
发布时间:2023-02-17 13:59:21 所属栏目:LNMP 来源:互联网
导读:keepalived 注意:任何软件都可以使用keepalived来做高可用 keepalived如何实现高可用 VRRP:虚拟路由冗余协议 比如公司的网络是通过网关进行上网的,那么如果该路由器故障了,网关无法转发报文了,此时所有人都无法上网了,怎么办? 通常做法是给路由器增加
*****下面是调用变量**************************** #track_script { * # check_ssh * * # } * ********************************************** } [root@lb02 conf.d]# vim /etc/keepalived/keepalived.conf global_defs { router_id lb02 } #vrrp_script check_ssh { # script "/root/Nginx_keep.sh" # interval 5 #} vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 50 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3 } #vrrp_script { # check_ssh # } } # 判断Nginx是否存活脚本内容(如果是抢占式只需要写在主节点上面,如果是非抢占式主备节点都需要配置) [root@lb01 ~]# cat Nginx_keep.sh #!/bin/sh Nginx_status=$(ps -C Nginx --no-header|wc -l) #1.判断Nginx是否存活,如果不存活则尝试启动Nginx if [ $Nginx_status -eq 0 ];then systemctl start Nginx sleep 3 #2.等待3秒后再次获取一次Nginx状态 Nginx_status=$(ps -C Nginx --no-header|wc -l) #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本 if [ $Nginx_status -eq 0 ];then systemctl stop keepalived fi fi ***# 让Nginx不重启执行下面脚本*** #!/bin/sh Nginx_status=$(ps -C Nginx --no-header|wc -l) if [ $Nginx_status -eq 0 ];then systemctl stop keepalived fi **就是检测到Nginx没有存活直接停掉keepalived,转移到备节点上** # 脚本编辑完成后要加执行权限 [root@lb01 ~]# chmod +x Nginx_keep.sh # 部署完成后启动keepalived两台都要启动,然后看一下10.0.0.3的IP绑定在哪台机器上面 [root@lb01 ~]# systemctl start keepalived [root@lb02 ~]# systemctl start keepalived [root@lb01 ~]# ip a|grep 10.0.0.3 [root@lb02 conf.d]# ip a|grep 10.0.0.3 inet 10.0.0.3/32 scope global eth0 # 关闭lb02再看一下是不是发生变化 [root@lb02 conf.d]# systemctl stop keepalived [root@lb02 conf.d]# ip a|grep 10.0.0.3 [root@lb01 ~]# ip a|grep 10.0.0.3 inet 10.0.0.3/32 scope global eth0 # 这时候可以看到发生了变化,再编辑一个脚本在别的服务器上面监控一下访问状态 [root@nfs ~]# cat wzfwtest.sh #!/bin/bash while true;do code_status=$(curl -I -m 10 -o /dev/null -s -w %{http_code} blog.test.com) if [ $code_status -eq 200 ];then echo "$(date +%F-%T)_网站访问成功" >> /tmp/web.log else echo "$(date +%F-%T)_网站访问失败,状态码是: $code_status" >> /tmp/web.log fi sleep 1 done # 打开lb01主节点keepalived关联Nginx的配置,然后把域名10.0.0.3做解析 [root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs { #全局配置 router_id lb01 #标识身份->名称 } vrrp_script check_ssh { script "/root/Nginx_keep.sh" interval 5 } vrrp_instance VI_1 { state MASTER #标识角色状态 interface eth0 #网卡绑定接口 virtual_router_id 50 #虚拟路由id priority 150 #优先级 nopreempt advert_int 1 #监测间隔时间 authentication { #认证 auth_type PASS #认证方式 auth_pass 1111 #认证密码 } virtual_ipaddress { 10.0.0.3 #虚拟的VIP地址 } track_script { check_ssh } } [root@nfs ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.3 blog.test.com zh.test.com # 域名绑定在10.0.0.3上面 # 抢占式和非抢占式的配置 1、两个节点的state都必须配置为BACKUP 2、两个节点都必须加上配置 nopreempt 3、其中一个节点的优先级必须要高于另外一个节点的优先级。 两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。 Master配置 vrrp_instance VI_1 { state BACKUP priority 150 nopreempt (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |