linux运维企业篇——LVS负载均衡之DR
一.LVS(Linux Virtual Server)
LVS是一个虚拟化的服务器集群(Cluster)系统,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障从而将一组服务器构成一个高性能,高可用的虚拟服务器。整个服务器集群的结构对客户是透明的而且无需修改客户端和服务器端的程序。
二.LVS的负载均衡方式(四种)
DR:直接路由模式
TUN:隧道模式
NAT:网络地址转换模式
FULLNAT:
三.DR直接路由模式
1.server1中:
yum源配置添加负载均衡的软件包(不配置找不到安装包)
不配置结果:
配置yum源
添加以下代码(注意自己的yum)
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.6.250/iso/LoadBalancer
gpgcheck=0
2.server2和server3中:
安装打开httpd并设置默认界面,这里的server2和server3都已经安装httpd
打开serrver2的httpd服务
打开server3的httpd服务
3.在真机中测试两个客户端server2和server3能否访问
[[email protected] ~]$ curl 172.25.6.2
<h1>servers2.example.com</h1>
[[email protected] ~]$ curl 172.25.6.3
<h1>server3- www.westos.org</h1>
4.server1中添加策略
(安装过ipvsadm后会有ipvsadm命令)
ipvsadm -l #查看策略
lsmod #查看电脑中的模块
ipvsadm -A -t 172.25.6.100:80 -s rr #80是入口,rr是ipvsadm十大调度之一轮循
ipvsadm -a -t 172.25.6.100:80 -r 172.25.6.2:80 -g
ipvsadm -a -t 172.25.6.100:80 -r 172.25.6.3:80 -g
ipvsadm -l #查看策略
/etc/init.d/ipvsadm save #保存策略
ip addr add 172.25.6.100/24 dev eth0 # 临时加载ip到eth0并查看
5.给server2和server3都添加临时ip到eth0
ip addr add 172.25.6.100/32 dev eth0 # 32:不接受外部请求只用来内部通信,请求只有一个来源
6.在真机上测试(不一定直接就出现想要的轮循结果,可以用命令删除多次尝试)
删除指定的ip地址缓存命令:arp -d ip
[[email protected] ~]# curl 172.25.6.100
<h1>server3- www.westos.org</h1>
[[email protected] ~]# curl 172.25.6.100
<h1>servers2.example.com</h1>
[[email protected] ~]# curl 172.25.6.100
<h1>server3- www.westos.org</h1>
[[email protected] ~]# curl 172.25.6.100
<h1>servers2.example.com</h1>
ipvsadm -l #查看可以看加server2和server3每个都轮询了两次
可能缓存地址到server端
可以看出缓存地址到server3中,也可以用命令查看缓存到的MAC地址
arp -an | grep 100
解决方法:
在server2和server3中:
[[email protected] ~]# yum install -y arptables_jf
[[email protected] ~]# arptables -nL
[[email protected] ~]# arptables -A IN -d 172.25.6.100 -j DROP
[[email protected] ~]# arptables -A OUT -s 172.25.6.100 -j mangle --mangle-ip-s 172.25.6.2
[[email protected] ~]# arptables -nL #查看策略是否写入
[[email protected] ~]# yum install -y arptables_jf
[[email protected] ~]# arptables -nL
[[email protected] ~]# arptables -A IN -d 172.25.6.100 -j DROP
[[email protected] ~]# arptables -A OUT -s 172.25.6.100 -j mangle --mangle-ip-s 172.25.6.3
[[email protected] ~]# arptables -nL #查看策略是否写入
在真机中测试
[[email protected] ~]# arp -d 172.25.6.100 #先删除再测试
[[email protected] ~]# curl 172.25.6.100
<h1>servers2.example.com</h1>
[[email protected] ~]# curl 172.25.6.100
<h1>server3- www.westos.org</h1>
[[email protected] ~]# curl 172.25.6.100
<h1>servers2.example.com</h1>
再次删除多次实验