Keepalived-2.2.8本地编译部署

注意:

如果是本地编译部署的,注意看防火墙是否开启,如果开启请将keepalived的端口加入防火墙里:iptables -A INPUT -p vrrp -j ACCEPT,不然master与slave之间通信不成功,就会造成虚拟IP在多台机器上都存在的问题。

1、从官网下载安装包

https://www.keepalived.org/download.html

2、解压

tar -zxvf keepalived-2.2.8.tar.gz

3、执行./autogen.sh

cd keepalived-2.2.8

./autogen.sh

如果报错:

执行:yum install aclocal autoheader automake autoreconf

4、编译

./configure --prefix=/usr/local/keepalived --sysconf=/etc

make&&make install

##prefix:keepalived安装的位置

##sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错

如果./configure报错:

执行:yum -y install libnl libnl-devel

5、启动keepalived

# 启动keepalived

service keepalived start

#查看keepalived启动状态

service keepalived status

#停止keepalived

service keepalived stop

初次启动报错:

因为没有设置配置文件,跟着后面步骤8把配置文件设置了以后,再重新启动。

6、配置开机自启

systemctl enable keepalived #开机启动服务
systemctl disable keepalived #禁止开机启动
systemctl daemon-reload #修改服务配置文件后需要重新加载服务
systemctl is-enabled keepalived #查询是否自启动服务

7、设置nginx检测脚本

vi /usr/local/keepalived/sbin/nginx_check.sh

#!/bin/bash

A=$(ps -C nginx --no-header | wc -l)

if [ $A -eq 0 ]; then
    /usr/local/nginx/sbin/nginx
    sleep 5
    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
        echo "nginx restart fail at $(date)" >> /usr/local/keepalived/sbin/log.txt
    fi
fi

chmod +x /usr/local/keepalived/sbin/nginx_check.sh

作用是在再次启动失败时,将一条包含当前时间的日志信息附加到指定的日志文件/usr/local/keepalived/sbin/log.txt。

8、配置文件

vi /etc/keepalived/keepalived.conf

MASTER:

global_defs {
   router_id LVS_8 #运行keepalived的机器的一个标识
}
#添加检测脚本
vrrp_script nginx_check {
        script "/usr/local/keepalived/sbin/nginx_check.sh" #如果返回状态码为0,就认为服务正常,如果返回状态码为1,则认为服务故障
        interval 2   # 检测脚本执行的间隔
        #weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加。(成功weight值增加后,当失败时会恢复到原值)
        #weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)(失败weight值减少后,当成功时会恢复到原值)
        weight  -100
        fall 1  #如果请求连续失败一次,认为失败
        rise 1 #表示如果请求一次成功,就认为此节点资源恢复正常。
}
vrrp_instance VI_1 {
    state MASTER   #主机这里是MASTER 从机是BACKUP
    interface eth0  #网卡
    virtual_router_id 99  # 主、从机的virtual_router_id必须相同,取值在0-255之间
    priority 151   # 主备机取不同的优先级,主机优先级大,该项取值范围是1-255
    advert_int 2  # 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.100/24 dev eth0  # VRRP 虚拟IP ;可换行输入多个进行绑定
    }
    track_script { #在实例中引用脚本
        nginx_check
    }
    preempt #抢占模式
}

slave(两个从机的配置一样):

global_defs {
   router_id LVS_8 #运行keepalived的机器的一个标识
}
#添加检测脚本
vrrp_script nginx_check {
        script "/usr/local/keepalived/sbin/nginx_check.sh" #如果返回状态码为0,就认为服务正常,如果返回状态码为1,则认为服务故障
        interval 2   # 检测脚本执行的间隔
        #weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加。(成功weight值增加后,当失败时会恢复到原值)
        #weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)(失败weight值减少后,当成功时会恢复到原值)
        weight  -100
        fall 1  #如果请求连续失败一次,认为失败
        rise 1 #表示如果请求一次成功,就认为此节点资源恢复正常。
}
vrrp_instance VI_1 {
    state BACKUP   #主机这里是MASTER 从机是BACKUP
    interface eth0  #网卡
    virtual_router_id 99  # 主、从机的virtual_router_id必须相同,取值在0-255之间
    priority 150   # 主备机取不同的优先级,主机优先级大,该项取值范围是1-255
    advert_int 2  # 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.100/24 dev eth0  # VRRP 虚拟IP ;可换行输入多个进行绑定
    }
    track_script { #在实例中引用脚本
        nginx_check
    }
    preempt #抢占模式
}

9、启动成功验证

主服务的配置的网口有虚拟IP,从服务器没有,如图,此时有虚拟IP:192.168.1.100:

然后关闭nginx,看nginx是否成功启动。

关闭master的keepalived,虚拟IP则会到下一个晋升成master服务器上去,当原master重新启动成功后,VIP则会重回原master。

10、日志查看

journalctl -xe | grep Keepalived

service keepalived status

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值