群集簡介和LVS_nat模式配置

群集簡介:

群集(或集群)和稱呼來自于英文單詞cluster,表示一群、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分于單個服務器。

根據實際企業環境的不同,群集所提供的功能也各不相同,采用的技術細節也可能各有千秋,但無論哪種群集,都至少包括兩臺節點服務器。而對外表現為一個整體,只提供一個訪問入口(域名或IP地址),相當于一臺大型計算機。根據群集所針對的目標差異,可分為以下三種類型。

負載均衡群集(laod balance cluster:以提高應用系統的響應能力,盡可能處理更多的訪問請求,減少延遲為目標,獲得高并發、高負載的整體性能。LB的負載分配依賴于主節點的分流算法,將來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力。

高可用群集(high availability cluster):以提高應用系統的可靠性,盡可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果。HA的工作方式包括雙工、主從兩種模式——雙工即所有節點同時在線,主從則只有主節點在線,但當出現故障時從節點能自動切換為主節點。

高性能運算群集(high performance computer cluster):以提高應用系統的CPU運算速度,擴展硬件資源和分析能力為目標,獲得相當于大型、超級計算機的高性能運算(HPC)能力.通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力。

1、負載均衡群集的分層結構:

在典型的負載均衡群集中,包括三個層次的組件。

第一層,負載調度器:這是訪問整個群集系統的唯一入口,對外使用所有服務器共有的VIPvirtual IP,虛擬IP)地址,也稱為群集IP地址。通常會配置主、備兩臺調度器實現熱備份,當主調度器失效以后平滑替換至備用調度器,確保高可用性。

第二層,服務器池:群集所提供的應用服務(如HTTP、FTP)由服務器池承擔,其中的每個節點具有獨立的RIPreal 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地址,從而成為最易用的一種負載均衡模式,安全性也比較好,許多硬件負載均衡設備就是采用這種方式,相比較而言,DRTUN模式的負載能力更強大,適用范圍更廣,但節點的安全性要稍差一些。

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。所有的節點服務器(節點1192.168.7.21節點2192.168.7.22)、共享存儲(192.168.7.250)均位于私有網絡內,其默認網關設為LVS負載調度器的內網地址(192.168.7.254)。

在負載調度器主機上配置負載調度器,具體操作如下:

1)配置SNAT轉發策略:

修改sysctl.conf文件,開啟路由轉發功能并使修改生效

1.png

2.png

3.png

nat表的postrouting規則鏈上創建SNAT策略

4.png

1)  配置負載分配策略:

ipvsadm –lipvsadm -L 顯示ipvadm的策略

ipvsadm –C 清除ipvsadm原有的策略或service  ipvsadm  stop也可以清除策略

創建虛擬服務器和添加服務器節點:

5.png

查看保存結果:

6.png

注:

1條命令:清除原有策略;也可以使用service ipvsadm stop清除策略

2條命令:創建虛擬服務器,群集的VIP地址為172.16.16.172,針對TCP80端口提供負載分流服務,使用的調度算法為輪詢。上述操作中,選項-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模式、-iTUN模式),-w用來設置權重(權重為0時表示暫停節點)。

5條命令:保存策略,要停止selinux,否則策略不會被保存;也可以使用ipvsadm-save >/etc/sysconfig/ipvsadm保存策略

6條命令:設置ipvsadm服務為自動啟動

2)  查看群集節點狀態

結合選項-L可以列表查看LVS虛擬服務器,可以指定只查看某一個VIP地址(默認為查看所有),結合選項-n將以數字形式顯示地址、端口等信息。

查看節點狀態:

7.png

查看負載連接情況:

8.png

上述輸出結果中,Forward列下的Masq對應masquerade(地址偽裝),表示采用的群集模式為NAT,如果是Route,則表示采用的群集模式為DR 。

在共享存儲設備主機上配置共享存儲服務(這里使用NFS發布共享服務),具體操作如下:

NFS服務的實現依賴于RPCremote  process  call,遠程過程調用)機制,以完成遠程到本地的映射過程。在RHEL6系統中,需要安裝 nfs-utils、rpcbind軟件包來提供NFS共享服務,前者用于NFS共享發布和訪問,后者用于RPC支持。

NFS服務器上的/opt/wwwroot目錄共享給群集中服務器節點(這里用到的是RHEL5.5系統)

9.png

/etc/exports配置文件的具體配置如下:

10.png

其中客戶機地址可以是主機名、IP地址、網段地址,允許使用*?通配符;權限選項中的rw表示允許讀寫(ro為只讀),sync表示同步寫入,no_root_squash表示當客戶機以root身份訪問時賦予本地root權限(默認是root_squash,將作為nfsnobody用戶降權對侍)

啟動相關服務:

注意:rhel5系統中RPC服務腳本是portmaprhel6系統中RPC服務腳本是rpcbind

11.png

注意防火墻規則的設置,要不就將iptables服務停止。

在節點服務器主機上配置節點服務器,具體操作如下:

所有的節點服務器均使用相同的配置,包括httpd服務端口、網站文檔內容。實際上各節點的網站文檔可存放在共享存儲設備中,從而免去同步的過程。

安裝httpd軟件包,創建測試網頁

12.png

修改/etc/fstab文件,實現自動掛載

13.png

啟動httpd服務

14.png

其他服務器節點做相同的備配

注:

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負載調度器中,通過查看節點狀態可以觀察當前的負載分配情況,對于輪詢算法來說,每個節點所獲得的連接負載應大致相當

15.png

刪除服務器節點:

需要從服務器池中刪除某一個節點時。使用選項-d。執行刪除操作必須指定目標對象,包括節點地址、虛擬IP地址。

16.png

需要刪除整個虛擬服務器時,使用選項-D并指定虛擬IP地址即可,無需指定節點。

17.png

保存負載分配策略

使用導出/導入工具ipvsadm-save/ipvsadm-restore可以保存、恢復LVS策略,操作類似于 iptables規則的導出、導入,通過系統服務ipvsadm也可以保存策略,例如: service ipvsadm save;當然也可以快速清除、重建負載分配策略

service ipvsadm stop  //停止服務(清除策略)

service ipvsadm start  //啟動服務(重建規則)

 

原創文章,作者:Anhur,如若轉載,請注明出處:http://www.www58058.com/68308

(0)
AnhurAnhur
上一篇 2017-02-13
下一篇 2017-02-13

相關推薦

  • Linux基礎知識之history命令詳解

     該博文以CentOS6.8_x86_64系統為基礎,Xshell 5遠程連接CentOS系統,以root身份登錄系統。 為什么要學習history命令?     history命令是Linux的一個內嵌的shell命令,history命令的使用有時會大大縮短我們輸入命令的時間,達到節省命令快捷操作的要求。學…

    Linux干貨 2016-07-27
  • HAproxy簡單配置

    用途:TCP/HTTP反向代理,四層負載均衡,適合高可用環境。Linux6.4版本后haproxy已隨base倉庫收錄進來。文檔:http://cbonte.github.io/haproxy-dconv/主程序:/usr/sbin/haproxy 主配置文件:/etc/haproxy/haproxy.cfg啟動文件:/usr/lib/systemd/sys…

    2017-05-17
  • n28-第四周

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 答:install 復制文件并設置屬性 -d, –directory:復制所有參數為目錄名 -m, –mode=MODE:設置文件屬性,相當于chmod # install -d -m u=rwx /e…

    Linux干貨 2017-12-24
  • 第三天作業

    1、列出當前系統上所有已經登錄的用戶的用戶名。注意:同一個用戶登錄多次,則只顯示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | sort | uniq [root@localhost ~]# who (unknown) :0         &nbsp…

    Linux干貨 2016-08-30
  • 流式傳輸的兩大主流種類及流式傳輸特點

     流式傳輸定義很廣泛,現在主要指通過網絡傳送媒體(如視頻、音頻)的技術總稱。其特定含義為通過Internet 將影視節目傳送到PC機。實現流式傳輸有兩種方法:實時流式傳輸(Realtime streaming)和順序流式傳輸(progressive streaming)。(百度百科)     在網絡上傳輸音/視頻(英文…

    Linux干貨 2015-04-10
  • 進程管理工具

    進程管理工具 kill man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 kill -1 進程編號 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 9) SIGKILL: 殺死正在運行的進程 再生進程 kill -9 殺不掉 15) SIGTERM:終止正在運行的進程 kill -15/或不寫(默認) +進程編號?!?/p>

    Linux干貨 2016-09-11
欧美性久久久久