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下

posted @   官萧何  阅读(1003)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
历史上的今天:
2021-01-06 windows服务器环境下使用jenkins自动化部署vue前端项目
点击右上角即可分享
微信分享提示