1.准备两台linux机器
192.168.199.128 主
192.168.199.129 备
2.虚拟ip 192.168.199.200
3.两台机器安装keepalived ipvsdm管理工具(查看负载均衡使用情况)
yum -y install keepalived ipvsadm
4.keepalived配置部分解释
! Configuration File for keepalived
global_defs {
// 收件人地址
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc // 发件人姓名、地址
smtp_server 192.168.200.1 // 通知邮件的smtp地址
smtp_connect_timeout 30 // 连接smtp服务器的超时时间
router_id LVS_DEVEL // 标志本节点的字符串,通常为ip地址,故障发生时邮件会通知到此
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
# 定义VRRP热备实例
vrrp_instance VI_1 {
state MASTER //只有BACKUP和MASTER。MASTER为工作状态,BACKUP是备用状态
interface eth0 //承载VIP的物理网卡接口
virtual_router_id 51 //虚拟路由器的ID,每个热备组保持一致
priority 100 //优先级100,数值越大优先级越高(最大255)
nopreempt // 禁止master宕机恢复后抢占服务
# advert_int 1 //MASTER与BACKUP同步检查的时间间隔(心跳频率)
# smtp_alert // 激活故障时发送邮件警告
authentication { //认证信息,每个热备组要保持一致
auth_type PASS //认证类型
auth_pass 1111 //密码
}
//指定漂移地址(VIP),可以有多个(但必须跟物理接口是同网段的)
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
// 定义RealServer对应的VIP及服务端口,IP和端口之间用空格隔开
virtual_server 192.168.200.100 443 {
delay_loop 6 // 每隔6秒查询realserver状态
lb_algo rr // 后端调试算法(load balancing algorithm)
lb_kind NAT // LVS调度类型NAT/DR/TUN
persistence_timeout 50 // 同一IP的连接60秒内被分配到同一台realserver
protocol TCP // 用TCP协议检查realserver状态
real_server 192.168.201.100 443 {
weight 1 // 权重,最大越高,lvs就越优先访问
// keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 // 10秒无响应超时
retry 3 // 重连次数3次
delay_before_retry 3 // 重连间隔时间
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
5.修改主机keepalived配置文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back
vim /etc/keepalived/keepalived.conf
修改成下面内容
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.199.200
}
}
6.修改备机keepalived配置文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back
vim /etc/keepalived/keepalived.conf
修改成下面内容
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.199.200
}
}
设置开机自启
systemctl enable keepalived
7.在两台服务器上启动keepalived
service keepalived start
8.查看虚拟ip绑定情况
主备机器上分别执行 ip a命令
192.168.199.128 主
192.168.199.128 备
目前VIP是在主机上
9.停掉主机
在备机上执行ip a
VIP绑定到备机上
9.重启主机
VIP重新回到主机上