1. 配置yum源
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.60.250/iso/LoadBalancer
gpgcheck=0
2. 安装ipvsadm #编辑调度策略
yum install ipvsadm -y
/etc/init.d/ipvsadm start
3. 在server2和3 安装http,并打开
/etc/init.d/httpd start
vim /var/www/html/index.html
4. 编辑调度策略,写完后保存
ipvsadm -A -t 172.25.60.100:80 -s rr #rr轮循调度
ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.2:80 -g
ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.3:80 -g
ipvsadm -l # -l 列出当前策略
/etc/init.d/ipvsadm save #保存策略.
cat /etc/sysconfig/ipvsadm #可通过修改文件修改策略
-A :添加目标策略(向一个记录中添加真实主机)
-t :tcp连接
-s :调度器,接负载均衡的算法-g:dr模式
-r真实主机ip
5. 添加虚拟ip,server1/2/3 上都需要添加
ip addr add 172.25.60.100/24 dev eth0 #server1
ip addr add 172.25.60.100/32 dev eth0 #server2/3
server2/3------> 172.25.50.100/32
设置子网为32的原因: 数据包发现没有100,就会丢弃,不接收外部请求,只进行内部通信
在物理机上:
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# curl 172.25.60.100
server2,example.com
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# curl 172.25.60.100
server2,example.com
通过mac地址查看缓存是来自哪个服务器的:
[root@foundation60 ~]# arp -an | grep 100
? (172.25.60.100) at 52:54:00:d1:b7:77 [ether] on br0
删除存储的真实服务器硬件地址:
[root@foundation60 ~]# arp -d 172.25.60.100
[root@foundation60 ~]# arp -an | grep 100
? (172.25.60.100) at on br0
无法轮询 ,是因为客户端存储了真实服务器的地址
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# arp -an | grep 100
? (172.25.60.100) at 52:54:00:5d:2d:45 [ether] on br0
缓存是来自server3的
解决办法:修改内核参数,添加arp,阻止外部的172.25.60.100的访问
具体做法:使用防火墙策略限制用户访问服务器
1. 在server2和3上安装:arptables_jf
yum install arptables_jf -y
2.编辑策略:在server2/3上
arptables -nL
arptables -A IN -d 172.25.60.100 -j DROP
##-A添加策略 在IN -d 目的地址IP -j 处理方式 DROP 拒绝访问不回应
arptables -A OUT -s 172.25.60.100 -j mangle --mangle-ip-s 172.25.60.2
##管理输出来自38.100的请求 以38.2输出
测试:在物理机上
[root@foundation60 ~]# arp -d 172.25.60.100 #清除缓存的mac地址
[root@foundation60 ~]# curl 172.25.60.100
server2,example.com
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# curl 172.25.60.100
server2,example.com
[root@foundation60 ~]# curl 172.25.60.100
server3 - www.westos.org
[root@foundation60 ~]# arp -an | grep 100
? (172.25.60.100) at 52:54:00:d1:b7:77 [ether] on br0
[root@foundation60 ~]#
缓存的是调度器的mac地址
注意:
- DR模式下,ds和rs在同一网段内。
- LVS和后端服务器上都要有vip,并且后端真实服务器上的vip不能对外进行广播。