为了平衡缓解访问压力,负载均衡的使用必不可少。负载均衡,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载为目的。本文讲的是,LB(Load Balancing)负载均衡集群中的软件类,四层负载均衡LVS(Linux VirtualServer)。
如上图,用户不会直接链接真实服务器,而是连接负载均衡服务器,然后由负载均衡服务器把消息转发给实际应用服务器。
server1 172.25.64.1 调度器 版本企业六
server2 172.25.64.2 后端真实服务器 版本企业六
server3 172.25.64.3 后端真实服务器 版本企业六
server1(调度器)
1、安装ipvsadm
#配置高级yum源
[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# vim rhel-source.repo
[rhel-source]
name=Redhat6.5
baseurl=http://172.25.64.250/rhel6.5
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.64.250/rhel6.5/LoadBalancer #写自己的yum源地址
enabled=1
gpgcheck=0
[root@server1 yum.repos.d]# yum clean all
#安装ipvsadm软件
[root@server1 yum.repos.d]# yum install ipvsadm -y
2、编写DR模式策略并保存
[root@server1 ~]# ipvsadm -A -t 172.25.64.100:80 -s rr #添加虚拟IP,模式轮询
[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.2:80 -g #添加真实服务器
[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.3:80 -g
[root@server1 ~]# ipvsadm -l #查看调度
[root@server1 ~]# /etc/init.d/ipvsadm save #保存策略
注释:
-A:添加虚拟设备
-t:指定ip地址
-s:添加指定策略(rr为调度算法:轮询)
3、给网卡添加Virtual IP(VIP)
[root@server1 ~]# ip addr add 172.25.64.100/24 dev eth7
[root@server1 ~]# ip a #查看IP信息
server2(真实服务器)
1、安装阿帕奇并编写一个默认发布文件
[root@server2 ~]# yum install httpd -y
[root@server2 ~]# vim /var/www/html/index.html
这里是服务器server2,ip为172.25.64.2!
[root@server2 ~]# /etc/init.d/httpd start
2、添加Virtual IP(VIP)
[root@server2 ~]# ip addr add 172.25.64.100/32 dev eth0 #子网掩码32是不对外开放
[root@server2 ~]# ip a
server3(真实服务器)
和server2相同
1、安装阿帕奇并编写一个默认发布文件
[root@server3 ~]# yum install httpd -y
[root@server3 ~]# vim /var/www/html/index.html
欢迎访问server3,我的IP是172.25.64.3!
[root@server3 ~]# /etc/init.d/httpd start
2、添加Virtual IP(VIP)
[root@server3 ~]# ip addr add 172.25.64.100/32 dev eth0 #子网掩码32是不对外开放
[root@server3 ~]# ip a
客户端
[root@allen ~]# curl 172.25.64.100 #curl VIP
arp -an | grep 100 ##查看MAC绑定地址
arp -d Virtual IP #删除MAC绑定地址
现在是VIP通过MAC地址(还是服务器的MAC地址)访问的,这是不被允许的!
真实服务器server2
1、安装arptables_jf
[root@server2 ~]# yum install arptables_jf -y
2、编写并保存策略
[root@server2 ~]# arptables -A IN -d 172.25.64.100 -j DROP #拒绝172.25.64.100访问请求
[root@server2 ~]# arptables -A OUT -s 172.25.64.100 -j mangle --mangle-ip-s 172.25.64.2
##当自身需要通过100在网内发送数据包时,将ip伪装成172.25.64.2
[root@server2 ~]# /etc/init.d/arptables_jf save
真实服务器server3
1、安装arptables_jf
[root@server3 ~]# yum install arptables_jf -y
2、编写并保存策略
[root@server3 ~]# arptables -A IN -d 172.25.64.100 -j DROP
[root@server3 ~]# arptables -A OUT -s 172.25.64.100 -j mangle --mangle-ip-s 172.25.64.3
[root@server3 ~]# /etc/init.d/arptables_jf save
3、查看策略
[root@server3 ~]# arptables -L
客户端
1、先删除之前实验绑定的MAC地址:arp-d 172.25.4.100(Vartual IP)
2、curl 172.25.64.100访问100时,数据经过调度器进行轮询