1. 程式人生 > >一臺虛擬機器搞定負載均衡lvs-NAT模式和lvs-DR模式搭建

一臺虛擬機器搞定負載均衡lvs-NAT模式和lvs-DR模式搭建

首先來說一下負載均衡,為了解決一個伺服器不能支撐大併發量使用者的訪問,所以通過負載均衡的方法來解決這個問題,負載均衡有兩種實現方案,一種是通過硬體來實現可以購買 f5裝置,一種是通過軟體來實現如lvs、nginx等,由於lvs直接是linux系統核心級別的,實現起來方便所以仙子主要講解lvs實現負載均衡。、

    lvs實現負載均衡有三種模式,分別是  NAT、DR、TUN模式,我只學習了NAT模式和DR模式的,現在主要講解怎麼搭建NAT、DR模式。nat 叫做地址轉換,dr叫做直接路由、tun叫隧道。

一、 NAT模式搭建的環境準備

  首先準備一臺安裝了centos 7的虛擬機器,然後完整克隆出幾臺虛擬機器,克隆出來的虛擬機器需要需改幾個地方,第一個地方就是網絡卡的地方  vi /etc/sysconfig/network-script/ifcfg-eth0   裡面的  HWADDR   值需要修改,這個值是mac地址,還有一個需要修改的就是UUID  ,這個也要修改稱不一樣的,然後重啟網絡卡。

1、準備工作

   1)首先,關閉防火牆,setenforce  0

2)在要當作lvs伺服器上安裝ipvsadm 

 yum install   ipvsadm   -y

2、網路拓撲搭建

LVS Director機器:
公網地址:vip
主機名:lvs
vip地址: 192.168.0.200
子網掩碼:255.255.255.0
閘道器:    192.168.0.1 
網路連線方式:Bridge

私網地址:dip
主機名:lvs
dip地址: 172.16.100.1
子網掩碼:255.255.0.0
閘道器:    不指定閘道器
網路連線方式:Host-Only


RealServer機器:

私網地址:rip1
主機名:web1
rip1地址:172.16.100.10 
子網掩碼:255.255.0.0   
閘道器:    172.16.100.1 
網路連線方式:Host-Only


私網地址:rip2
主機名:web2
rip1地址:172.16.100.11
子網掩碼:255.255.0.0   
閘道器:    172.16.100.1 
網路連線方式:Host-Only

3、在RealServer上部署httpd服務並測試

 

​

安裝httpd服務,建立httpd測試頁面,啟動httpd服務

[[email protected] ~]# yum -y install httpd 
[[email protected] ~]# service httpd start 
[[email protected] ~]# echo "RS1-web1 Allentuns.com" > /var/www/html/index.html 
[[email protected] ~]# yum -y install httpd 
[
[email protected]
~]# echo "RS2-web2 Allentuns.com" > /var/www/html/index.html [[email protected] ~]# service httpd start 測試httpd服務是否OK! [[email protected] ~]# curl http://localhost RS1-web1 Allentuns.com [[email protected] ~]# curl http://172.16.100.11 RS2-web2 Allentuns.com [點選並拖拽以移動] ​

4、在Director上部署ipvs服務並測試
 

​

(1)安裝ipvsadm

[[email protected] ~]# yum -y install ipvsadm

(2)新增叢集服務


[[email protected] ~]# ipvsadm -A -t 192.168.0.200:80 -s rr               #定義一個叢集服務 

[[email protected] ~]# ipvsadm -a -t 192.168.0.200:80 -r 172.16.100.10 -m  #新增RealServer並指派調
度演算法為NAT 
[[email protected] ~]# ipvsadm -a -t 192.168.0.200:80 -r 172.16.100.11 -m  #新增RealServer並指派排程演算法為NAT 
[[email protected] ~]# ipvsadm -L -n                                     #檢視ipvs定義的規則列表 IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.0.200:80 rr

  -> 172.16.100.10:80             Masq    1      0          0         

  -> 172.16.100.11:80             Masq    1      0          0   



[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward                    #檢視Linux是否開啟路由
轉發功能 0

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward               #啟動Linux的路由轉發功
能 [[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward  1

  

(3)測試訪問http頁面


[[email protected] ~]# curl http://192.168.0.200/index.html RS2-web2 Allentuns.com  #第一次是web2
 
[[email protected] ~]# curl http://192.168.0.200/index.html RS1-web1 Allentuns.com  #第二次是web1 

[[email protected] ~]# curl http://192.168.0.200/index.html RS2-web2 Allentuns.com  #第三次是web1 

[[email protected] ~]# curl http://192.168.0.200/index.html RS1-web1 Allentuns.com  #第四次是web2

(4)永久儲存LVS規則並恢復

第一種方法:

[[email protected] ~]# service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [確定]

第二種方法:

[[email protected] ~]# ipvsadm -S > /etc/sysconfig/ipvsadm.s1

模擬清空ipvsadm規則來恢復

[[email protected] ~]# ipvsadm -C 
[[email protected] ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[[email protected] ~]# ipvsadm -R < /etc/sysconfig/ipvsadm.s1  
[[email protected] ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.0.200:80 wrr

  -> 172.16.100.10:80             Masq    3      0          0        

  -> 172.16.100.11:80             Masq    1      0          0

二、 DR模式搭建的環境準備

1、在自己的虛擬機器上操作需要準備5臺Linux系統,一臺模擬客戶端、一臺模擬路由器、一臺模擬lvs伺服器,剩下兩臺模擬realServer,作為後臺服務的提供者。這裡的五臺虛擬機器都是克隆出來的話,需要注意的是網絡卡配置資訊裡的HWADDR和uuid要與其他的都不同。

2、網路拓撲的搭建,我認為這一步是最難的,首先ip、網段、路由、後臺的httpd服務都要搞好,這些做完以後配置lvs其實很容易,我搭建dr模式大部分時間也是花費在了網路拓撲的搭建。

3、具體搭建內容太多,說幾個重要的地方吧,也是我踩得坑,第一要模擬內外網,客戶端的掩碼和內網的掩碼要一樣,這點是經驗之談,然後網段可以不一樣,比如外網模擬  192.168.0.22  ,內網模擬  192.168.30.100  ,然後客戶端的網絡卡需要通過橋接模式  ,而路由器需要兩塊網絡卡  與外網相通的需要橋接模式,與內網相通的是僅主機模式,然後各網絡卡的hwaddr 與uuid 都需要不同-----這點我深受其害。  

4、然後就是搭建dr模式

1)首先在兩臺real  server上執行下面的命令

 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 
​

2)並且將vip設定到迴環網絡卡中

ip  a a vip/32  dev lo 

3)lvs伺服器上的操作

一定要關閉防火牆,   

4)配置命令

 ipvsadm  -A -t 192.168.30.98:80 -s rr

ipvsadm  -a -t 192.168.30.98:80 -r 192.168.30.100 -g

ipvsadm  -a -t 192.168.30.98:80 -r 192.168.30.101 -g

5)在lvs伺服器上將vip加入到  dip網絡卡上

ip a a 192.168.30.98/32 dev eth0

6)網絡卡檔案配置完以後都需要進行重啟完卡

systemctl restart network

7)在客戶端可以通過curl 命令來測試

 

 

下面說一下過程中遇到的一些阻力

1)由於我的linux系統都是克隆出來的,所以有的網絡卡中的hwaddr 與 uuid沒有修改成不同的

2)模擬路由器的那臺裝置 需要開啟路由功能 

echo net.ipv4.ip_forward =1 >> /etc/sysctl.conf

sysctl -p

iptables -vnL

3)還有就是在最後網路拓撲都已經配置完以後client端死活ping不通內網ip,最後發現是因為 lvs服務得防火牆沒有關掉導致

4)每個伺服器都要執行  setenforce 0

5)學到的一些命令

route add default gw 192.168.30.1     --------------新增閘道器

route -nn 檢視閘道器

tcpdump -i eth0  -nn port 80    ----------------抓包,獲取80埠的包

tcpdump  -i  eth0 -nn icmp     -----------------抓icmp包

還有就是安裝完httpd服務以後,,直接像  /var/www/html  下寫檔案  vi    index.html

啟動 httpd服務   systemctl   restart httpd

ipvsadm  -A -t 192.168.30.98 -s rr   新增排程演算法

ipvsadm   -a -t 192.168.30.98:80 -g    新增策略位dr模式

永久儲存lvs配置   ipvsadm -S -n  > /etc/sysconfig/ipvsadm

重啟伺服器以後恢復配置   ipvsadm -R < /etc/sysconfig/ipvsadm

檢視伺服器配置資訊   ipvsadm   -Ln

6)這裡要注意vip 子網掩碼是32位  255.255.255.255

7)vip在lvs伺服器上繫結的時候需要在  eth0上繫結,而不能在lo上