拓扑图:
环境概述:
LVS_Master:192.168.42.149(ens33,外网地址) 192.168.122.128(ens37,私网地址)
LVS_backup:192.168.42.150(ens33,外网地址) 192.168.122.129(ens37,私网地址)
Realserver1:192.168.122.130(ens33,私网地址)
Realserver2:192.168.122.131(ens33,私网地址)
VIP:192.168.42.180
部署步骤:
lvs主从安装步骤
前提工作:
关闭selinux
关闭防火墙
#开启路由转发功能
echo “1” > /proc/sys/net/ipv4/ip_forward
#安装ipvsadm
yum install ipvsadm -y
#安装keepalived
yum install keepalived -y
#编辑keepalived.conf文件
! Configuration File for keepalived
global_defs {
notification_email {
gengyuhao1@huawei.com #故障接受联系人
}
notification_email_from admin@test.com #故障发送人
smtp_server 127.0.0.1 #本机发送邮件
smtp_connect_timeout 30
router_id LVS_MASTER #BACKUP上修改为LVS_BACKUP
}
vrrp_instance VI_1 {
state MASTER #BACKUP上修改为BACKUP
interface ens33
virtual_router_id 51 #虚拟路由标识,主从相同
priority 100 #BACKUP上修改为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #主从认证密码必须一致
}
virtual_ipaddress { #虚拟IP(VTP)
192.168.42.180
}
}
vrrp_instance LAN_GATEWAY { #定义内网网关
state MASTER #BACKUP上修改为BACKUP
interface ens37 #对内网卡的名称,与后端真实服务器同网段的网卡
virtual_router_id 50 #虚拟路由ID,主从相同
priority 100 #BACKUP上修改为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #内网网关虚拟IP,也就是真实服务器的网关
192.168.122.180
}
}
virtual_server 192.168.42.180 80 { #对外虚拟IP地址
delay_loop 6 #检查真实服务器时间,单位秒
lb_algo rr #设置负载调度算法,rr为轮训
lb_kind NAT #设置LVS负载均衡NAT模式
# persistence_timeout 50 #同一IP的连接60秒内被分配到同一台真实服务器
protocol TCP #使用TCP协议检查realserver状态
real_server 192.168.122.130 80 { #第一个web节点
weight 3 #节点权重值
TCP_CHECK { #健康检查方式
connect_timeout 3 #连接超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔/S
}
}
real_server 192.168.122.131 80 { #第二个web节点
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#启动keepalived
systemctl start keepalived
#查看相关的lvs规则
[root@node1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.42.180:80 rr
-> 192.168.122.130:80 Masq 3 0 0
-> 192.168.122.131:80 Masq 3 0 0
#相关的日志信息在/var/log/message中
RealServer节点配置
#安装nginx
yum install nginx -y
#配置路由,设置网关为keepalived上面配置的虚拟网关192.168.122.180
route add default gw 192.168.122.180
测试访问
#通过访问VIP获取资源,由于我们采用的轮训的调度方式结果如下
[root@node1 ~]# curl http://192.168.42.180
web2
[root@node1 ~]# curl http://192.168.42.180
WEB1
[root@node1 ~]# curl http://192.168.42.180
web2
[root@node1 ~]# curl http://192.168.42.180
WEB1
由上可见,我们的测试是正常的
模拟主LVS故障,查看服务是否可以正常访问
#模拟主LVS故障,我们停掉主节点,通过将keepalived服务停掉或者关机实现,并查看被服务器的日志信息以及网络信息
#日志信息如下
Nov 6 18:55:26 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Transition to MASTER STATE
Nov 6 18:55:26 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Transition to MASTER STATE
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Entering MASTER STATE
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) setting protocol VIPs.
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Entering MASTER STATE
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) setting protocol VIPs.
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Sending/queueing gratuitous ARPs on ens37 for 192.168.122.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:27 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens33 for 192.168.42.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Sending/queueing gratuitous ARPs on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
Nov 6 18:55:32 localhost Keepalived_vrrp[1521]: Sending gratuitous ARP on ens37 for 192.168.122.180
#网络信息如下
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a1:31:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.42.149/24 brd 192.168.42.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.42.180/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:3182/64 scope link
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a1:31:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.122.128/24 brd 192.168.122.255 scope global dynamic ens37
valid_lft 1137sec preferred_lft 1137sec
inet 192.168.122.180/32 scope global ens37
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:318c/64 scope link
valid_lft forever preferred_lft forever
由此可见,当主LVS故障的时候,备用LVS会接收对应的VIP以及虚拟网关作为提供服务的LVS
#继续测试访问
[root@node1 ~]# curl http://192.168.42.180
web2
[root@node1 ~]# curl http://192.168.42.180
WEB1
[root@node1 ~]# curl http://192.168.42.180
web2
[root@node1 ~]# curl http://192.168.42.180
WEB1
服务正常提供访问
#重新启动主LVS,会抢占主服务节点,备用节点又会被下放
#备用节点日志信息
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Received advert with higher priority 100, ours 90
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) Entering BACKUP STATE
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(LAN_GATEWAY) removing protocol VIPs.
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Received advert with higher priority 100, ours 90
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) Entering BACKUP STATE
Nov 6 19:01:06 localhost Keepalived_vrrp[1521]: VRRP_Instance(VI_1) removing protocol VIPs.