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管理工具

yum install ipvsadm -y

執行ipvsadm發現服務正常即可

[root@lvs ~]#  ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn


2.配置ipvsadm

本實驗爲基於DR工作模式的負載均衡器

創建虛擬服務,併爲虛擬服務設置適當的調度算法

[root@lvs~]# ipvsadm -A -t 172.16.100.10:80 -s  wrr -p 60

[root@lvs ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.100.10:http wrr

ipvsadm中添加真實服務器組

[root@lvs ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.3:80 -g -w 10
[root@lvs ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.4:80 -g -w 10
[root@lvs ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.7:80 -g -w 10

[root@lvs ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.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

保持配置(將配置保存到配置文件,以便重啓等操作後配置自動讀入)

[root@lvs ~]# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [  OK  ]


3.添加VIP

本次實驗使用ip addr添加的IP在內存中,使用ifconfig指令無法看到,重啓後失效,

可選擇寫入到/etc/sysconfig/network-scripts/ifcfg-eth1中使配置永久生效)

[root@lvs ~]#ip addr add 172.16.100.10/32 dev eth0
 
## 查看eth0的ip信息(ip a)
[root@lvs ~]# 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

[root@web1 ~]#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

或者使用指令:

ip addr add 172.16.100.10/32 dev lo:1


2.抑制 ARP 響應

由於使用DR模式,調度器和真實服務器都要設置VIP地址,所以真實服務器要禁止對VIP地址的ARP響應.

該抑制只在真實服務器上配置(這種配置只是臨時生效,需要永久生效寫入到/etc/sysctl.conf)

[root@web1 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web1 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@web1 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@web1 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

永久生效寫法:

[root@web1 ~]# 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

使配置生效

sysctl -p

在3臺web服務器上安裝apache服務(nginx),這裏爲了區分的確是訪問了不同的服務器,分別在每臺寫入不同的文件

[root@web1 ~]# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.3
 
[root@web2 ~]# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.4
 
[root@web3 ~]# vim /var/www/html/wel.conf
hi,my ip is 172.16.100.7


路由轉發設置


在路由器上面進行轉發配置

我使用的是雲服務器,在控制檯可以設置路由器端口轉發,這裏設置外網來的80端口訪問轉發給172.16.100.10的80端口

wKiom1XQxLrweXwvAACdidwLvh8581.jpg


結果驗證


訪問外網IP,可以訪問到內部3個真實服務器

刷新,3個結果都會出現(頻繁刷新,一般都是一個結果,可以找幾個人測試打開效果)

wKioL1XQxv-BG2SwAACuIOp8YxY785.jpg    wKioL1XQxv-jnhlpAAC3DTiWAfY774.jpg

wKiom1XQxPfDuqQQAADFh4EJQW0464.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章