1. 安装keepalived
tar zxvf keepalived-1.3.5.tar.gz
cd keepalived-1.3.5
./configure
make
生成bin目录,产生bin文件keepalived
这里不执行make install安装
2. 修改配置文件
默认配置文件在keepalived-1.3.5/keepalived/etc/keepalived/keepalived.conf
可以拷贝到其他目录,运行的时候指定目录即可
! Configuration File for keepalived
global_defs {
router_id monitor
}
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 17
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.226.183
}
}
virtual_server 192.168.226.183 7777 {
delay_loop 1
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
protocol TCP
real_server 192.168.226.173 7777 {
weight 1
notify_down /root/keepalived/keepalived-1.3.5/bin/killka.sh
TCP_CHECK {
connect_timeout 3
connect_port 7777
delay_before_retry 1
nb_get_retry 2
}
}
}
state: 指定初始状态下,哪个VRRP路由器是master,取值有MASTER/BACKUP;
interface: vi_1 实例绑定的网卡;
virtual_router_id: 指定虚拟路由器的VRID值,范围0~255,master和backup的VRID值必须相同;
priority: 该实例的优先级;
advert_int: 检查间隔,默认1s;
authentication: 加密验证报文,master和backup的配置必须相同;
virtual_ipaddress: 指定VIP;
主要配置LVS的DS服务器如何向RS进行分发,以及RS服务器的相关配置。
virtual_server: 指定VIP地址和端口;
delay_loop: 指定service polling的时间间隔;
lb_algo: 即load balance algorith,负载均衡的算法;
lb_kind: 即load balance kind,负载均衡的种类(DR/TUN/NAT);
persistence_timeout: 会话保持时间,单位秒;
real_server: 指定RS服务的ip和端口;
TCP_CHECK: 指定Keepalived如何对RS进行健康检查;
脚本解析
这里使用TCP_CHECK的方式检测端口的可用性
当检测到端口不可用时,keepalived有notify_down机制,然后调用脚本执行,这里通过脚本kill keepalived,此时才能切换到备用服务器
#!/bin/bash
pkill keepalived
3. 运行
/root/keepalived-1.3.5/bin/keepalived -f /root/keepalived-1.3.5/bin/keepalived.conf -d -D