Linux搭建負載均衡集群,使用LVS的DR模式,Linux Cluster
LB(負載均衡集群)
負載均衡集群,通常有兩種實現方式,基於硬件或基於軟件。
基於硬件:BIP
基於軟件:
基於OSI第四層傳輸層:LVS(Linux Virtual Server)
基於OSI第期層傳輸層:nginx
LVS,全稱Linux Virtual Server,由國人章文嵩博士提出並實現。 LVS有三種工作模式:DR直接路由模式、NAT地址轉換模式、TUN隧道模式 在實際環境中若是搭建負載均衡集群直接使用DR模式。
Director有一張網卡,與realserver連接在同一個交換機上,並能相互通信,配置一個網絡別名作為VIP, 在每個realserver上綁定一個虛擬網卡ip地址lo:0,該虛擬ip地址為director的ip地址, 用於realserver處理完director分給的用戶請求後,直接使用director的ip作為源ip返回給用戶。 在綁定虛擬網卡ip前,需要先調整director的arptable(對arp請求的通告級別、回應級別調整)。 arp_ignore:只對什麼級別的arp請求進行響應,當arp廣播請求的目標ip不在同一個接口上就不予響應。 默認為0,能通告就通告。 0:只要本地配置的有相應地址,就給予響應; 1:僅在請求的目標地址配置請求到達的接口上的時候,才給予響應; arp_announce:向外主動通告自己的通告級別。 默認為0,能通告就通告。 0:將本地任何接口上的任何地址向外通告; 1:試圖僅向目標網絡通告與其網絡匹配的地址; 2:僅向與本地接口上地址匹配的網絡進行通告 在realserver上配置一條獨特的路由條目,才能將處理好的用戶請求使用director的IP地址返回結果給用戶
物理機上安裝virtualbox軟件上創建一台centos5.5,最小化安裝即可,作為Director。 桌面可裝可不裝,使用6.X,7.X也是可以的,這裡使用centos5.5是因為my computer才8G內存 virtualbox的虛擬介質管理,復制2台剛才安裝好的centos5.5硬盤,明明為realserver1,realserver2 新建虛擬機作為realserver時,選擇存儲介質選擇現有的磁盤,路徑指向剛才復制的centos5.5
0).ipvs在2.6.X版本後的內核中默認安裝有,我們需要安裝ipvsadm進行管理,注意:ipvsadm與iptables不能同時使用,實驗前需關閉iptables與selinux 1).Director只需一張網卡選擇橋接模式,啟動 2).為Director安裝ipvsadm yum -y install ipvsadm 檢查是否安裝成功只需輸入ipvsadm,無輸出則未安裝有,若已安裝則輸出如下字樣 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn 3).配置測試網頁 為每台realserver安裝http,並啟動httpd服務 yum install http service httpd start echo "this is realserver1 test web" > /var/www/html/index.html echo "this is realserver2 test web" > /var/www/html/index.html echo "this is realserver3 test web" > /var/www/html/index.html #分別創建測試頁 curl http://ipaddress #訪問測試頁 4).配置director 配置VIP 配置網絡別名DIP ifconfig eth0:0 192.168.8.30/24 5).配置realserver的RIP realserver1:192.168.8.32 realserver2:192.168.8.33 6).分別配置realserver的arp_ignore、arp_announce realserver1: echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore realserver2: echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 7).分別在realserver1、2上配置的網絡別名VIP與靜態路由 ifconconfig lo:0 192.168.8.30 broadcast 192.168.8.30 netmask 255.255.255.255 up route add -host 192.168.8.30 dev lo:0 在director上也需要配置靜態路由 route add -host 192.168.8.30 dev eth0:0 8).在director上測試能否正常訪問realserver的測試頁 9).配置ipvsadm規則 在director上配置 [root@director ~]# ipvsadm -C #清空之前的ipvsadm規則 [root@director ~]# ipvsadm -A -t 192.168.8.30:80 -s wlc [root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.32 -g -w 2 #-g表示DR模式 -w表示權重 [root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.33 -g -w 1 [root@director ~]# 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.8.30:80 wlc -> 192.168.8.33:80 Route 1 0 0 -> 192.168.8.32:80 Route 2 0 0 10).測試 使用物理機的浏覽器輸入http://director的ip地址 不斷刷新即可看到效果