一、本地环境介绍:
负载均衡的三台机器均为Ubuntu Server 14.04 64位系统,内核中已集成ipvs模块( modprobe -l | grep ipvs 查看 )。为演示LVS负载均衡后的效果,需先在其中两台机器中安装apache服务(apt-get install apache2),并将位置在/var/www/html/目录下index.html文件修改成不同内容(如主机名)。
1
二、部署架构:
主机名 IP 角色
UbuntuServerEn64 192.168.226.149 负载均衡服务器 director
UbuntuServerEn64_2 192.168.226.145 真实服务器 real server(已安装apache)
UbuntuServerEn64_3 192.168.226.148 真实服务器 real server(已安装apache)
VIP为192.168.226.150(VIP为对外提供的IP,并不是真实物理IP)
1
2
3
4
5
6
7
部署成功后,所有发送到VIP的请求包都会由director按照设置的算法分发到不同的real server进行处理。
三、部署过程:
1、负载均衡服务器(director)配置:
#由于内核已集成ipvs模块,只需要安装ipvsadm即可
apt-get install ipvsadm
#在director上建立一个虚拟的ip地址进行消息广播
ifconfig eth0:0 192.168.226.150 netmask 255.255.255.0 broadcast 192.168.226.150
#将虚拟地址添加到路由表
route add -host 192.168.226.150 dev eth0:0
#此指令暂没发现有啥用处
echo "1">/proc/sys/net/ipv4/ip_forward
#使用ipvsadm安装LVS服务
ipvsadm -A -t 192.168.226.150:80 -s rr
#增加真实服务器
ipvsadm -a -t 192.168.226.150:80 -r 192.168.226.145 -g
ipvsadm -a -t 192.168.226.150:80 -r 192.168.226.148 -g
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2、真实服务器 (real server)配置:
ifconfig lo:0 192.168.226.150 netmask 255.255.255.255 broadcast 192.168.226.150 up
route add -host 192.168.226.150 dev lo:0
echo "1">/proc/sys/net/ipv4/ip_forward
1
2
3
4
5
director配置如下图所示:
(ipvsadm 命令未截图成功)
real server配置如下图所示:
四、负载均衡测试:
未使用LVS负载均衡前,在浏览器中输入各IP地址分别显示如下图
使用LVS负载均衡后,在浏览器中输入VIP地址分别显示如下图
浏览器显示不同内容代表发送到VIP的请求包可由director按照设置的算法分发到不同的real server进行处理。
至此,LVS负载均衡架构已搭建完成。
注:LVS是四层负载均衡,只能通过ip+port实现负载分发,可支持TCP&UDP。而Haproxy是七层负载均衡,可以实现更细粒度的负载分发,猷有专门的TCP和HTTP解决方案。但由于前者是操作系统层面支持,并发量和稳定性都表现较好而得到大量使用。