Linux 下安装keepalived,并完成配置
- 一、下载keepalived 2.1.5
- 二、安装
- 1、上传文件到linux
- 2、解压文件并安装keepalived
- 3、编写检测nginx是否正常运行的脚本文件
- 4、编写keepalived.conf 配置文件
- 5、启动keepalived
- 6、验证keepalived
- 7、设置开机自运行
- 三、主备漂移验证
- 1、安装及配置备机
- 2、验证vip是否进行漂移
- (一)主机宕机,vip转向备机
- (二)主机恢复,vip被主机夺回,转向主机
- 四、如何配置主机恢复后不抢回vip?
一、下载keepalived 2.1.5
官网:https://www.keepalived.org/download.html
二、安装
1、上传文件到linux
用FileZilla Client将keepalived-2.1.5.tar.gz上传到linux上,目录/usr/local/java/keepalived/(这个目录可以自己选择)
2、解压文件并安装keepalived
cd 到 /usr/local/java/keepalived/ 目录下,输入 tar -zxvf keepalived-2.1.5.tar.gz 指令进行解压
tar -zxvf keepalived-2.1.5.tar.gz
进入keepalived-2.1.5,并完成配置安装
cd keepalived-2.1.5
./configure --prefix=/usr/local/keepalived
等待配置进行安装完后,运行真正的安装
make && make install
复制文件到/etc/keepalived/
(keepalived默认是读取/etc/keepalived/下的keepalived.conf)
mkdir /etc/keepalived/
# 复制keepalived.conf
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#复制系统相关文件
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# 复制启动类文件,这个是在keepalived解压出来的源码包里面,位置不一样
#(1.4以后都是在解压里面,1.4以前是在/usr/local/keepalived下面rc.d文件夹里面)
cp /usr/local/java/keepalived/keepalived-2.1.5/keepalived/etc/init.d/keepalived /etc/init.d/
3、编写检测nginx是否正常运行的脚本文件
cd /etc/keepalived/
vi nginx_check.sh
编写nginx_check.sh脚本,输入以下脚本代码
#! /bin/bash
A=`ps -C nginx --no-header |wc -l`
#echo $A
if [ $A -eq 0 ];then
echo 'nginx not running, stop keepalived!'
systemctl stop keepalived
fi
wq!保存并退出
这里一定要注意的是头部一定要有#! /bin/bash,不然keepalived运行脚本的时候会执行不下去,提示:
Error exec-ing command ‘/etc/keepalived/nginx_check2.sh’, error 8: Exec format error
可以运行 tail -f /var/log/messages 指令查看错误提示是什么
将文件设置为可执行文件
chmod 777 nginx_check.sh
#chmod +x nginx_check.sh 也可以
4、编写keepalived.conf 配置文件
查看本机的ip信息
(有的可以输入ifconfig)
#用ifconfig也可以
ip a
注意本机网卡的名字:ens33,后面配置的时候会用到
在keepalived.conf里面输入以下脚本代码,路径:/etc/keepalived/下
! Configuration File for keepalived
global_defs {
#路由id,主备节点不能相同
router_id node1
}
#自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/nginx_check.sh"
# 脚本执行的时间间隔
interval 1
weight 0
}
vrrp_instance VI_1 {
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state MASTER
# 指定监测的网卡,可以使用 ifconfig 或 ip a 进行查看
interface ens33
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 51
# 优先级,主节点的优先级需要设置比备份节点高
priority 100
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址,可以设置多个
virtual_ipaddress {
192.168.0.242
#192.168.200.17
#192.168.200.18
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
}
这里要注意的是监控脚本的名字是否一致,既vrrp_script 和track_script里面的的方法是否一致(这里是chk_haproxy),还有脚本位置script 的路径是否正确
5、启动keepalived
这里要先保证nginx是已经启动的,不然keepalived启动了以后会执行脚本发现nginx没启动会运行脚本停止掉keepalived
#启动
service keepalived start
#停止
#service keepalived stop
#查看状态
#service keepalived status
查看状态
service keepalived status
active (running) 说明正在运行
查看keepalived启动的情况
ps -ef | grep keepalived
6、验证keepalived
启动后查看ip
#用ifconfig也可以
ip a
看这里已经添加了 192.168.0.242的VIP
在网页里面输入http://192.168.0.242/
访问到的了243的nginx,说明已经成功安装
7、设置开机自运行
不用设置,上面复制到init.d的时候,已经是设置为开机自运行了
三、主备漂移验证
1、安装及配置备机
备机的安装和主机一样,这里不做累述,配置的时候只要做一些改动就可以了。备机的keepalived.conf内容如下:
! Configuration File for keepalived
global_defs {
#路由id,主备节点不能相同
router_id node2
}
#自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/nginx_check.sh"
# 脚本执行的时间间隔
interval 1
weight 0
}
vrrp_instance VI_1 {
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state BACKUP
# 指定监测的网卡,可以使用 ifconfig 或 ip a 进行查看
interface ens33
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 51
# 优先级,主节点的优先级需要设置比备份节点高
priority 90
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址,可以设置多个
virtual_ipaddress {
192.168.0.242
#192.168.200.17
#192.168.200.18
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
}
2、验证vip是否进行漂移
现在配置的ip情况为:
192.168.0.243(主)
192.168.0.245(备)
192.168.0.242(vip/漂移ip)
(具体ip可根据自己来进行配置)
注:如果修改了配置,发现漂移不生效的,重启一下linux系统再试一次
(一)主机宕机,vip转向备机
1、先查看主机的ip情况
ip a
此时看到vip(192.168.0.242)还在主机那里
1、关掉主机(192.168.0.243)的keepalived,并查看主机ip情况
service keepalived stop
ip a
此时看到vip(192.168.0.242)已经不在主机那里2、查看备机(192.168.0.245)的ip情况
ip a
此时看到vip已经转移到了245那台备机上了,网页上访问vip(192.168.0.242),
可以看到访问已经从原来的243转移到245上面了
(二)主机恢复,vip被主机夺回,转向主机
1、恢复主机的keepalived,并查看ip
service keepalived start
ip a
可以看到vip被主机夺回来了
然后查看备机的ip,发现没有vip,网页上访问vip(192.168.0.242),这时候又跳转回了243上面去了。这里就不截图了。
四、如何配置主机恢复后不抢回vip?
只需要将两台机器都设置为备机就行了,并且在优先级高的keepalived上添加nopreempt
keepalived.conf配置如下:
! Configuration File for keepalived
global_defs {
#路由id,主备节点不能相同
router_id node1
}
#自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/nginx_check.sh"
# 脚本执行的时间间隔
interval 1
weight 0
}
vrrp_instance VI_1 {
#优先级较高的keepalived,添加此配置解决异常恢复后再次抢占的问题
nopreempt
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state BACKUP
# 指定监测的网卡,可以使用 ifconfig 进行查看
interface ens33
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 51
# 优先级,主节点的优先级需要设置比备份节点高
priority 100
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址,可以设置多个
virtual_ipaddress {
192.168.0.242
#192.168.200.17
#192.168.200.18
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
}