LVS :负载均衡
LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能
- 实验环境
需要四台虚拟机
server1_lue2 : 172.25.6.4
server2_lue3 : 172.25.6.5
server3_lue4 : 172.25.6.6
server3_lue5 : 172.25.6.7
注:lue2和lue3做调度器,lue4和lue5做服务器
在lue2 和lue3里面做以下操作:
pcs cluster disable --all
pcs cluster stop --all
systemctl disable --now pcsd
ssh lue2 "systemctl disable --now pcsd"
- VR配置
yum install -y ipvsadm <安装ipvsadm管理工具>
ssh lue2 "yum install -y ipvsadm"
systemctl enable ipvsadm
ssh lue2 "systemctl enable ipvsadm"
ip addr add 172.25.6.100/24 dev eth0 <在eth0网卡绑定VIP地址(高可用)>
ipvsadm -A -t 172.25.6.100:80 -s rr <添加虚拟服务>
ipvsadm -a -t 172.25.6.100:80 -r 172.25.6.6:80 -g <将虚拟服务关联到真实服务上>
ipvsadm -a -t 172.25.6.100:80 -r 172.25.6.7:80 -g
ipvsadm -ln <查看配置结果>
- RS配置
yum install -y httpd
ssh lue4 "yum install -y httpd"
systemctl enable --now httpd
ssh lue4 "systemctl enable --now httpd"
ip addr add 172.25.6.100/24 dev eth0
cd /var/www/html
echo vm4 > index.html
echo vm5 > index.html
- arptables
yum install -y arptales
ssh lue4 "yum install -y arptales"
systemctl enable arptables
ssh lue4 "systemctl enable arptables"
arptables -A INPUT -d 172.25.6.100 -j DROP
arptables -A OUTPUT -s 172.25.6.100 -j mangle --mangle-ip-s 172.25.6.6 在lue4
arptables -A OUTPUT -s 172.25.6.100 -j mangle --mangle-ip-s 172.25.6.7 在lue5
- 测试:
问题
某台RealServer down了,怎么办? ---健康检查
LVS本身down了,怎么办 --LVS冗余
解决: keepalived ---LVS管理软件
Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。
调度器VSlue2和lue3中都要配置
在主调度器lue2中
yum install -y keepalived
yum install -y mailx <邮件>
ipvsadm -C <在lue3>
ip addr del 172.25.6.100 dev eth0
vim /etc/keepalived/keepalived.conf <lue2>
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email { <发送报警邮件收件地址>
root@localhost
}
notification_email_from keepalived@localhost <指明报警邮件的发送地址>
smtp_server 127.0.0.1 <邮件服务器地址>
smtp_connect_timeout 30 <smtp的超时时间>
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|BACKUP <当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;>
interface eth0 <绑定为当前虚拟路由器使用的物理接口;>
virtual_router_id 57 <当前虚拟路由器的惟一标识,范围是0-255;>
priority 100 <当前主机在此虚拟路径器中的优先级;范围1-254;>
advert_int 1 <通告发送间隔,包含主机优先级、心跳等。>
authentication { <认证配置>
auth_type PASS <认证类型,PASS表示简单字符串认证>
auth_pass 1111 <密码,PASS密码最长为8位>
virtual_ipaddress {
172.25.6.100 <虚拟路由IP地址,以辅助地址方式设置>
}
}
virtual_server 172.25.6.100 80 { <LVS配置段 ,设置LVS的VIP地址和端口>
delay_loop 6 <服务轮询的时间间隔;检测RS服务器的状态。>
lb_algo rr <调度算法,可选rr|wrr|lc|wlc|lblc|sh|dh。>
lb_kind DR <集群类型>
#persistence_timeout 50 <是否启用持久连接,连接保存时长>
protocol TCP <协议,只支持TCP>
real_server 172.25.6.6 80 { <配置RS服务器的地址和端口>
weight 1 <权重>
TCP_CHECK { <检测RS服务器的状态,发送请求报文>
< <这个hash码可以使用genhash命令请求这个页面生成>
connect_timeout 3 <连接超时时间>
nb_get_retry 3 <超时重试次数>
delay_before_retry 3 <每次超时过后多久再进行连接>
}
}
real_server 172.25.6.7 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
systemctl restart keepalived
systemctl stop httpd
在备调度器lue3中,在/etc/keepalived/keepalived.conf 中,lue优先级比主调度器低,需要修改优先级和BACKUP
测试:
关闭主服务器的keepalived,并ip addr查看接口是否有虚拟主机172.25.6.100
查看备份服务器的接口,地址已经漂移到了备份服务器上面
注:1.各节点时间必须同步
2.确保各节点的用于集群服务的接口支持MULTICAST通信