Linux keepalived高可用集群+keepaliced+LVS
keepalived+lvs集群
环境准备
拓扑:
192.168.0.116 dr1 负载均衡器
192.168.0.117 dr2 负载均衡器
192.168.0.118 rs1 web1
192.168.0.119 rs2 web2
1.在master上安装配置Keepalived:
yum install keepalived ipvsadm -y #ipvsadm安装并不启动
2.在master上修改配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id Director1 #两边不一样
}
vrrp_instance VI_1 {
state MASTER #另外一台机器是BACKUP
interface ens32 #心跳网卡
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 150 #优先级
advert_int 1 #检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.20/24 dev ens32 #VIP和工作端口
}
}
virtual_server 192.168.0.20 80 { #LVS 配置,VIP
delay_loop 3 #服务论询的时间间隔
lb_algo rr #LVS 调度算法
lb_kind DR #LVS 集群模式
protocol TCP
real_server 192.168.0.118 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.0.119 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}
3.在backup上安装keepalived:
yum install keepalived ipvsadm -y #ipvsadm安装并不启动
4.拷贝master上的keepalived.conf到backup上:
scp 192.168.0.116:/etc/keepalived/keepalived.conf 192.168.0.117:/etc/keepalived/
5.拷贝后,修改配置文件
router_id Director2
state BACKUP
priority 100
! Configuration File for keepalived
global_defs {
router_id Director2
}
vrrp_instance VI_1 {
state BACKUP #另外一台机器是BACKUP
interface ens32 #心跳网卡
virtual_router_id 52
priority 100 #优先级
advert_int 1 #检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.20/24 dev ens32 #VIP和工作端口
}
}
virtual_server 192.168.0.20 80 { #LVS 配置,VIP
delay_loop 3 #服务论询的时间间隔
lb_algo rr #LVS 调度算法
lb_kind DR #LVS 集群模式
protocol TCP
real_server 192.168.0.118 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.0.119 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}
6.master和backup上启动服务:
systemctl enable keepalived
systemctl start keepalived
reboot
7.web服务器配置
web1和web2同配置
(1)安装web测试站点
yum install -y httpd && systemctl start httpd && systemctl enable httpd
(2)配置虚拟地址
#cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
#vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.0.20
NETMASK=255.255.255.255
ONBOOT=yes
#其他行注释掉
(3)配置路由
#vim /etc/rc.local
/sbin/route add host 192.168.0.20 dev lo:0
(4)配置ARP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
reboot
8.测试:
1)观察lvs路由条目
master上 查询
# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.0.124:http Route 1 0 0
2)观察vip地址在哪台机器上
master上 查询 # ip a
ens32:
inet 192.168.0.120/24 brd 192.168.0.255 scope global dynamic ens32
inet 192.168.0.20/32 scope global ens32
3)客户端浏览器访问vip
访问正常
4)关闭master上的keepalived服务,再次访问vip
master上 关闭 # systemctl stop keepalived.service
5)关闭web1站点服务,再次访问VIP
访问正常