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+緩存,儘量提升負載均衡和緩存命中率的折中方案
 持久鏈接:
  一、優先於任何算法最早匹配
  二、能夠和任意算法進行配合處理,優先級最高
  三、存儲數據在內存分頁中(內存空間)
  分類:
  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相似
相關文章
相關標籤/搜索