LVS 負載均衡群集詳解、地址轉換模式(LVS-NAT)案例詳解
· Linux Virtual Server (LVS)是針對 Linux 內核開發的一個負載均衡項目,是由我國章文嵩博士在 98 年 5月創建。
· LVS 實際上相當於基於 IP 地址的虛擬化應用,為基於 IP 地址和內容請求分發的負載均衡提出了一種搞笑的解決辦法。
·LVS 現在已稱為 Linux 內核的一部分,默認編譯為 ip_vs 模塊,必要時能夠自動調用
群集的類型
1· 負載均衡群集
·以提高應用系統的響應能力、盡可能處理更多的訪問請求、減少延遲為目標,獲得高並發、高負載(LB)的整體性能。
2·高可用群集
·以提高應用系統的可靠性、盡可能的減少終端時間為目標,確保服務的連續性,達到高可用 (HA)的容錯效果。
3·高性能運算群集
以提高應用系統的CPU運算速度、擴展硬件資源和分析能力為目標,獲得高性能運算能力。
負載均衡的分層結構
典型的負載均衡群集中,包括三個層次的組建。前端至少有一個負載調度器,負載響應並分發來自客戶端的訪問請求;後端由大量的真是服務器構成服務器池,提供實際的應用服務;為了保持服務的以執行,所有節點使用共享儲存設備。
第一層:
·負載調度器,是訪問整個集群系統的唯一入口,對外使用所有服務器共有的 VIP 地址。
第二層
·服務器池,群集提供的應用服務由服務器池承擔,其中的每個節點具有獨立的 RIP 地址,只處理調度器分發的請求。
第三層
·共享儲存,為服務器池中的所有節點提供穩定、一致的文件存取服務,確保整個集群的統一性
下圖是分層結構圖
負載均衡的工作模式
·基於 IP 的負載均衡模式中,常見的有地址轉換、IP 隧道和直接路由三種工作模式
1·地址轉換模式 (NAT 模式):
·負載調度器作為所有服務器節點的網關,即作為客戶端訪問入口,也是各個節點回應客戶機的訪問出口。下圖是結構拓撲圖:
2·IP 隧道 (TUN 模式):
·采用開放式的網絡結構,負載調度器僅作為客戶機的訪問入口,各個節點通過 Internet 直接回應客戶端,不再經過負載調度器
3·直接路由 (DR模式):
采用半開放式的網絡結構,與 TUN 模式類似,但是各個節點不是分散各地,而是與調度器位於同一個物理網絡,負載調度器與各節點通過本地網絡連接。
三種工作模式的優缺點
NAT 模式:
·優點:
1 ·服務器可以運行任何支持TCP/IP的操作系統;
2·它只需要一個IP地址配置在調度器上,服務器組可以用私有的IP地址;
3·基於 NAT 的集群系統可以適合許多服務器的性能要求;
·缺點:
1·它的伸縮能力有限,當服務器結點數目升到20時,調度器本身有可能成為系統的新瓶頸;
2·相比其他兩種模式,負載能力比較弱,使用範圍比較小。
TUN 模式:
·優點:
1·負載調度器就可以處理大量的請求,它甚至可以調度百臺以上的服務器(同等規模的服務器),而它不會成為系統的瓶頸
2·可以用來構建高性能的超級服務器。
·缺點:
1·所有的服務器必須支持“IP Tunneling”或者“IP Encapsulation”協議
2·只適用運行其他操作系統的後端服務器。
直接路由 (DR 模式):
·優點
1·調度器只處理客戶到服務器端的連接,響應數據可以直接從獨立的網絡路由返回給客戶。這可以極大地提高LVS集群系統的伸縮性。
缺點
1·方法沒有IP隧道的開銷,但是要求負載調度器與實際服務器都有一塊網卡連在同一物理網段上,服務器網絡設備(或者設備別名)不作ARP響應
LVS 的負載調度算法
1·輪詢:
將收到的訪問請求按照順序輪流分配給真是服務器,不會管服務器的實際連接數量和系統負載;
2·加權輪詢:
根據真實服務器的處理能力輪流分配請求,調度器可以自動查詢各個節點的負載情況,並調整器權重。這樣可以保證處理能力強的服務器承擔更多的訪問流量;
3·最少連接:
根據真實服務器已建立的連接數進行分配,把請求優先分配給連接數最少的節點。這樣可以更好的均衡負載;
4·加權最少連接:
在服務器節點的性能差異較大的情況下,可以為真實服務器自動調整權重,權重較高的承擔更大比例的活動連接負載。
構建LVS-NAT 模式案例
1·部署準備:
主機 | IP地址 | 用途 |
---|---|---|
RedHat 6.5 | 內網eth0:192.168.100.1 外網eth1:12.0.0.1 | 調度服務器 |
RedHat 6.5 | 192.168.100.30 | 節點服務器1 |
RedHat 6.5 | 192.168.100.40 | 節點服務器2 |
RedHat 6.5 | 192.168.100.50 | NFS服務器 |
window 7 | 12.0.0.12 | 客戶端 |
2·部署說明:
·LVS 的工作模式是:采用 NAT 模式
·LVS 的負載調度算法:采用 輪詢算法 (rr)
開始部署
1·部署NFS服務器
1·在192.168.100.40主機上部署 NFS 服務器。查看 NFS、與rpcbind是否安裝
[root@redhat01 ~]# rpm -q nfs-utils
·nfs-utils-1.2.3-39.el6.x86_64
·[root@redhat01 ~]# rpm -q rpcbind
·rpcbind-0.2.0-11.el6.x86_64
·[root@redhat01 ~]#
2·開啟服務
[root@redhat01 ~]# service nfs start
啟動 NFS 服務: [確定]
關掉 NFS 配額: [確定]
啟動 NFS mountd: [確定]
啟動 NFS 守護進程: [確定]
正在啟動 RPC idmapd: [確定]
[root@redhat01 ~]# service rpcbind start
3·編輯共享文件路徑、權限!
·vim /etc/exports
/usr/share *(ro,sync)
/opt/benet 192.168.100.0/24(rw,sync)
/opt/accp 192.168.100.0/24(rw,sync)
4·創建共享文件、並放大權限
·[root@HedHat ~]# cd /opt/
[root@HedHat opt]# mkdir benet accp
[root@HedHat opt]# ls
accp benet lost+found pscount.txt rh test.tar.bz2
[root@HedHat opt]# chmod 777 benet/
[root@HedHat opt]# chmod 777 accp/
5·在文件夾隨意寫一個網頁格式的文件,方便後面驗證!
[root@HedHat opt]# echo "this is benet test 01" > /opt/benet/index.html
[root@HedHat opt]# echo "this is accp test 02" > /opt/accp/index.html
6·發布共享文件、並且查看是否共享成功、關閉防火墻!
·[root@HedHat accp]# exportfs -rv
exporting 192.168.100.0/24:/opt/accp
exporting 192.168.100.0/24:/opt/benet
exporting :/usr/share
[root@HedHat accp]# showmount -e 192.168.100.50
Export list for 192.168.100.50:
/usr/share
/opt/accp 192.168.100.0/24
/opt/benet 192.168.100.0/24
[root@HedHat ~]# service iptables stop
[root@HedHat ~]# setenforce 0
2·部署兩臺節點服務器
1·安裝httpd服務器、開啟服務
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# service httpd start
2·查詢共享文件、並且把共享文件掛載到 httpd 的站點目錄上、查看掛載情況!
· [root@localhost html]# showmount -e 192.168.100.50
Export list for 192.168.100.50:
/usr/share *
/opt/accp 192.168.100.0/24
/opt/benet 192.168.100.0/24
[root@localhost html]# mount 192.168.100.50:/opt/benet /var/www/html/
[root@localhost html]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.1G 11G 23% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 30M 155M 16% /boot
/dev/sda3 15G 165M 14G 2% /home
/dev/sda6 8.4G 220M 7.8G 3% /opt
/dev/sr0 3.6G 3.6G 0 100% /mnt
192.168.100.50:/opt/benet 12G 158M 11G 2% /var/www/html
3·上面是第一臺節點服務器,第二臺節點服務器的配置和第一臺都一樣!
·[root@HedHat ~]# yum install httpd -y
·[root@localhost ~]# service httpd start
·[root@HedHat ~]# mount 192.168.100.50:/opt/accp /var/www/html/
3·部署調度服務器
1·加載 LVS 服務模塊、安裝 ipvsadm 管理工具、開啟管理工具
> ·[root@HedHat ~]# modprobe ip_vs
[root@HedHat ~]# rpm -ivh /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
warning: /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
package ipvsadm-1.26-2.el6.x86_64 is already installed
[root@HedHat ~]# service ipvsadm start
2·配置負載分配策略
[root@HedHat ~]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@HedHat ~]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.30:80 -m
[root@HedHat ~]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.40:80 -m
3·負載分配策略命令說明:
· -A :表示調價虛擬服務器
· -t :指定 VIP 地址及 TCP 端口
· -s :指定負載調度算法(rr:輪詢。wrr:加權輪詢。lc:最少連接。wlc:加權最少連接)
· -r:指定 節點服務器地址及端口
· -m:表示是哦那個 NAT 群集模式
4·配置 SNAT 轉發規則、開啟路由轉發功能
·[root@HedHat ~]# echo "1" /proc/sys/net/ipv4/ip_forward
1 /proc/sys/net/ipv4/ip_forward
·[root@HedHat ~]# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.100.0/24 -j SNAT --to-source 12.0.0.1
測試
1·用windows 7 來測試,這裏測試需要把IP地址修改為外網地址,因為這裏是用的NAT模式,具體地址在部署準備階段已經提供,可以返回看看。下圖是測試結果:
總結
1·負載均衡工作模式:NAT模式、IP隧道(TUN)模式、直接路由(DR)模式
2·LVS 常用調度算法:輪詢(rr)、加權輪詢(wrr)、最少連接(lc)、加權最少連接(wlc)
3· ipvsadm 工具可用來配置 LVS 負載調度和管理群集節點
4· NAT 模式采用單一出入口,一個公網IP地址;而DR模式的群集采用單一入口+多路出口,需要多個公網 IP 地址。
5·註意在NAT模式下,調度服務器是不能關閉防火墻的,因為需要它來做SNAT轉換。
LVS 負載均衡群集詳解、地址轉換模式(LVS-NAT)案例詳解