注意 lvs+keepalived 的vip是虚拟出来的和 nat模式的负载均衡是不同的,vip要和其他机器在同一网段,其中lvs负载均衡实用的是DR模式,keepalived用来进行监听和切换。
lvs-master 192.168.0.10
lvs-slave 192.168.0.11
real-webserver 192.168.0.12
real-webserver 192.168.0.13
vip 192.168.0.80
关闭防火墙
如果你是内部网络没有路由,需要修改hosts列表使其能够相互通信。
1、 在两台DR上安装keepalived和ipvsdm
yum install -y ipvsadm keepalived
2、两台RS上安装httpd
yum install -y httpd
echo ‘this is server1’ > /var/www/html/index.html
echo ‘this is web-server2’ > /var/www/html/index.html
配置两台节点 两台一样的操作
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
chmod +x lvs_dr_rs.sh
inet addr:192.168.0.80 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:16436 Metric:1
servie httpd start
3、配置DR的keeplived
vrrp_instance VI_1 {
state MASTER 主为master备为BACKUP
interface eth0 eth0为你的网卡名字,可以用ifconfig查看
virtual_router_id 51 虚拟路由的编号,主备一致即可
priority 100 优先级,主必须大于备
advert_int 1 检查间隔为1s
authentication {auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.80 第一虚拟ip为多少,可以设置多个,每行一个
}
}
virtual_server 192.168.0.80 80 {
delay_loop 6 健康检查时间
lb_algo rr 负载调度的方法为rr
lb_kind DR DR模式
persistence_timeout 0
protocol TCP
real_server 192.168.0.12 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.0.13 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
service keeplved start
1、多次访问192.168.0.80,在两台服务不断切换,关闭一台httpd服务,可发现不在访问此台。
通过ip addr 可以看到在主机由eth0 192.168.0.80的虚拟地址
2、关闭主机keepalived 发现vip 80消失,去slave查看发现已经有了vip的虚拟地址。通过访问vip依旧可以访问到两台提供服务的服务器。