Centos 7 安装keepalived
keepalived 安装分为两种方式:源码安装、rpm离线安装;源码安装是使用的最新的版本号keepalived-2.2.8,rpm离线安装使用的是keepalived-1.3.5版本。
1、 源码安装
1)下载keepalived
以2.2.8版本为例,如下为下载地址
https://www.keepalived.org/software/keepalived-2.2.8.tar.gz
2) 安装依赖软件
yum -y install curl automake gcc openssl-devel libnl libnl3-devel
备注:因在公安内网,无需安装net-snmp-devel;如是在正常网络环境使用,可以安装net-snmp-devel,以用来在切换主备后发送邮件提醒。
3)解压软件
tar -xvf keepalived-2.2.8.tar.gz
4) 在keepalived-2.2.8目录执行./autogen.sh
./autogen.sh
5)使用configure命令配置安装目录与核心配置文件所在位置
./configure --prefix=/usr/local/keepalived --sysconf=/etc
- prefix:keepalived安装的位置
- sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错
6) 安装
make && make install
2、 rpm方式离线安装
一般CentOS7系统安装的为openssl 1.0.2k-fips版本,keepalived对应的版本为keepalived-1.3.5-19.el7.x86_64.rpm(因openssl升级比较麻烦,还涉及对openssl-devel等包的升级,建议使用对应系统的版本)
2.1 在互联网环境准备离线安装包
在互联网找到一个和公安网一致的Centos系统(可以启动一个Docker镜像,dockerfile见“含有keepalived的dockerfile”文件),执行如下命令自动导出离线安装包(保存在/soft/rpm/ ):
yum install --downloadonly --downloaddir=/soft/rpm/ keepalived openssl-devel libnl libnl-devel
2.2 Centos 7 离线安装keepalived
1)把安装包copy到内网的/soft/rpm下,进入/soft/rpm目录执行安装命令(自动分析依赖后,自动安装程序)
rpm -Uvh *.rpm --nodeps --force
2.3 启动程序
使用这种命令安装的启动程序为/usr/sbin/keepalived
3、 启动keepalived
3.1 配置 /etc/keepalived/keepalived.conf(见最后)
keepalived启动时,会使用 /etc/keepalived/keepalived.conf配置文件,在程序启动前,需要提前编辑该文件。
3.2 启动keepalived
service keepalived start
3.3 查看keepalived启动状态
service keepalived status
3.4 停止keepalived
service keepalived stop
3.5 配置keepalived开机启动
systemctl enable keepalived 开机启动服务
systemctl disable keepalived 禁止开机启动
systemctl daemon-reload 修改服务配置文件后需要重新加载服务
systemctl is-enabled keepalived 查询是否自启动服务
4、修改keepalived的日志输出到单独文件
在Redhat系统下,默认keepalived的日志会输出到/var/log/messages文件中。如果需要修改,可通过如下方式修改(输出到 /var/log/keepalived.log文件):
1)修改/etc/sysconfig/keepalived 文件(该文件只有成功启动过keepalived程序才会存在)
KEEPALIVED_OPTIONS=“-D -d -S 0”
2)修改/etc/rsyslog.conf,在文件中添加
local0.* /var/log/keepalived.log
3)重新启动keepalived和rsyslog服务:
service rsyslog restart
service keepalived stop
service keepalived start
5、keepalived问题排查
5.1 keepalived刚安装后未启动起来
1) 排查下是不是忘记设置/etc/keepalived/keepalived.conf,并保证该文件的正确性,确认interface关联的网卡是否正确。
2)查看vrrp_script配置的脚本是否设置了可执行权限。
3)并查阅/var/log/messages及 /var/log/keepalived.log中的日志是否有相关报错。
5.2 如果使用到virtual_server功能,怎么判断端口是否映射
执行 ipvsadm -ln 会看到如下结果(将请求到10.9.242.82:8083端口的请求转发到10.9.242.88:8082):
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.9.242.82:8083 rr persistent 50
-> 10.9.242.88:8082 Masq 1 0 0
5.3 如何判断虚拟IP是否设置成功
下面命令的eht0为keepalived部署机器的对应的网卡(需要与keepalived.conf中interface eth0配置的一致),查看是否有对应的IP映射。
ip addr show eth0
6、技术支持
taoruicheng@126.com
- 特殊版本的rpm安装包在如下网站下载:https://rpmfind.net/linux/RPM/index.html
- 查找yum安装包也可在https://pkgs.org/网站搜索。
keepalived.conf(备的priority 可以设置为120)
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 ens3f0 #网卡
virtual_router_id 31 # 主、从机的virtual_router_id必须相同,取值在0-255之间
priority 150 # 主备机取不同的优先级,主机优先级大,该项取值范围是1-255
advert_int 2 # 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)
authentication {
auth_type PASS
auth_pass 12306
}
virtual_ipaddress {
15.193.199.31/24 dev ens3f0 # VRRP 虚拟IP ;可换行输入多个进行绑定
}
track_script { #在实例中引用脚本
nginx_check
}
preempt #抢占模式
debug TPEFOAC
}
nginx_check.sh
#!/bin/bash
if [[ -n $(docker ps -q -f "name=^proxyNginx$") ]];then
exit 0
else
docker start proxyNginx >> /dev/null 2>&1
sleep 1
logger -t nginx-ha-keepalived "check>> Nginx Proxy does not start"
exit 1
fi