叢集(一)——LVS負載均衡叢集
一、群集的含義
叢集、群集
由多臺主機構成,但對外,只表現為一個整體,只提供一個訪問入口(域名或IP),相當於一臺大型計算機。
1、群集存在的必要
網際網路應用中,隨著站點對硬體效能、響應速度、服務穩定性、資料可靠性等要求越來越高,單臺伺服器無法滿足負載均衡及高可用的需求。
2、解決方法
1、使用價格昂貴的小型機、大型機。
2、使用多臺相對廉價的普通伺服器構建服務群集。
通過整合多臺伺服器,使用LVS來達到伺服器高可用和負載均衡,並於同一個IP地址對外提供相同服務。
這就是企業中常用的一種群集技術——LVS(Linux Virtual Server ,Linux虛擬伺服器)。
二、群集可分為三種
根據叢集針對的目標差異,可分為三種
1、負載均衡群集
2、高可用群集
3、高效能群集
1、負載均衡群集(Load Balance Cluster)
1、提高應用系統的響應能力、儘可能處理更多的訪問請求、減少延遲為目標,獲得高併發、高負載(LB)的整體效能。
2、LB的負載分配依賴於主節點的分流演算法,將來自客戶機的訪問請求分擔給多個伺服器節點,從而緩解整個系統的負載。
2、高可用群集 (High Availability Cluster)
1、提高應用系統的可靠性、儘可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA) 的容錯效果。
2、HA的工作方式包括雙工和主從兩種模式,雙工即所有節點同時線上;主從則只有主節點線上,但當出現故障時從節點能自動切換為主節點。
例如:“故障切換”、“雙機熱備” 等。
3、高效能運算群集(High Performance Computer Cluster)
1、以提高應用系統的CPU運算速度、擴充套件硬體資源和分析能力為目標,獲得相當於大型、超級計算機的高效能運算(HPC)能力。
2、高效能依賴於"分散式運算”、“平行計算” , 通過專用硬體和軟體將多個伺服器的CPU、記憶體等資源整合在一起,實現只有大型、超級計算機才具備的計算能力。例如,“雲端計算”、“網格計算”等。
三、負載均衡群集架構
負載均衡的結構
第一層,負載排程器(Load Balancer或Director)
訪問整個群集系統的唯一入口, 對外使用所有伺服器共有的VIP地址,也稱為群集IP地址。通常會配置主、備兩臺排程器實現熱備份,當主排程器失效以後能夠平滑替換至備用排程器,確保高可用性。
第二層,伺服器池(Server Pool)
群集所提供的應用服務、由伺服器池承擔,其中每個節點具有獨立的RIP地址(真實IP),只處理排程器分發過來的客戶機請求。當某個節點暫時失效時,負載排程器的容錯機制會將其隔離,等待錯誤排除以後再重新納入伺服器池。
第三層,共享儲存(Share Storage)
為伺服器池中的所有節點提供穩定、一致的檔案存取服務, 確保整個群集的統一性共享儲存可以使用NAS裝置,或者提供NFS共享服務的專用伺服器。
四、負載均衡群集工作模式分析
1、負載均衡群集是目前企業用得最多的群集型別
2、群集的負載排程技術有3種工作模式
- 地址轉換(NAT模式)
- IP隧道 (TUN模式)
- 直接路由(DR模式)
五、三種負載排程工作模式
(一)、NAT模式
地址轉換
- Network Address Translation,簡稱NAT模式
- 類似於防火牆的私有網路結構,負載排程器作為所有伺服器節點的閘道器,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口
- 伺服器節點使用私有IP地址,與負載排程器位於同一個物理網路,安全性要優於其他兩種方式
(二)、TUN模式
IP隧道
- IP Tunnel,簡稱TUN模式
- 採用開放式的網路結構,負載排程器僅作為客戶機的訪問入口,各節點通過各自的Internet連線直接回應客戶機,而不再經過負載排程器
- 伺服器節點分散在網際網路中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載排程器相互通訊
(三)、DR模式
直接路由
- Direct Routing,簡稱DR模式
- 採用半開放式的網路結構,與TUN模式的結構類似,但各節點並不是分散在各地,而是與排程器位於同一個物理網路
- 負載排程器與各節點伺服器通過本地網路連線,不需要建立專用的IP隧道
六、LVS虛擬伺服器
1、Linux Virtual Server
- 針對Linux核心開發的負載均衡解決方案
- 1998年5月,由我國的章文嵩博士建立
- 官方網站: http://www.linuxvirtualserver.orgl
- LVS 實際上相當於基於IP地址的虛擬化應用, 為基於IP地址和內容請求分發的負載均衡提出了一種高效的解決方法
2、LVS現在已成為Linux核心的一部分,預設編譯為ip_ vs模組,必要時能夠自動呼叫。在CentOS 7系統中,以下操作可以手動載入ip_ vs模組,並檢視當前系統中ip_ vs模組的版本資訊。
modprobe ip_vs cat /proc/net/ip_vs #確認核心對LVS的支援
七、LVS的負載排程演算法
1、輪詢(Round Robin)
- 將收到的訪問請求按照順序輪流分配給群集中的各節點(真實伺服器) ,均等地對待每一臺伺服器 ,而不管伺服器實際的連線數和系統負載
2、加權輪詢 (Weighted Round Robin)
- 根據排程器設定的權重值來分發請求,權重值高的節點優先獲得任務,分配的請求數越多
- 保證效能強的伺服器承擔更多的訪問流量
3、最少連線 (Least Connections )
- 根據真實伺服器已建立的連線數進行分配,將收到的訪問請求優先分配給連線數最少的節點
4、加權最少連線(Weighted L east Connections )
- 在伺服器節點的效能差異較大時,可以為真實伺服器自動調整權重
- 效能較高的節點將承擔更大比例的活動連線負載
八、ipvsadm工具
ipvsadm功能與選項說明 | |
選項 | 功能 |
-A | 新增虛擬伺服器 |
-D | 刪除整個虛擬伺服器 |
-s | 指定負載排程演算法(輪詢:rr、加權輪詢:wrr、最少連線:lc、加權最少連線:wlc) |
-a | 表示新增真實伺服器(節點伺服器) |
-d | 刪除某一個節點 |
-t | 指定 VIP地址及 TCP埠 |
-r | 指定 RIP地址及 TCP埠 |
-m | 表示使用 NAT群集模式 |
-g | 表示使用 DR模式 |
-i | 表示使用 TUN模式 |
-w | 設定權重(權重為 0 時表示暫停節點) |
-p 60 | 表示保持長連線60秒 |
-l | 列表檢視 LVS 虛擬伺服器(預設為檢視所有) |
-n | 以數字形式顯示地址、埠等資訊,常與“-l”選項組合使用。ipvsadm -ln |
九、NAT模式LVS負載均衡群集部署
LVS排程器作為Web 伺服器池的閘道器,LVS具有兩塊網絡卡,分別連線內外網,使用輪詢(rr)排程演算法
環境配置
主機 | 作業系統 | IP地址 | 工具/軟體/安裝包 |
負載均衡器 | CentOS7 | 內網:192.168.184.10、外網:12.0.0.1 | ipvsadm |
NFS伺服器 | CentOS7 | 192.168.184.20 | rpcbind、nfs-utils |
Web節點伺服器1 | CentOS7 | 192.168.184.30 | rpcbind、nfs-utils、httpd |
Web節點伺服器2 | CentOS7 | 192.168.184.40 | rpcbind、nfs-utils、httpd |
客戶端 | Windows10 | 12.0.0.12 | —————— |
1、部署共享儲存(NFS伺服器:192.168.184.20)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum -y install nfs-utils rpcbind systemctl start rpcbind.service systemctl start nfs.service systemctl enable nfs.service systemctl enable rpcbind.service mkdir /opt/lic mkdir /opt/kiki chmod 777 /opt/lic chmod 777 /opt/kiki vim /etc/exports /usr/share *(ro,sync) /opt/lic 192.168.184.0/24(rw,sync) /opt/kiki 192.168.184.0/24(rw,sync) exportfs -rv
1.部署共享儲存(NFS伺服器:192.168.116.60)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install nfs-utils rpcbind -y systemctl start nfs.service systemctl start rpcbind.service systemctl enable nfs.service systemctl enable rpcbind.service mkdir /opt/accp /opt/benet chmod 777 /opt/accp /opt/benet echo 'this is accp web!' > /opt/accp/index.html echo 'this is benet web!' > /opt/benet/index.html vim /etc/exports /usr/share *(ro,sync) /opt/kgc 192.168.116.0/24(rw,sync) /opt/benet 192.168.116.0/24(rw,sync)
2.釋出共享
exportfs -rv
3.配置節點伺服器(192.168.116.80、192.168.116.90)
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.116.60 systemctl start rpcbind systemctl enable rpcbind
mount.nfs 192.168.116.60:/opt/accp /var/www/html echo 'this is accp web!' > /var/www/html/index.html vim /etc/fstab 192.168.116.60:/opt/accp /myshare nfs defaults,_netdev 0 0
web 1 節點伺服器
web2 節點伺服器
4.配置負載排程器(內閘道器 ens33:192.168.116.100,外閘道器 ens37:12.0.0.1)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0
(1)配置SNAT轉發規則 vim /etc/sysctl.conf net.ipv4.ip_forward = 1 或 echo '1' > /proc/sys/net/ipv4/ip_forward sysctl -p iptables -t nat -F iptables -F iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1 (2)載入LVS核心模組 modprobe ip_vs #載入 ip_vs模組 cat /proc/net/ip_vs #檢視 ip_vs版本資訊 (3)安裝ipvsadm 管理工具 yum -y install ipvsadm
啟動服務前須儲存負載分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm 或者 ipvsadm --save > /etc/sysconfig/ipvsadm systemctl start ipvsadm.service (4)配置負載分配策略(NAT模式只要在伺服器上配置,節點伺服器不需要特殊配置) ipvsadm -C #清除原有策略 ipvsadm -A -t 12.0.0.1:80 -s rr ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m [-w 1] ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.12:80 -m [-w 1] ipvsadm #啟用策略 ipvsadm -ln #檢視節點狀態,Masq代表 NAT模式 ipvsadm-save > /etc/sysconfig/ipvsadm #儲存策略
ipvsadm -d -t 12.0.0.1:80 -r 192.168.80.11:80 -m [-w 1] #刪除群集中某一節點伺服器 ipvsadm -D -t 12.0.0.1:80 #刪除整個虛擬伺服器 systemctl stop ipvsadm #停止服務(清除策略) systemctl start ipvsadm #啟動服務(重建規則)、 ipvsadm-restore < /etc/sysconfig/ipvsadm #恢復LVS 策略
5.測試效果
在一臺IP為12.0.0.12的客戶機使用瀏覽器訪問 http://12.0.0.1/ ,不斷重新整理瀏覽器測試負載均衡效果,重新整理間隔需長點