先上图
5台机器,我准备了6台,3个router,3个realserver业务服务器。
首先模式是 3个router带外网及内网ip的网卡,3个realserver仅需要内网网卡,因为我们是nat模式。
第一步
设定router
1:安装lvs
yum install -y ipvsadm
2:安装keepalived
yum install -y keepalived
第二步
配置router上面的keepalived
master
/etc/keepalived/keepalived.conf
#全局
global_defs {
router_id LVS_01
#vrrp_skip_check_adv_addr
#vrrp_garp_interval 0
#vrrp_gna_interval 0
}
#vip 1 外网
vrrp_instance VI_1 {
state MASTER
interface ens01
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100
}
}
#vip 2 内网
vrrp_instance LAN_GATEWAY {
state MASTER
interface ens02
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.168.2.1/24
}
}
#配置业务端口
virtual_server 192.168.8.100 8080 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 10.168.2.100 8080 {
weight 10
TCP_CHECK {
connect_timeout 3
#nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 10.168.2.101 8080 {
weight 10
TCP_CHECK {
connect_timeout 3
#nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 10.168.2.102 8080 {
weight 10
TCP_CHECK {
connect_timeout 3
#nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
}
注意,同一个virtual_router_id 主备必须一致。
router2上面把state修改成BACKUP priority值修改小一点的 其他一样。
第三步
配置realserver
把网关配置成vip内网的10.168.2.1
配置web业务端口是8080
第四步
测试
curl http://192.168.8.100:8080
得到结果
第五步
修改日志输出,默认是message中查看不方便。
1:vi /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS=”-D” 修改为 KEEPALIVED_OPTIONS=”-D -d -S 0”
其中 -S 指定 syslog 的 facility
2:vi /etc/rsyslog.conf
添加
# save keepalive message also to keepalived.log
local0.* /var/log/keepalived.log
3:重启
systemctl restart rsyslog
systemctl restart keepalived
注意事项:
整体都非常简单非常明了,但是一件事要注意就是要开启防火墙的情况下要vrrp协议通过
因为 VRRP 使用 224.0.0.18 这个组播地址
firewall配置
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens01--destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens01 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
iptables
-A INPUT -i ens01 -p vrrp -s 192.168.1.0/24 -j ACCEPT
or
-A INPUT -p vrrp -j ACCEPT
tcpdump -i eth0 vrrp -n