1.实验环境
四台主机:
server1 192.168.2.77 调度器
server2 192.168.2.88
server3 192.168.2.99 服务主机
192.168.2.29 测试主机
2.lvs负载均衡集群
定义:是linux内核功能
实验操作:
调度器主机
yum install ipvsadm -y //安装ipvsadm
服务主机
yum install httpd -y //安装Apache
systemctl disable firewalld //关闭防火墙
systemctl enable --now httpd //启动httpd服务
echo server2 > /var/www/html/index.html //更改Apache的默认发布页面
echo server3 > /var/www/html/index.html
在调度器输入以下命令
ipvsadm --help //帮助
ipvsadm -A -t 192.168.2.50:80 -s rr // -A 添加服务 -t tcp形式 -s 调度算法
ipvsadm -ln //查看连接情况
ip addr add 192.168.2.50 dev eth0 //添加vip(虚拟ip地址)
ip addr
注:50ip必须ping不通,虚拟地址
ipvsadm -a -t 192.168.2.50:80 -r 192.168.2.88:80 -g
ipvsadm -a -t 192.168.2.50:80 -r 192.168.2.99:80 -g // -g 直连
以上两条命令的作用是将服务主机添加到调度器,使调度器的流量能够分配给服务主机
此时,在测试主机上执行curl 192.168.2.50,出现以下情况
出现上图中所示情况的原因是因为调度器可以识别50此ip地址,在转发给服务主机后,由于服务主机的ip地址并非为50,无法识别,故应在服务主机中加入50ip地址,即在服务主机上分别执行以下命令
ip addr add 192.168.2.50 dev eth0
注:后边的ip为server2和server3主机的ip
即可使lvs正常进行负载均衡
ipvsadm -ln
3.服务主机的arp屏蔽处理
原理:由于服务主机和调度器均有192.168.2.50的虚拟ip地址,会对其负载的均衡分配产生影响,故应对服务主机进行arp屏蔽处理,使服务主机在接收转发的ip信息时,调用虚拟ip地址
实验环境:
在服务主机安装arptables软件
yum install arptables -y
实验步骤:
服务主机
arptables -nL //查看输入输出的策略详情
arptables -A INPUT -d 192.168.2.50 -j DROP //屏蔽输入
arptables -A OUTPUT -s 192.168.2.50 -j mangle --mangle-ip-s 192.168.2.88 //将输出的ip转换为本机ip
arptables-save > /etc/sysconfig/arptables //将屏蔽操作保存
arptables -F //重启
arptables -nL
systemctl restart arptables
arptables -nL //策略生效
测试主机
curl 192.168.2.50
arp -an
arp -d 192.168.2.50 //删除访问记录
测试:
测试主机
curl 192.168.2.50
发现可以正常的访问且负载均衡
4.lvs+keepalived 高可用负载均衡集群
实验准备:
一台测试机,一台主调度器,一台备用调度器(server4),两台服务机
实验步骤:
在主调度器上
(1)安装keepalived及mailx软件
yum install keepalived mailx -y
(2)删除调度器原有策略及vip
ipvsadm -C
ipvsadm -ln
ip addr del 192.168.2.50/32 dev eth0
ip addr
(3)修改配置文件
vim /etc/keepalived/keepalived.conf
编辑内容
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
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
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.50
}
}
virtual_server 192.168.2.50 80 {
delay_loop 3
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 192.168.2.88 80 {
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
}
}
real_server 192.168.2.99 80 {
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
}
}
}
执行以下命令
systemctl restart keepalived
ip addr
ipvsadm -ln
由图可见,vip与策略均自动生成,可正常进行负载均衡
在备用调度器中
(1)安装软件
yum install keepalived ipvsadm -y
(2)修改配置文件
vim /etc/keepalived/keepalived.conf
将调度器keepalived的配置文件中
state MASTER 修改为 state BACKUP
priority 100 修改为 priority 50
systemctl restart keepalived
ip addr
ipvsadm -ln
发现策略已经生成,vip并未生成,原因是主调度器正常使用,故备用调度器仍为BACKUP状态,不生成vip,若将主调度器的keepalived服务停止,即在主调度器执行以下命令
systemctl stop keepalived
(3)查看vip
ip addr
发现vip已生成,此时客户端的数据将发送到备用调度器上,客户端无任何异常情况
查看日志
cat /var/log/massages
发现keepalived已变更为MASTER状态,负载均衡正常进行
5.LVS DR工作原理
DR模式的基本原理是当客户端收到数据包时,将其发送给调度器,在调度器上,将其mac地址更改,更改为vip的mac地址,然后再又调度器通过第二层数据链路层将数据包转发给rs主机,在rs主机上应做好arp屏蔽,保证其输入输出的可靠性,最后再由rs发送到客户端。
注意事项:
(1) 调度器和rs应在同一个vlan下
(2) 调度器的实际作用是修改原数据包的mac地址
(3) rs上应做arp屏蔽