群集簡介:
群集(或集群)和稱呼來自于英文單詞cluster,表示一群、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分于單個服務器。
根據實際企業環境的不同,群集所提供的功能也各不相同,采用的技術細節也可能各有千秋,但無論哪種群集,都至少包括兩臺節點服務器。而對外表現為一個整體,只提供一個訪問入口(域名或IP地址),相當于一臺大型計算機。根據群集所針對的目標差異,可分為以下三種類型。
負載均衡群集(laod balance cluster):以提高應用系統的響應能力,盡可能處理更多的訪問請求,減少延遲為目標,獲得高并發、高負載的整體性能。LB的負載分配依賴于主節點的分流算法,將來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力。
高可用群集(high availability cluster):以提高應用系統的可靠性,盡可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果。HA的工作方式包括雙工、主從兩種模式——雙工即所有節點同時在線,主從則只有主節點在線,但當出現故障時從節點能自動切換為主節點。
高性能運算群集(high performance computer cluster):以提高應用系統的CPU運算速度,擴展硬件資源和分析能力為目標,獲得相當于大型、超級計算機的高性能運算(HPC)能力.通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力。
1、負載均衡群集的分層結構:
在典型的負載均衡群集中,包括三個層次的組件。
第一層,負載調度器:這是訪問整個群集系統的唯一入口,對外使用所有服務器共有的VIP(virtual IP,虛擬IP)地址,也稱為群集IP地址。通常會配置主、備兩臺調度器實現熱備份,當主調度器失效以后平滑替換至備用調度器,確保高可用性。
第二層,服務器池:群集所提供的應用服務(如HTTP、FTP)由服務器池承擔,其中的每個節點具有獨立的RIP(real IP,真實IP)地址,只處理調度器分發過來的客戶機請求。當某個節點暫時失效時,負載調度器的容錯機制會將其隔離,等侍錯誤排除以后再重新納入服務器池。
第三層,共享存儲:為服務器池中的所有節點提供穩定、一致的文件存取服務,確保整個群集的紡一性,共享存儲可以使用NAS設備或者提供NFS共享服務的專用服務器。
負載均衡的工作模式:
關于群集的負載調度技術,可以基于IP、端口、內容等進行分發,其中基于IP的負載調度是效果最高的?;?/span>IP的負載均衡模式中,常見的有地址轉換(NAT)、IP隧道(TUN)、直接路由(DR)這三種工作模式。
地址轉換:簡稱NAT模式,類似于防火墻的私有網絡結構,負載調度器作為所有服務器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口。服務器節點使用私有IP地址。與負載調度器位于同一個物理網絡,安全性要優于其他兩種方式。
IP隧道(IP TUNNEL):簡稱TUN模式,采用開放式的網絡結構,負載調度器僅作為客戶機的訪問入口,各節點通過各自的INTERNET連接直接回應客戶機,而不再經過負載調度器。服務器節點分散在互聯網中的不同位置。具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互通信。
直接路由(direct routing):簡稱DR模式,采用半開放式的網絡結構,與TUN模式的結構類似,但各節點并不是分散在各地,而是與調度器位于同一個物理網絡。負載調度器與各節點服務器通過本地網絡連接,不需要建立專用的IP隧道。
以上三種工作模式中,NAT方式只需要一個公網IP地址,從而成為最易用的一種負載均衡模式,安全性也比較好,許多硬件負載均衡設備就是采用這種方式,相比較而言,DR和TUN模式的負載能力更強大,適用范圍更廣,但節點的安全性要稍差一些。
LVS虛擬服務器:
LVS的負載調度算法:
輪詢(rr):將收到的訪問請求按照順序輪流分配給群集中的各個節點(真實服務器),均等地對侍每一臺服務器,而不管服務器實際的連接數和系統負載。
加權輪詢(wrr):根據真實服務器的處理能力輪流分配收到的訪問請求,調度器可以自動查詢各節點的負載情況,并動態調整其權重。這樣可以保證處理能力強的服務器承擔更多的訪問流量。
最少連接(lc):根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點。如果所有服務器節點性能相近,采用這種方式可以更好地均衡負載。
加權最少連接(wlc):在服務器節點的性能差異較大的情況下,可以為真實服務器自動調整權重,權重較高的節點將承擔更大比例的活動連接負載。
ipvsadm是在負載調度器上使用的LVS群集管理工具,通過調用ip_vs模塊來添加、刪除服務器節點,以及查看群集的運行狀態。需要手動安裝ipvsadm-1.25-9軟件包。
LVS群集的管理工作主要包括:創建虛擬服務器、添加服務器節點、查看群集節點狀態、刪除服務器節點、保存負載分配策略等。
案例1:地址轉換模式(LVS-NAT)
在NAT模式的群集中,LVS負載調度器是所有節點訪問internet的網關服務器,其外網地址172.16.16.172同時也作為整個群集的VIP地址。LVS調度器具有兩塊網卡,分別連接內外網。
對于LVS負載調度器來說,需使用iptables為出站響應配置SNAT轉發規則,以便節點服務器能夠訪問internet。所有的節點服務器(節點1:192.168.7.21節點2:192.168.7.22)、共享存儲(192.168.7.250)均位于私有網絡內,其默認網關設為LVS負載調度器的內網地址(192.168.7.254)。
在負載調度器主機上配置負載調度器,具體操作如下:
1)配置SNAT轉發策略:
修改sysctl.conf文件,開啟路由轉發功能并使修改生效
在nat表的postrouting規則鏈上創建SNAT策略
1) 配置負載分配策略:
ipvsadm –l或ipvsadm -L 顯示ipvadm的策略
ipvsadm –C 清除ipvsadm原有的策略或service ipvsadm stop也可以清除策略
創建虛擬服務器和添加服務器節點:
查看保存結果:
注:
第1條命令:清除原有策略;也可以使用service ipvsadm stop清除策略
第2條命令:創建虛擬服務器,群集的VIP地址為172.16.16.172,針對TCP的80端口提供負載分流服務,使用的調度算法為輪詢。上述操作中,選項-A表示添加虛擬服務器,-t用來指定VIP地址及TCP端口,-s用來指定負載調度算法——輪詢(rr)、加權輪詢(wrr),最少連接(lc)、加權最少連接(wlc)。若希望使用保持連接,還應添加”-p 600”選項,其中600為保持時間(秒)。
第3、4條命令:添加服務器節點,為虛擬服務器172.16.16.172添加兩個服務器節點,IP地址依次為192.168.7.21、192.168.7.22。上述操作中,選項-a表示添加真實服務器,-t用來指定VIP地址及TCP端口,-r用來指定RIP地址及TCP端口,-m表示使用NAT群集模式(-g: DR模式、-i:TUN模式),-w用來設置權重(權重為0時表示暫停節點)。
第5條命令:保存策略,要停止selinux,否則策略不會被保存;也可以使用ipvsadm-save >/etc/sysconfig/ipvsadm保存策略
第6條命令:設置ipvsadm服務為自動啟動
2) 查看群集節點狀態
結合選項-L可以列表查看LVS虛擬服務器,可以指定只查看某一個VIP地址(默認為查看所有),結合選項-n將以數字形式顯示地址、端口等信息。
查看節點狀態:
查看負載連接情況:
上述輸出結果中,Forward列下的Masq對應masquerade(地址偽裝),表示采用的群集模式為NAT,如果是Route,則表示采用的群集模式為DR 。
在共享存儲設備主機上配置共享存儲服務(這里使用NFS發布共享服務),具體操作如下:
NFS服務的實現依賴于RPC(remote process call,遠程過程調用)機制,以完成遠程到本地的映射過程。在RHEL6系統中,需要安裝 nfs-utils、rpcbind軟件包來提供NFS共享服務,前者用于NFS共享發布和訪問,后者用于RPC支持。
將NFS服務器上的/opt/wwwroot目錄共享給群集中服務器節點(這里用到的是RHEL5.5系統)
在/etc/exports配置文件的具體配置如下:
其中客戶機地址可以是主機名、IP地址、網段地址,允許使用*或?通配符;權限選項中的rw表示允許讀寫(ro為只讀),sync表示同步寫入,no_root_squash表示當客戶機以root身份訪問時賦予本地root權限(默認是root_squash,將作為nfsnobody用戶降權對侍)
啟動相關服務:
注意:rhel5系統中RPC服務腳本是portmap而rhel6系統中RPC服務腳本是rpcbind
注意防火墻規則的設置,要不就將iptables服務停止。
在節點服務器主機上配置節點服務器,具體操作如下:
所有的節點服務器均使用相同的配置,包括httpd服務端口、網站文檔內容。實際上各節點的網站文檔可存放在共享存儲設備中,從而免去同步的過程。
安裝httpd軟件包,創建測試網頁
修改/etc/fstab文件,實現自動掛載
啟動httpd服務
其他服務器節點做相同的備配
注:
1、 每一個節點服務器若開啟iptables防火墻,要在防火墻上創建允許http數據流的規則
iptables -I INPUT –p tcp – -dport 80 –j ACCEPT
2、 LVS負載調度器若開啟iptables防火墻,要在防火墻上的INPUT、FORWARD鏈上創建允許http數據流的規則。
iptables -I INPUT –p tcp – -dport 80 –j ACCEPT
iptables -I FORWARD -p tcp – -sport 80 –j ACCEPT
service iptables save
測試LVS群集:
安排多臺測試機,從internet中直接訪問http://172.16.16.172,將能夠看到由真實服務器提供的網面內容
在LVS負載調度器中,通過查看節點狀態可以觀察當前的負載分配情況,對于輪詢算法來說,每個節點所獲得的連接負載應大致相當
刪除服務器節點:
需要從服務器池中刪除某一個節點時。使用選項-d。執行刪除操作必須指定目標對象,包括節點地址、虛擬IP地址。
需要刪除整個虛擬服務器時,使用選項-D并指定虛擬IP地址即可,無需指定節點。
保存負載分配策略
使用導出/導入工具ipvsadm-save/ipvsadm-restore可以保存、恢復LVS策略,操作類似于 iptables規則的導出、導入,通過系統服務ipvsadm也可以保存策略,例如: service ipvsadm save;當然也可以快速清除、重建負載分配策略
service ipvsadm stop //停止服務(清除策略)
service ipvsadm start //啟動服務(重建規則)
原創文章,作者:Anhur,如若轉載,請注明出處:http://www.www58058.com/68308