gerfw 发表于 2015-8-18 09:33:09

LVS负载均衡器

由于公司lvs服务器进行迁移,顺便记录下来实验时候的搭建过程。本次实验是在云服务器上进行的操作。

LVS负载均衡器
服务器IP地址设置表

服务器名称
网络接口
IP地址


路由器

外网IP
121.201.24.138

lvs
eth0
172.16.100.2


eth0:1(VIP)
172.16.100.10

web1
eth0
172.16.100.3



lo:0(VIP)
172.16.100.10


web2

eth0
172.16.100.4


lo:0(VIP)
172.16.100.10


web3

eth0

172.16.100.7



lo:0(VIP)

172.16.100.10


LVS端设置

1.安装ipvsamd管理工具

1
yum install ipvsadm -y




执行ipvsadm发现服务正常即可

1
2
3
4
#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn





2.配置ipvsadm
本实验为基于DR工作模式的负载均衡器
创建虚拟服务,并为虚拟服务设置适当的调度算法

1
2
3
4
5
6
7
# ipvsadm -A -t 172.16.100.10:80 -swrr -p 60

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.100.10:http wrr




ipvsadm中添加真实服务器组

1
2
3
4
5
6
7
8
9
10
11
12
# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.3:80 -g -w 10
# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.4:80 -g -w 10
# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.7:80 -g -w 10

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.100.10:http wrr persistent 60
-> 192.168.100.3:http         Route   10   0          0         
-> 192.168.100.4:http         Route   10   0          0         
-> 192.168.100.7:http         Route   10   0          0




保持配置(将配置保存到配置文件,以便重启等操作后配置自动读入)

1
2
# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:





3.添加VIP
本次实验使用ip addr添加的IP在内存中,使用ifconfig指令无法看到,重启后失效,

可选择写入到/etc/sysconfig/network-scripts/ifcfg-eth1中使配置永久生效)


1
2
3
4
5
6
7
8
9
10
#ip addr add 172.16.100.10/32 dev eth0

## 查看eth0的ip信息(ip a)
# ip ad li eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:02:25:13:78 brd ff:ff:ff:ff:ff:ff
    inet 172.16.100.2/24 brd 172.16.100.255 scope global eth0
    inet 172.16.100.10/24 scope global secondary eth0
    inet6 fe80::5054:2ff:fe25:1378/64 scope link
       valid_lft forever preferred_lft forever





web端设置

由于使用DR模式,调度器和真实服务器都要设置VIP地址
1.在web的lo:0上配置VIP

1
2
3
4
5
6
7
8
#vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=172.16.100.10
NETMASK=255255.255.255
NETWORK=172.16.100.1




或者使用指令:

1
ip addr add 172.16.100.10/32 dev lo:1





2.抑制 ARP 响应
由于使用DR模式,调度器和真实服务器都要设置VIP地址,所以真实服务器要禁止对VIP地址的ARP响应.
该抑制只在真实服务器上配置(这种配置只是临时生效,需要永久生效写入到/etc/sysctl.conf)

1
2
3
4
# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce




永久生效写法:

1
2
3
4
5
6
# vim /etc/sysctl.conf
## 在真实服务器上设置lo 忽略ARP 广播
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2




使配置生效

1
sysctl -p




在3台web服务器上安装apache服务(nginx),这里为了区分的确是访问了不同的服务器,分别在每台写入不同的文件

1
2
3
4
5
6
7
8
# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.3

# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.4

# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.7





路由转发设置


在路由器上面进行转发配置
我使用的是云服务器,在控制台可以设置路由器端口转发,这里设置外网来的80端口访问转发给172.16.100.10的80端口


结果验证

访问外网IP,可以访问到内部3个真实服务器
刷新,3个结果都会出现(频繁刷新,一般都是一个结果,可以找几个人测试打开效果)


页: [1]
查看完整版本: LVS负载均衡器