Linux集群搭建


集群分類:
  HAC(高可用集群)
  盡可能的保障網絡通訊的正常狀態
  實現方案:
   心跳檢測
  故障:
   腦分裂
  出現的問題:
   網絡訪問的中斷
  實現方案:
   keepalived VRRP技術
   heartbeat Linux-HA 腳本監測切換 
 HPC(高性能集群)
  提供單台服務器不能提供的計算能力
  結構:
   任務拆分
   文件共享
   
 LBC(負載均衡集群)
  構成:
   負載調度器
   真實服務器
   共享存儲
  負載調度器實現方案:
   LVS、Nginx
  工作原理:
   四層:LVS ,一次TCP連接完成,由Client與RS(實際服務器)之間完成。D(負載調度器)只起到中間轉發左右,不參與實際流量。
   七層:nginx ,兩次TCP連接,一次由client和D(調度器)完成,一次由D與RS(實際服務器)完成。
  使用場景:
   四層:TCP/UDP的C/S架構,壓力小,並發大。但是識別不精確。
   七層:由域名結構統領的網絡服務器,支持調度多個集群。
  安全性:
   四層:不會攔截SYN(tcp連接請求包)攻擊
   七層:可以攔截SYN攻擊   
 HPC與LBC區別:
  LBC:提升的是單位時間內處理的任務數量提升系統效率
  HPC:通過降低處理單個任務的時間提升系統效率
Nginx:
 調度多個集群操作
 vim nginx.conf
 http{    #http 內配置
  upstream  qixiao.com{    #集群配置區
   server 10.244.16.21:8080;  #集群主機(默認是輪詢,可以支持多端口)
   server 10.244.16.22:80;   #集群主機
  }
  upstream  lingshu.com{    #第二個集群配置區
   server 10.244.16.23:80;
   server 10.244.16.24:80;
  }
   server {      #server區域
    listen       80;
    server_name  www.qixiao.com; #域名
    location / { 
    proxy_pass http://qixiao.com; #當訪問www.qixiao.com時反向代理到qixiao.com集群
    }
   }
   server {      #第二個server區域
    listen       80;   #監聽端口
    server_name  www.lingshu.com; #域名
    location / {
    proxy_pass http://lingshu.com; #當訪問www.lingshu.com時反向代理到lingshu.com集群
    }
   }
  }
LVS:Linux虛擬服務
 數據報文通過網卡層層解析到達內核,內核根據報文的類型交給上層用戶空間的應用執行。在數據包從內核空間傳送到用戶空間過程中,鈎子函數強行獲取報文的使用權限。查看報文的五元組是否符合LVS規則,如果符合,更改目的地址和端口,進行轉發,不符合就還給上層用戶空間由上層應用解析。
 構成:
  ipvs:核心程序,內核內置
  ipvsadm:用戶空間的命令行管理工具
 工作模式:
  LVS-NAT
   SNAT:主要用於局域網使用一個外網IP進行外網訪問
   DNAT:端口映射
   負載調度器位於client和真實RS之間
   負載調度器必須是Linux,真實提供服務的RS可以是任何操作系統
   負載調度器一塊網卡負責提供VIP能力,另一塊網卡與內網RS通訊
   負載調度器與真實RS位於同一個二層環境。
   負載調度器只負責處理入棧以及出棧請求。
  LVS-DR(直接路由模式)
   負載調度器與真實服務器位於同一網絡環境
   負載調度器與真實服務器必須是Linux操作系統,不支持端口映射
   負載調度器只負責處理入棧請求,出棧請求由真實服務器完成。
   VIP地址配置在各個節點之上,但是只有負載調度器擁有通訊權,RS上的lo網卡解析數據報文
   
  LVS-TUN(隧道模式)
   負載調度器與真實服務器必須是Linux操作系統
   負載調度器與真實服務器必須擁有公網IP或者能被路由
   負載調度器與真實服務器必須支持數據包二次封裝
   負載調度器處理入棧請求,出棧請求由真實服務器完成
  
  難度: NAT < DR < TUN
  並發量:RD > TUN > NAT
  使用量:NAT > DR > TUN
 調度算法:
  固定算法(靜態調度算法):只根據算法本身調度,不考慮服務器本身
  動態算法(動態調度算法):處理考慮算法本身,還要考慮服務器狀態。【消耗CPU資源,但是更加智能】
 靜態:
  RR:輪詢,將每次用戶的請求分配給后端的服務器,從第一台服務器開始到第N台結束,然后循環
  WRR:加權輪詢,按照權重的比例實現在多台主機之間進行調度
  SH:源地址散列,將同一個IP的用戶請求,發送給同一個服務器。
  DH:目標地址散列,將同一個目標地址的用戶請求發送給同一個真實服務器(提高緩存的命中率)
 動態:
  LC:最少連接,將新的連接請求,分配給連接數最少的服務器。活動連接*256+非活動連接
  WLC:加權最少連接:特殊的最少連接法,權重越大承擔的請求數越多(活動連接*256+非活動連接)/權重
  SED:最短期延遲,特殊的WLC算法,(活動連接+1)*256/權重
  NQ:永不排隊,特殊的SED算法。如果發現有連接數為0直接分配。如果全部不為0。則按SED算法分配
  LBLC:特殊的DH算法,既能提高緩存命中率,又要考慮服務器性能。緩存壓力達到一定閥值,就將流量分發給其他服務器。
  LBLCR:LBLC+緩存,盡可能提高負載均衡和緩存命中率的折中方案
 持久連接:
  1、優先於任何算法最先匹配
  2、可以和任意算法進行配合處理,優先級最高
  3、存儲數據在內存分頁中(內存空間)
  分類:
  PCC(持久客戶端連接)將來自於同一客戶端的所有請求定向至選定的RS,只要IP相同,分配的服務器始終相同
   ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120
  PPC(持久端口連接)將來自於同一個客戶端對同一個服務(端口)的請求,定向至選定的RS
   ipvsadm -A -t 172.16.0.8:80 -s rr -p 120
  PFMC(持久防火牆標記連接)將來自於同一客戶端對指定服務(端口)的請求,始終定向至此選定的RS,不過可以將兩個毫不相干的服務定義為一個集群服務。
   iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 80 -j MARK --set-mark 10
   iptables -t mangle -A PREROUTING -d 172.16.0.8 -p -tcp -dport 443 -j MARK --set-mark 10
   service iptables save
   上邊兩條表示:將訪問172.16.0.8的80和443端口的流量打上10標簽
   ipvsadm -A -f 10 -s wlc -p 120  表示將標簽為10的流量執行wlc算法,持久化連接時間為120秒。持久化時間內發生連接,時間增加120秒。最多不超過200秒【持久化連接時間不宜過大或過小】
LVS-NAT模式搭建:
 NFS服務器:
   mkdir /share  創建共享目錄
   chown nfsnobody:nfsnobody /share/  NFS服務默認使用nfsnobody用戶,將共享目錄屬主和屬組更改為nfsnobody
   yum install -y nfs
   vim /etc/exports
   /share 10.244.16.0/24(rw,sync)     #可以共享多個網段。每一行是一個共享。三個字段【共享目錄路徑 共享網段 共享權限】
  service rpcbind restart  #rpcbind服務是nfs同步數據的服務
  service nfs start  #開啟nfs服務
  chkconfig rpcbind on
  chkconfig nfs on
  showmount -e [NFS服務器IP地址]    測試NFS服務器是否了連接
  注:如果出現權限問題。可以嘗試將apache用戶加入到nfsnobody組。用戶提交的文件就可以寫入共享服務器
 負載調度器:
  yum install -y ipvsadm
  vim /etc/sysctl.conf
   net,ipv4.ip_forward=1
  sysctl -p
  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.244.16.30
  ipvsadm -A -t 10.244.16.30:80 -s rr
  ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.1:80 -m
  ipvsadm -a -t 10.244.16.30:80 -r 192.168.1.2:80 -m
  ipvsadm -Ln --stats
  
  
LVS-DR模式搭建:
 NFS服務器:同上
 負載調度器:
  關閉NetworkManager服務,並設置開機不自啟
   service NetworkManager  stop
   chkconfig NetworkManager off
  
  添加一塊網卡,或編輯虛擬網卡
   cp ifcfg-eth0 ifcfg-eth0:0
   vim ifcfg-eth0:0
    DEVICE=eth0:0
    IPADDR=10.244.16.100   #vip地址
    PREFIX=24
   ifup eth0:0    #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
  修改內核參數,防止相同的網絡地址廣播沖突
   vim /etc/sysctl
     net.ipv4.conf.all.send_redirects = 0   
     net.ipv4.conf.default.send_redirects = 0   
     net.ipv4.conf.eth0.send_redirects = 0
   sysctl -p      #刷新內核參數
   modprobe ip_vs      #查看內核是否加載,無法應則以加載
   cat /proc/net/ip_vs  #參看版本,確認知否正確加載
  安裝LVS管理工具ipvsadm
   yum install -y ipvsadm
  設置DR模式的負載調度規則
   ipvsadm -A -t 10.244.16.100:80 -s rr     #10.244.16.100為VIP,21和22為實際RS服務器IP
   ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.21:80 -g 
   ipvsadm -a -t 10.244.16.100:80 -r 10.244.16.22:80 -g
  ipvsadm -Ln 查看調度規則
  保存配置:
   service ipvsadm save
   chkconfig ipvsadm on
 實際RS1:
  關閉NetworkManager服務,並設置開機不自啟
   service NetworkManager  stop
   chkconfig NetworkManager off
  修改內核參數,防止相同的網絡地址廣播沖突
   vim /etc/sysctl
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.default.arp_ignore = 1
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
   sysctl -p   刷新內核參數
  配置虛擬回環網卡lo:0用於解析數據報文
   cp ifcfg-lo ifcfg-lo:0
   vim ifcfg-lo:0
    DEVICE=lo:0
    IPADDR=10.244.16.100
    NETMASK=255.255.255.255
   ifup eth0:0    #如果虛地址起不來,則查看NetworkManager服務有沒有關閉。一般是NetworkManager服務與network服務沖突所致,建議重啟一下
  mount -t nfs  [共享存儲:/路徑] [網站根目錄]
 實際RS2:與RS1類似
 

 
 


免責聲明!

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



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