安装Keepalived
1.下载Keepalived的安装包https://www.keepalived.org/download.html 2.上传到/home/software下
3.进入到/home/software目录下
4.解压
tar -zxvf keepalived-2.0.18.tar.gz
5.解压之后进入到解压的目录,使用configure命令配置安装目录与核心配置文件所在位置
./configure --prefix=/usr/local/keepalived --sysconf=/etc
prefix keepalived的安装位置
sysconf keepalived核心配置文件所在的位置,固定位置,改成其他位置keepalived启动不了,/var/log/message中会报错
5.1 配置过程中可能会出现警告信息
*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
5.2安装libnl/libnl-3依赖
yum -y install libnl libnl-devel
5.3重新configure一下,ok。
6.安装keepalived
make && make install
7.进入到/etc/keepalived
,该目录下为keepalived核心配置文件 keeplived.conf
。
8.keeplived.conf
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id keep_171
}
vrrp_instance VI_1 {
# 表示状态是MASTER主机还是备用机BACKUP
state MASTER
# 该实例绑定的网卡
interface ens33
# 保证主备节点一致即可
virtual_router_id 51
# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 100
# 主备之间同步检查时间间隔,单位秒
advert_int 2
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.1.161
}
}
9.主备机配置好keeplived之后测试如下:
第一种情况(keeplived宕机):主节点keeplived 宕机之后,vip去飘移到备机上面,Nginx可以正常提供服务;keeplived恢复之后,vip会重新飘移到主机上面,重新恢复服务。
第二种情况(Nginx宕机):主节点Nginx宕机之后由于keeplived没有宕机所以vip依然在主节点,这样Nginx就不能正常的提供服务了,需要做如下操作:
a.编写脚本 并且chmod
赋值权限.
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
b.配置keeplived监听nginx的脚本.
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive_or_not.sh"
interval 2 # 每隔两秒运行上一行脚本
weight 10 # 如果脚本运行成功,则升级权重+10
# weight -10 # 如果脚本运行失败,则升级权重-10
}
c.在vrrp_instance
中新增监控的脚本.
global_defs {
router_id keep_171
}vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.161
}
}vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.162
}
}:track_script {
check_nginx_alive # 追踪 nginx 脚本
}
d.重启keeplived
.
10 双机热备实现方案:两个vip互相飘移,互为主备.
主节点配置
global_defs {
router_id keep_171
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.162
}
}
从节点配置
global_defs {
router_id keep_172
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.162
}
}
LVS的配置详情
Lvs和Leepaliveds是无缝衔接的,在keepalived.conf 的配置文件详解如下:
# 配置集群地址访问的IP和端口好,端口和nginx保持一致,都是80
virual_server 192.168.1.50 80{
#健康检查的时间,单位:s
delay_loop 6
#配置负载均衡的算法,默认是轮询
lb_algo rr
#设置LVS的模式 NAT|TUN|DR
lb_kind DR
# 设置回话持久化事件
persistence_timeout 5
#协议
protool TCP
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.1.171 80{
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_befor_retry 3
}
}
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.1.172 80{
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_befor_retry 3
}
}
}