LVS集群之NAT模式實現


LVS集群之NAT模式實現
一、集群的種類
集群系統主要分為
1、HA:高可用集群,又叫雙機熱備。
  (a)原理
     2台機器A,B,正常是A提供服務,B待命閑置,當A宕機或服務宕掉,會切換至B繼續提供服務
  (b)常用的高可用開源軟件:heartbeat和keepalived(可以做負載均衡)
 
2、LB:負載均衡集群
3、HPC:高性能計算集群
 
二、LB集群
1、實現手段
     硬件:F5負載均衡器
     軟件:LVS(4層,網絡層),  Nginx(7層,應用層)
 
2、負載均衡架構圖
說明:
LVS集群使用三層架構
第一層:負載均衡層(Load Balancer)
位於整個集群系統的最前端,由一台或多台負載調度器(Director Server,以下簡稱dir)組成。
dir的作用類似一個路由器,它含有為完成LVS功能所設定的路由表,通過這些路由表把用戶的請求分發給服務器群組層的應用服務器(Real Server)
ps:客戶認為服務是來自一個虛擬IP地址上
 
第二層:服務器群組層(Server Arrary)
由一組實際運行應用服務的機器組成。Real Server(以下簡稱rs)可以是Web服務器、Mail服務器、FTP服務器、DNS服務器等
 
第三層:共享存儲層(Shared Storage)
是為所有rs提供共享存儲空間和內容一致性的存儲區域,一般由磁盤陣列設備組成。
一般可以通過NFS網絡文件系統共享數據(在繁忙的業務系統中,性能並不太好),此時可以用集群文件系統,如 Red Hat 的 GFS 文件系統,Oracle 提供的 OCFS2 文件系統等
 
3、LVS分3種模式
     (a)NAT(網絡地址映射):通過網絡地址轉換的方法來實現調度 
     優點:支持所有操作系統及私有網絡,且只需一個公網 IP 地址
     缺點:用戶請求和響應報文都必須經過dr地址重寫,當用戶請求越來越多時,調度器的處理能力將成為瓶頸。
 
     (b)DR(直接路由模式):通過改寫請求報文的MAC地址,將請求發送到 rs,而 rs 將響應直接返回給客戶 ——》 性能最好
 
     (c)TUN(IP隧道模式):dr采用IP隧道技術將用戶請求轉發到某個rs,而這個rs將直接響應用戶請求,不再經過dr ——》dr只處理用戶的報文請求,從而使集群系統吞吐量大大提高
      ps:還有第 4 種模式 FULLNAT(淘寶ospf+lvs)
 
 
################   搭建來了   ###################
 
三、搭建LVS-NAT模式集群實現負載均衡
1、分發器 director 配置
  ——  網絡配置前期工作
 (a)配置網絡環境,增加網卡eth2(需要添加HWADDR不同的網卡,我的eth1跟eth0是一樣的,所以只能用eth2)
 
 

 

 (b)生成eth2配置文件,配置虛擬 IP 地址為 10.0.69.132

    cp /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth2
   (i)DEVICE=eth2
      (ii)IPADDR=10.0.69.132(跟物理機同一網段)
     
     (iii)GATEWAY=10.0.69.1
 
 (c)重啟網絡服務:service network restart
  內網ip:192.168.131.132
  外網ip:10.0.69.132
 

 物理機可以ping通虛擬 IP 

 

 

 
—— 開啟路由轉發功能,安裝配置LVS-NAT
1、安裝lvs核心軟件包 yum install -y ipvsadm
2、寫腳本管理(開啟路由轉發、添加虛擬服務、添加虛擬服務后端的real server)
vim /usr/local/sbin/lvs_nat.sh

參數說明:

-A:增加一個虛擬服務   
-a:增加real server
-r:指定real server 的 IP地址
-t:表示TCP服務       
-s:指定調度算法   rr:輪詢算法(對調度算法感興趣的大家可以查查~)
-m(masquerade):也就是NAT方式的LVS
 
3、執行腳本 sh !$
4、查看規則 ipvsadm -ln
 

 

 
二、真實服務器real server配置
rs1: 192.168.131.110
rs2: 192.168.131.131
 
rs1和rs2都要修改網卡配置文件:  /etc/sysconfig/network-scripts/ifcfg-eth0
1、網關GATEWAY都要指向分發器 dir 的 IP 192.168.131.132) ——》 一開始我懵逼,寫成vip了,囧。一定要理解原理(so important)
 
2、重啟網卡生效:ifdown eth0; ifup eth0
 
 
三、測試
1、修改nginx的默認頁面(好區分)
rs1:echo "192.168.131.110 master" > /usr/share/nginx/html/index.html
rs2:echo "192.168.131.131 slave"   > /usr/share/nginx/html/index.html
 
2、real server(rs1,rs2)開啟 nginx 服務:/etc/init.d/nginx start
(httpd也可以:yum install httpd)
其實就是開啟80端口的web服務(記得查下 netstat查看是否監聽80端口)
注意:分發器 dir 並沒有監聽 80 端口
     因為 dir 是一個路由器,只負責轉發 80 端口上的數據給后端,自己並不處理請求
 
dir 訪問外網 IP(10.0.69.132)
(1)不設權重測試(上面腳本內容就是)
 

 

(2)設置權重測試(rs1: 3   rs2: 1)
 
 
結果:
 

 

拓展:

ipvsadm -ln --stats  ==>  查看分發情況

ipvsadm -ln --rate  ==>   查看速率

ipvsadm -C  ==> 清空規則 

 

ps:如果curl無法成功,檢查下防火牆是否關了(iptables -F;setenforce 0) ————》 懵逼的我被這里卡了很久 = =

大家一定要記得關防火牆哇 o(>ω<)o
     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM