
背景:服务器版本Centos7.9
(1)下载安装Keepalived源码包
Keepalived官网源码包下载地址
https://www.keepalived.org/download.html
在服务器上解压
| tar -xf keepalived-2.2.8.tar.gz |
安装相关前置依赖
| yum -y install gcc gcc-c++ |
使用configure工具进行安装
| ./configure --sysconfdir=/etc --prefix=/usr/local/keepalived --sbindir=/usr/sbin --bindir=/usr/bin |
|
|
| --sysconfdir=DIR #指定配置文件位置 |
| --prefix=DIR #指定安装路径 |
| --sbindir=DIR 指定命令位置,后面不需再配置环境变量 |
使用make make install进行安装
(2)配置Keepalived在业务中的参数
本次操作为Keepalived单VIP抢占式配置,即两个虚拟机只有一台绑定VIP对外提供服务,且在一台主机失能时VIP将漂移到备机上接收流量,当主机恢复时VIP将再次切换
主机配置
| global_defs { |
| router_id logincas1 ### router_id为全局定义当前节点的id,一般为唯一 |
| enable_script_security |
| script_user root ##定义执行脚本的角色 |
| vrrp_version 2 |
| } |
| ## 定义脚本 |
| vrrp_script chk_nginx { |
| script "/usr/local/nginx-check.sh" ##脚本路径 |
| interval 2 ##检测间隔 |
| timeout 4 ##失败间隔,失败两次通信则失败 |
| rise 4 ##成功四次则成功 |
| fall 2 ##失败两次则切换 |
| weight -50 ##脚本检测失败则扣减权重 |
| } |
| vrrp_instance VI_1 { ##模块配置 |
| version 2 |
| state MASTER ##抢占式的情况下主机需设置为MASTER,备机为BACKUP |
| interface eth0 ##指定VIP流量的网卡 |
| virtual_router_id 51 ##虚拟路由ID |
| priority 100 ##优先级,备机应比主机低一些 |
| advert_int 1 ##VRRP心跳包发送间隔 |
| authentication { ##权限认证 |
| auth_type PASS ##类型:密码 |
| auth_pass 2222 |
| } |
| virtual_ipaddress { |
| 172.29.184.220/24 ##VIP配置 |
| } |
| track_script { ##脚本定义 |
| chk_nginx |
| } |
|
|
| } |
接下来需要补充完善 nginx-check.sh
| 思路是通过去检测是否有Nginx进程,检测到没有nginx进程时先执行Nginx的重启操作,一秒之后再次检测,如果Nginx进程还是不存在则关闭Keepalived,使VIP漂移到另一个节点 |
|
|
| #!/bin/bash |
| if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then |
| systemctl restart nginx |
| sleep 1 |
| if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then |
| systemctl stop keepalived |
| fi |
| fi |
遇到的一些问题
| 当在脚本里使用ps aux | grep nginx | grep -v grep | wc -l去检测Nginx进程时发现脚本一直未生效,合理怀疑是Keepalived运行用户在执行这条命令时存在权限问题(脚本不能配置权限为777,Keepalived会警告并失效) |
| 本次使用的高可用架构为单VIP架构,后续也可以尝试双VIP架构,即互为主备机,配置两个VIP模块,可以选择使用一个VIP接收流量,也可以使用两个VIP来监听流量,看业务的需求。 |
| 在单VIP高可用架构中,如果想要主机恢复后VIP不漂移到主机上,可以将主机的state也设置为BACKUP,但优先级需要比备机高一些,以确保初始状态VIP是绑定在主机上的 |
链接:hhttps://www.cnblogs.com/iamxiaofu/p/17848680.html
(版权归原作者所有,侵删)
