blog icon indicating copy to clipboard operation
blog copied to clipboard

KeepAlive高可用配置

Open dalaolala opened this issue 2 years ago • 1 comments

Keepalived

Keepalived是一个基于VRRP协议来实现的服务高可用方案。VRRP协议(虚拟路由冗余协议—— Virtual Router Redundancy Protocol,简称VRRP),是由IETF提出的解决局域网中配置静态网关 出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络 中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以 及即使在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。 大白话来说就是,VRRP协议允许一台机器可以拥有一个或者多个虚拟IP。在高可用的一组机器中,有 一个master,多个slave,对外提供一个虚IP,通过虚IP访问master,slave负责监控master,如果 master宕机,则选举其中一个slave接管master,虚IP绑定到新的master上(俗称IP漂移),从而实 现了高可用

关闭防火墙

setenforce 0
systemctl stop firewalld

安装Nginx(230与231)

sudo yum install ‐y yum‐utils

sudo cat >>/etc/yum.repos.d/nginx.repo<<‐'EOF'
[nginx‐stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx‐mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

#安装nginx
sudo yum install ‐y nginx

#启动nginx
systemctl start nginx

#系统启动nginx自动启动
systemctl enable nginx

KeepAlived Master(230) 安装keepalived yum install ‐y keepalived

check_nginx脚本

Keepalived会定时执行“ps -C nginx --no-heading|wc -l ”命令, 如果返回0,代表Nginx挂了,然后尝试重启,如果重启失败,停止keepalived触发故障转移 如果返回大于0,代表Nginx正常运行,啥都不干~

sudo cat >/etc/keepalived/check_nginx.sh<<‐'EOF'
#!/bin/bash
counter=$(ps ‐C nginx ‐‐no‐heading | wc ‐l)
if [ "${counter}" = "0" ]; then
	systemctl start nginx
	sleep 2
	counter=$(ps ‐C nginx ‐‐no‐heading | wc ‐l)
	if [ "${counter}" = "0" ]; then
		systemctl stop keepalived
	fi
fi
EOF
chmod 755 /etc/keepalived/check_nginx.sh

keepalived.conf master配置文件

sudo cat >/etc/keepalived/keepalived.conf<<‐'EOF'
! Configuration File for keepalived
# 全局配置,路由ID,固定不变
global_defs {
router_id LVS_DEVEL
}
# 定义Nginx状态脚本
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
# 间隔时间,单位为秒,默认1秒
interval 2
# 权重,当脚本成功或失败对当前节点的优先级是增加还是减少
weight ‐5
}
#VRRP实例
vrrp_instance VI_1 {
# 主节点
state MASTER
# 绑定的网卡,使用ifconfig命令查看获取
interface ens33
# 虚拟路由id,保证相同
virtual_router_id 51
# 优先级,抢占模式下优先级高的称为主
priority 101
# 指定发送VRRP通告的间隔。单位是秒。
advert_int 2
# 安全认证用的密码,自定义即可
authentication {
auth_type PASS
auth_pass 1111
}
# 对外暴露的VIP地址
virtual_ipaddress {
192.168.31.240
}
# 指定Nginx执行状态脚本
track_script {
chk_nginx
}
}
EOF

启动KeepAlived

systemctl start keepalived
tail ‐f /var/log/messages

dalaolala avatar May 23 '23 13:05 dalaolala

更多内容参考如下

高可用配置

dalaolala avatar May 23 '23 14:05 dalaolala