linux 环境下安装keepalived 并且进行简单的主备配置
我这里使用的是suse系统安装keepalived
1.keepalived 安装包
链接:https://pan.baidu.com/s/15Hwqdmv_AKlNYjy-omh4tg
提取码:714h
2.解压、安装keepalived
tar -xvf keepalived-2.2.0.tar.gz cd keepalived-2.2.0/ ./configure make & make install mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ whereis keepalived cp /root/project-kits/keepalived-2.2.0/keepalived/etc/init.d/keepalived /etc/init.d/ cp /root/project-kits/keepalived-2.2.0/keepalived/etc/sysconfig/keepalived /etc/sys cp /root/project-kits/keepalived-2.2.0/keepalived/etc/sysconfig/keepalived /etc/sysconfig cp /usr/local/sbin/keepalived /usr/sbin/ chkconfig --add keepalived chkconfig keepalived on cd /etc/keepalived/ cp ./keepalived.conf ./keepalived-blk.conf service keepalived start
修改master机器上 keepalived的配置文件 keepalived.conf
! Configuration File for keepalived global_defs { #故障时,主备切换通知到的email #notification_email { #acassen@firewall.loc #failover@firewall.loc #sysadmin@firewall.loc #} #email配置 #notification_email_from Alexandre.Cassen@firewall.loc #smtp_server 192.168.200.1 #smtp_connect_timeout 30 #路由ID,当前安装keepalived的节点主机标识符,需保证全局唯一 router_id keep_101 #vrrp_skip_check_adv_addr #vrrp_strict #vrrp_garp_interval 0 #vrrp_gna_interval 0 } #基于vrrp协议的实例,可理解为一个服务器节点 vrrp_instance VI_1 { #表示状态为主节点MASTER还是备用机BACKUP state MASTER #当前示例绑定的网卡,根据ip addr查出来的网卡 interface eth0 #虚拟路由id,保证主备节点该值一致 virtual_router_id 51 #优先级/权重,master权重一般高于backup,在master挂掉后谁的优先级高,谁就能成为master priority 100 #主备之间同步检查的时间间隔(心跳),默认为1s advert_int 1 #认证授权的密码,防止非法节点进入,主备需要一致 authentication { auth_type PASS auth_pass 1111 } #虚拟IP,可以有多个,根据自己实际情况修改 virtual_ipaddress { 192.168.51.200 } }
修改backup机器上 keepalived的配置文件 keepalived.conf
! Configuration File for keepalived global_defs { #故障时,主备切换通知到的email #notification_email { #acassen@firewall.loc #failover@firewall.loc #sysadmin@firewall.loc #} #email配置 #notification_email_from Alexandre.Cassen@firewall.loc #smtp_server 192.168.200.1 #smtp_connect_timeout 30 #路由ID,当前安装keepalived的节点主机标识符,需保证全局唯一 router_id keep_103 #vrrp_skip_check_adv_addr #vrrp_strict #vrrp_garp_interval 0 #vrrp_gna_interval 0 } #基于vrrp协议的实例,可理解为一个服务器节点 vrrp_instance VI_1 { #表示状态为主节点MASTER还是备用机BACKUP state BACKUP #当前示例绑定的网卡,根据ip addr查出来的网卡 interface eth0 #虚拟路由id,保证主备节点该值一致 virtual_router_id 51 #优先级/权重,master权重一般高于backup,在master挂掉后谁的优先级高,谁就能成为master priority 90 #主备之间同步检查的时间间隔(心跳),默认为1s advert_int 1 #认证授权的密码,防止非法节点进入,主备需要一致 authentication { auth_type PASS auth_pass 1111 } #虚拟IP,可以有多个,根据自己实际情况修改 virtual_ipaddress { 192.168.51.200 } }
3. ip addr 检查虚IP配置情况
4.测试 当master机器关闭 keepalived(service keepalived stop)后 备机器拿到虚Ip 192.168.51.200
结束 最后用rabbitMQ测试了下效果
直接使用虚Ip链接MQ
当master存在时 使用的是master服务器的MQ
当master关闭时 使用的是backup机器的MQ
当master恢复时 使用的是master的MQ!
补充:配置检测nginx脚本
keepalive配置:
! Configuration File for keepalived global_defs { #标识信息 router_id LVS_keep_1 } vrrp_script check_nginx{ #检查nginx是否在线脚本 script "/usr/zmoon/server/check_nginx.sh" interval 10 } vrrp_instance VI_1 { state MASTER interface eth0 #MASTER 和 BACKUP 必须相同 virtual_router_id 51 #优先级MASTER大于BACKUP即可 priority 200 #心跳间隔时间 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { #虚拟ip(对外提供) 192.168.51.130 } track_script{ check_nginx } }
nginx脚本: check_nginx.sh
#!/bin/sh nginxId=$(ps -C nginx --no-header|wc -l) #1.判断nginx是否存活,如果不存活尝试启动nginx if [ $nginxId -eq 0 ];then #启动nginx /home/zmoon/nginx-1.5.12/sbin/nginx sleep 3 #2.等待3秒再次判断nginx状态 nginxId=$(ps -C nginx --no-header|wc -l) if [ $nginxId -eq 0 ];then #关闭keepalived service keepalived stop fi fi
默认日志存放在系统日志:/var/log/messages下
⎛⎝官萧何⎠⎞一只快乐的爪哇程序猿;邮箱:1570608034@qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
2021-01-06 windows服务器环境下使用jenkins自动化部署vue前端项目