一、企業群集應用概述
1.1群集的含義
- Cluster、集群、群集
- 由多臺主機構成,但對外只表現為一個整體,只提供一個訪問入口(域名或IP地址),相當于一臺大型計算機
1.2問題及解決方法
問題:
互聯網應用中,隨著站點對硬體性能,回應速度、服務穩定性、資料可靠性等要求越來越高,單臺服務器已經無法滿足負載均衡及高可用的要求
解決方法:
? 使用價格昂貴的小型機、大型機
? 使用多臺相對廉價的普通服務器構建服務群集
在企業中常用的一種群集技術–LVS(Linux virtual server,linux虛擬服務器)
注:通過整合多臺服務器,使用LVS來達到服務器的高可用和負載均衡,并以同一個IP地址對外提供相同的服務
1.3根據群集所針對的目標差異,可分為三種型別
- 負載均衡群集
- 高可用群集
- 高性能運算群集
1.3.1 負載均衡群集(Load Balance Cluster)
- 提高應用系統的回應能力,盡可能處理更多的訪問請求、減少延遲為目標,獲得高并發、高負載(LB)的整體性能
- LB的負載分擔依賴于主節點的分流演算法,將來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力,例如 "反向代理 "
1.3.2 高可用群集(High Availability Cluster)
- 提高應用系統的可靠性、盡可能的減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果
- HA的作業方式包括雙工和主從兩種模式,雙工即所有節點同時在線;主從則只有主節點在線,但當出現故障時從節點能自動切換為主節點,
例如 “故障切換” “雙機熱備” 等
1.3.3 .高性能運算群集(High Performance Computer Cluster)
- 以提高應用系統的CPU運算速度、擴展硬體資源和分析能力為目標,獲得相當于大型、超級計算機的高性能運算(HPC)能力
- 高性能依賴于“分布式運算”、“并行計算”,通過專用硬體和軟體將多個服務器的cpu、記憶體等資源整合在一起,實作只有大型、超級計算機才具備的計算能力,例如 “云計算” “網路計算”等
二、負載均衡群集架構
2.1負載均衡的結構
- 第一層,負載調度器(Load Balancer或Director):訪問整個群集系統的唯一入口,對外使用所有服務器共有的vip地址,也稱為群集IP地址,通常會配置主、備兩臺調度器實作熱備份,當主調度器失效以后能夠平滑替換至備用調度器,確保高可用性
- 第二層,服務器池(Server Pool):群集所提供的應用服務,由服務器池承擔,其中每個節點具有獨立的RIP地址(真實IP),只處理調度器分發過來的客戶機請求,當某個節點暫時失效時,負載調度器的容錯機制會將其隔離,等待錯誤排除以后再重新納入服務器池
- 第三層,共享存盤(Share Storage):為服務器池中的所有節點提供穩定,一致的檔案存取服務,確保整個群集的統一性,共享存盤可以使用NAS設備,或者提供NFS共享服務的專用服務器

2.2負載均衡群集作業模式分析
負載均衡群集是目前企業用的最多的群集型別
群集的負載調度技術有三種作業模式
- 地址轉換
- IP隧道
- 直接路由
2.2.1 NAT模式(地址轉換)
- Network Address Translation,簡稱NAT模式
- 類似于防火墻的私有網路結構,負載調度器作為所有服務器節點的網關結構,負載調度器作為所有服務器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口
- 服務器節點使用私有IP地址,與負載調度器位于同一個物理網路,安全性要優于其他兩種方式
原理:首先負載均衡器接收到客戶的請求資料包時,根據調度演算法決定將請求發送給哪個后端的真實服務器(RS),然后負載均衡器就把客戶端發送的請求資料包的目標IP地址及埠改成后端真實服務器的IP地址(RIP),真實服務器回應完請求后,查看默認路由,把回應后的資料包發送給負載均衡器,負載均衡器在接收到回應包后,把包的源地址改成虛擬地址(VIP)然后發送回給客戶端
優點:集群中的服務器可以使用任何支持TCP/IP的作業系統,只要負載均衡器有一個合法的IP地址
缺點:擴展性有限,當服務器節點增長過多時,由于所有的請求和應答都需要經過負載均衡器,因此負載均衡器將成為整個系統的瓶頸
2.2.2、TUN模式——IP隧道
- IP Tunnel ,簡稱TUN模式
- 采用開放式的網路結構,負載調度器僅作為客戶機的訪問入口,各節點通過各自的lnternet連接直接回應客戶機,而不再經過負載調度器
- 服務器節點分散在互聯網中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互通信
原理:首先負載均衡器接收到客戶的請求資料包時,根據調度演算法決定將請求發送給哪個后端的真實服務器(RS),然后負載均衡器就把客戶端發送的請求報文封裝一層IP隧道(T-IP)轉發到真實服務器(RS),真實服務器回應完請求后,查看默認路由,把回應后的資料包直接發送給客戶端,不需要經過負載均衡器
優點:負載均衡器只負責將請求包分發給后端節點服務器,而RS將應答包直接發給用戶,所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,也能處理很巨大的請求量
缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的服務器支持“IP Tunneling”
2.2.3、 DR 模式——直接路由
- Direct Routing ,簡稱DR模式
- 采用半開放式的網路結構,與TUN模式的結構類似,但各節點并不是分散在各地,而是與調度器位于同一個物理網路
- 負載調度器與各節點服務器通過本地網路連接,不需要建立專用的IP隧道
原理:首先負載均衡器接收到客戶的請求資料包時,根據調度演算法決定將請求發送給哪個后端的真實服務器(RS),然后負載均衡器就把客戶端發送的請求資料包的目標MAC地址改成后端真實服務器的MAC地址(R-MAC),真實服務器回應完請求后,查看默認路由,把回應后的資料包直接發送給客戶端,不需要經過負載均衡器
優點:負載均衡器只負責將請求包分發給后端節點服務器,而RS將應答包直接發給用戶,所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,也能處理很巨大的請求量
缺點:需要負載均衡器與真實服務器RS都有一塊網卡連接到同一物理網段上,必須在同一個局域網環境
2.3關于LVS虛擬服務器
Linux Virtual Server 是針對 Linux 內核開發的一個負載均衡專案,LVS 實際 上相當于基于 IP 地址的虛擬化應用,為基于 IP 地址和內容請求分發的負載均衡提出了一種 高效的解決方法,
LVS 現在已成為 Linux 內核的一部分,默認編譯為 ip_vs 模塊,必要時能夠自動呼叫, 在 CentOS 7 系統中,以下操作可以手動加載 ip_vs 模塊,并查看當前系統中 ip_vs 模塊的 版本資訊,
modprobe ip_vs #手動加載ip_vs模塊 cat /proc/net/ip_vs #查看當前ip_vs模塊版本資訊
2.4LVS 的負載調度演算法
2.4.1 輪詢 (Round Robin)
將收到的訪問請求按照順序輪流分配給群集中的各節點(真實服務器),均等地對待每一臺服務器,而不是服務器實際的連接數和系統負載
2.4.2 加權輪詢(Weighted Round Robin)
根據調度設定的權重值來分發請求,權重值高的節點優先獲得任務,分配的請求數越多,保證性能強的服務器承擔更多的訪問流量
2.4.3 最少連接 (Least Connections)
根據真實服務器已建立的連接進行分配,將收到的訪問請求優先分配給連接數最少的節點
2.4.4 加權最少連接(Weighted Least Connections)
在服務器節點的性能差異較大時,可以為真實服務器自動調整權重,性能較高的節點承擔更大比例的活動連接負載
2.5使用 ipvsadm 管理工具
- ipvsadm是在負載調度器上使用的LVS群集管理工具,通過呼叫ip_vs模塊來添加、洗掉服務器節點 ,以 及查看群集的運行狀態,在CentOS7系統中,需要手動安裝ipvsadm.x86_64 0:1.27-7.el7 軟體包,
- LVS 群集的管理作業主要包括創建虛擬服務器、添加服務器節點、查看群集節點狀態、 洗掉服務器節點和保存負載分配策略,
ipvsadm 工具選項說明:

常用術語解釋:
CIP:Client IP,表示的是客戶端 IP 地址,
VIP:Virtual IP,表示負載均衡對外提供訪問的 IP 地址,一般負載均衡 IP 都會通過 Virtual IP 實作高可用,
RIP:RealServer IP,表示負載均衡后端的真實服務器 IP 地址,
DIP:Director IP,表示負載均衡與后端服務器通信的 IP 地址,
CMAC:客戶端的 MAC 地址,準確的應該是 LVS 連接的路由器的 MAC 地址,
VMAC:負載均衡 LVS 的 VIP 對應的 MAC 地址,
DMAC:負載均衡 LVS 的 DIP 對應的 MAC 地址,
RMAC:后端真實服務器的 RIP 地址對應的 MAC 地址,
三、NAT模式 LVS負載均衡群集部署的操作步驟
實驗環境準備:
負載調度器:內網關 ens33:192.168.10.40,外網關 ens37:12.0.0.1
Web節點服務器1:192.168.10.20
Web節點服務器2:192.168.10.30
NFS服務器:192.168.10.10
客戶端:12.0.0.10
3.1部署共享存盤(NFS服務器:192.168.10.40)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install nfs-utils rpcbind -y systemctl start rpcbind.service systemctl start nfs.service systemctl enable rpcbind.service systemctl enable nfs.service mkdir /opt/fzr /opt/zzj
chmod 777 /opt/fzr /opt/zzj
echo 'this is fzr web!' > /opt/fzr/index.html echo 'this is zzj web!' > /opt/zzj/index.html vim /etc/exports /opt/fzr 192.168.10.0/24(rw,sync) /opt/zzj 192.168.10.0/24(rw,sync) --發布共享--- exportfs -rv
3.2配置節點服務器(192.168.10.20、192.168.10.30)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install httpd -y systemctl start httpd.service systemctl enable httpd.service yum install nfs-utils rpcbind -y showmount -e 192.168.10.10 systemctl start rpcbind.service systemctl start nfs.service systemctl enable rpcbind.service systemctl enable nfs.service --192.168.10.20--- mount.nfs 192.168.10.10:/opt/fzr /var/www/html 另一臺節點服務器掛載如下: --192.168.10.30--- mount.nfs 192.168.10.10:/opt/zzj /var/www/html
3.3配置負載調度器(內網關 ens33:192.168.10.10,外網關 ens37:12.0.0.1)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0
3.3.1 配置SNAT轉發規則
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #添加ip路由轉發 或 echo '1' > /proc/sys/net/ipv4/ip_forward sysctl -p iptables -t nat -F iptables -F iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens36 -j SNAT --to-source 12.0.0.10
3.3.2 加載LVS內核模塊
modprobe ip_vs #加載 ip_vs模塊 cat /proc/net/ip_vs #查看 ip_vs版本資訊 ##加載全部模塊 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
3.3.3 安裝ipvsadm 管理工具
yum -y install ipvsadm --啟動服務前須保存負載分配策略--- ipvsadm-save > /etc/sysconfig/ipvsadm 或者 ipvsadm --save > /etc/sysconfig/ipvsadm systemctl start ipvsadm.service
3.3.4 配置負載分配策略(NAT模式只要在服務器上配置,節點服務器不需要特殊配置)
ipvsadm -C #清除原有策略 ipvsadm -A -t 12.0.0.10:80 -s rr ipvsadm -a -t 12.0.0.10:80 -r 192.168.10.20:80 -m [-w 1] #添加真實ip ipvsadm -a -t 12.0.0.10:80 -r 192.168.10.30:80 -m [-w 1] #添加真實ip ipvsadm #啟用策略 ipvsadm -ln #查看節點狀態,Masq代表 NAT模式 ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略 ipvsadm -d -t 12.0.0.1:80 -r 192.168.10.20:80 -m [-w 1] #洗掉群集中某一節點服務器 ipvsadm -D -t 12.0.0.1:80 #洗掉整個虛擬服務器 systemctl stop ipvsadm #停止服務(清除策略) systemctl start ipvsadm #啟動服務(重建規則) ipvsadm-restore < /etc/sysconfig/ipvsadm #恢復LVS 策略
3.4測驗效果
網路設定里面網關需要設定為網關服務器
在一臺IP為12.0.0.10的客戶機使用瀏覽器訪問 http://12.0.0.10/ ,不斷重繪瀏覽器測驗負載均衡效果,重繪間隔需長點,
四、實體操作:NAT模式 LVS負載均衡群集部署
4.1環境準備
4.1.1 網關服務器網卡配置(在虛擬機設定里面添加新網卡),內網關 ens33:192.168.10.40,外網關 ens36:12.0.0.1

4.1.2 web節點服務器以及NFS服務器的網關修改為負載調度器的內網網關ens33:192.168.10.40
Web節點服務器1:192.168.10.20
Web節點服務器2:192.168.10.30
NFS服務器:192.168.10.10



4.1.3 客戶端IP和網關設定

4.1.4 關閉所有設備的防火墻和SElinux

4.2部署共享存盤(NFS服務器:192.168.2.100)
4.2.1 查看是否安裝rpcbind、nfs-util并設定共享目錄

![]()


4.2.2 啟動NFS服務,發布NFS共享目錄并查看

4.3配置節點服務器(192.168.10.20、192.168.10.30)
4.3.1 配置節點服務器1(192.168.10.20)


![]()


4.3.2 配置節點服務器2(192.168.10.30)




4.4配置負載調度器(內網關 ens33:192.168.10.40,外網關 ens37:12.0.0.10)
4.4.1 配置SNAT轉發規則


4.4.2 加載LVS內核模塊

4.4.3 安裝ipvsadm 管理工具并啟動服務

4.4.4 配置負載分配策略(NAT模式只要在服務器上配置,節點服務器不需要特殊配置)


4.5瀏覽器中進行測驗(不斷重繪瀏覽器測驗負載均衡效果,重繪間隔需長點)


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/536015.html
標籤:其他
上一篇:DTSE Tech Talk | 第11期:深入淺出暢談華為云低時延直播技術
下一篇:Tomcat多實體部署
