lvs 集羣

 

Cluster 集羣  將按照某種組織方式將多臺電腦組織起來完成某種特定的任務
 三種集羣類型:
1. LB ,load Balancing負載均衡  大容量,在一定程度上可以實現高可用的目的
2. HA  High Availabilty高可用集羣  實時在線 一年在線時間 99.999%  至少兩個主機同時在工作一旦   一個主機down 機了,另一臺主機馬上替換。
兩臺主機 只有一臺在工作,另一臺只是做好隨時替換準備
3.  HP  High Perfomance高性能 集羣   大量運算 例: 人口統計 天氣預報
硬軟件 F5 ,lvs,  HAPROXY
Scale on 向上擴展  用更好的性能計算機 來替代性能更差的 那個計算機
Scale  out  向外擴展  使用 多臺計算機
LB:負載器軟件
    lvs,  haproxy
    Lvs  開源軟件 作者 作者章文嵩 
          缺點 單點故障 ,如果負載較大 會down機
         
         
 Lvs 提供至少10種算法
    動態
    靜態
   高可用集羣
SAN  塊級別
  要保證 兩個服務器 不在互搶 a 主機就要隔一段宣告一下自己還活着
  
  LB 負載 均衡  Director  負責接受客戶端請求,並將請求按照某種算法分步到後臺真正提供 服務器上。基於硬件(F5)來實現 ,也可以基於軟件來實現  
      lvs   haproxy        
   HA  高可用集羣:
         軟件: heartbeat   corosync+openais RHCS 紅帽
         Ultramokey    keepalive  開源軟件   
         共享存儲
         兩臺服務器實現 共享文件服務器   效率比較低
          使用專業共享  san  比較昂貴 通過光纖連到san服務器上,輸出塊級別
                             
 LVS : 虛擬服務器    稱四層轉發 本身是不會修改用戶ack
   真正提供節點 realservers
 工作模式三種型:
     Net
     DR  路由
     隧道TUN      不能實現端口映射 後兩個
 Lvs、 功能:
    1.併發能力
     2.  容錯
     3 適用性 或收縮 服務器
 
VIP  虛擬ip地址  並不提供服務,只是轉發到後臺
RIP    客戶端真正提供 工作
DIP  轉發器  用來和D/RIP 進行聯繫的地址
CIP 客戶端 ip地址  公網ip


Type of   lvs
Lvs –net 模型
     
      1.   DIP RIP  必須在統一子網
       2.   RIP 地址通常是私有地址
        3.   RIP的網關 必須指向DIP
       4. 端口轉換    地址轉換
        5. 任何操作系統分都可做rip  只要有web
         6. 負載均衡 瓶頸  壓力 比較大

 lvs –dr   直接路由 模式
    1. 集羣節點 必須在連在物理當中 
    2. rip 可以使用公網ip
    3. director 僅接受用戶發來請求 而real servers響應的信息則  不在響應director
     4 .  集羣節點 網關不能指向 dip 
    5. 不支持端口轉換
    6.  絕大多數操作系統 都能實現real servers   因爲支持同一塊網卡 配置多ip

Lvs- tun 隧道
   1 . 集羣節點和director節點不必再同一個網段
   2. rip必須使用公網ip
   3. director 只需要處理進來請求,不需要處理出去請求
   4. 響應請求一定不能進過director
   5. director不能做端口映射
   6. 只能使用那些ip隧道 協議的操作系統 

  

Lvs 調動方法 10種算法:
    靜態調動     靜態算法  缺陷 不考慮後端實際的當前負載情況
              RR   Round-robin  輪調    輪替意思
              WRR   加強論調    區分後端服務器響應能力 定義權重  2:1 的比例 
              DH   目標地址 hashing    提高命中緩存的    將來自同一個用戶的請求始終轉發到同一個server  
              SH     源地址 hashing        將來自同一個用戶請求始終轉發到同一個 route     
    動態調用    算法   檢查後端 的連接數    活動和非活動狀態連接
              Lc 最少活動連接數     算法   連接數=活動數*256+非活動連接數、
                         同時檢查 後臺 活動數和非活動數 ,其中連接數最少的會自動連接下一個連接
                        Overhead  最少 活動連接數   
              Wlc 加權最少連接數    考慮非活動連接  算法:連接數=(活動數*256+非活動數)÷權重
                默認 調度方法
                       Wlc  是最常用的算法
              Sed   比例10:1    不考慮非活動連接數 是對wlc 改進 連接數=(活動連接數+1)*256           sed——>nq
             Nq 算法   永不排隊 
           Lblc 基於本地最少連接 算法 考慮後臺算法  支持權重  是將 dh和wlc 結合起來   用在什麼場景:    當一個網絡有多個路由和防火牆的時候對用戶請求平均分攤負載到防火牆上的時候
           Lblcr 基於本地 帶複製最少連接書 對上一個改進 考慮後臺負載 支持權重的  
           

Lvs 跟 iptables 工作類似
  Lvs  開源軟件
   ipvsadm  工作在 內核中 默認是直接做進內核的               
查看 : grep –i ipvs  /boot/canfig-2.6.18.164.e15                       
                                                             
   Ipvsadm 功能:                                     tcp  udp                   端口號  防火牆
         1,集羣服務      使用ipvsadm  -A 參數 –t  -u  都要指定 vip地址  port  –f
          2,realserver                         
          3.查看
   配置 lvs –net 模型
         安裝操作系統
           提供 web
           設置默認路由  指向dip
           安裝lvs
           配置 lvs
 需要 三個 服務器
Ipvsadm  -A  -E –t  -u  vip 地址   -s
   -A 添加服務    -E  修改一個服務      -s 指定調度算法  
  ipvsadm  -D  -t|-u  刪除服務
         -a|-e  -t|-u   vip  -r  realserver –g|-i -w 指定默認類型 
                  | 表示或                        指定權重
          Ipvsadm  –d –t  vip:port -r  readserver 刪除一個readserver
                      -s 保存規則到某個規則裏
                      -c 清空規則
                     -R 恢復
                     -L  查看
                     -z 清空計數器
                     -n 顯示數據                                       

 


 
Lvs  Persistence持久性:  給客戶端的所有請求必須來自於同一臺real server,就要用到 持久性
Pcc  ppc   ftp  
持久連接模板    其實就是內存中的一段空間  
-p n  n指的是持久時常  啓動持久連接
每一個用戶的記錄條目 都有 一個倒數計數器,一旦這個計時器超時了,這個條目就會在模板中刪除。
超出了持久連接用戶依然在訪問  計時器 默認 加長2分鐘

1.類型 PCC  持久客戶端連接
      來自同一個用戶訪問 都被定義到同一臺realy server
     
2.PPC  端口連接
   
3.pnmpp持久防火牆 標誌連接
                  端口的引擎關係
4. FTP 連接  兩個獨立的 連接,
           5. 超時連接
 端口0  指的是任意服務
PCC   用0 作爲端口  並不常用
  /sbin/ipvsadm –A –t ip:0 –s rr –p 300  -p指的是持久性時間
PPC  常用

防火牆標記:
  Iptables –t mangle –A  PREROUTING  -d ip –p tcp –-dport 80 -j MARK --set-mark 10

 

 

  ========================================
     =====LVS-NAT 的實驗 


    一個Director  打開路由功能,在定義集羣服務,添加realserver ,然後驗證
    兩個 realserver  地址在同一個網段,把網關指向 DIP,  要用橋接的
   
   配置 ip地址   
在 realserver 1上配置 ip地址
#ifconfig eth0  ip+mask
網關
# route add default gw  網關地址
安裝# yum install httpd 
 同樣在 realserver 2配置
#ifconfig  eth0  ip+mask
# route add default gw  網關地址
# yum install  httpd

在 real 1和real 2 上 都做
 爲了 驗證LAM 需要 把
 # yum install mysql-server php php-mysql

爲了最後能看到效果: 在real 1和real 2上做 個網頁

real 1#vim /var/www/html/index.html
   <h1>real 1 server 1 ceshi</h1>
# hostname localhost
# service httpd start

real 2#vim /var/www/html/index.html
   <h1>real 2 service 2 ceshi</h1>
# hostname localhost
# service httpd start

配置director ip  在這裏Director 用的是兩塊網卡
 # ifconfig eth0  ip
 #ifconfig eth1  ip
 
 看一下路由功能是否打開

          
          
 開始配置 ipvsadm
 在 director 配置
 # ipvsadm -A -t  ip地址:80  -s  rr      :80指的是端口
# ipvsadm -L -n 查看一下配置
添加 real 1
#ipvsadm -a -t ip地址:80 -r  real1的地址 -m
#ipvsadm -a -t ip地址:80 -r  real2的地址 -m

查看
# ipvsadm -Ln

可以在 瀏覽器上測試了
輸入 director  ip地址/index.html


修改算法:

#ipvsadm  -E -t ip地址:80 -s wlc
查看
#ipvsadm -Ln

改權重
#ipvsadm -e -t ip地址:80 -r real 2的ip -m -w 3     用-w 把權重改爲3
查看
#ipvsadm -Ln

 


LVS -DR 實驗

 

實驗搭建環境:
Director: eth0:0  VIP 192.168.0.110  橋接
             eth0 DIP192.168.0.10
real server 1:eth0  rip  192.168.0.12    橋接
                   lo:0   vip 192.168.0.110  
 real server 2 :eth0   rip 192.168.0.13   橋接
                     lo:0   vip 192.168.0.110 
   Director:
DIP 要配置在接口上,VIP要配置在接口別名上
 VIP:必須是公網
 rip :可以不是公網,可以不再同一網段
 real server:
   RIP:要配置接口上,VIP要配置在 lo的別名上
 在 real 1 配置ip地址

 # ifconfig eth0 192.168.0.12/24
 

 

 #ifconfig lo:0 192.168.0.110 broadcast 192.168.0.110 netmask 255.255.255.255 up
 #route add -host 192.168.0.110 dev lo:0
 #route -n   查看
 
 
 在real 2 上配置ip
 
 # ifconfig eth0 192.168.0.13/24
 

#ifconfig lo:0  192.168.0.110 broadcast 192.168.0.110 netmast 255.255.255.255 up
#route add -host 192.168.0.110 dev lo:0
  #route -n
 
   
 在director 配置
 #ifconfig eth0 192.168.0.10/24
 #ifconfig eth0:0 192.168.0.110 broadcast 192.168.0.110 netmask 255.255.255.255 up
 #route add -host 192.168.0.110 dev eth0:0
 #service network restart
 
 #ipvsadm -A -t 192.168.0.110:80 -s wlc
 #ipvsadm -a -t 192.168.0.110:80 -r 192.169.0.12 -g -w 2
 #ipvsadm -a -t 192.168.0.110:80 -r 192.169.0.13 -g -w 4
 #ipvsadm -Ln 查看                 
 
 加入要保持頁面一樣,另外在準備一臺服務器專門存放網頁信息的,在通過nfs共享方式掛載到 real server 的網頁目錄下,
 持久連接:
 #ipvsadm -E -t 192.168.0.110:80 -s wlc -p 3600
 #ipvsadm -Ln

 

高可用集羣 HA
    一年down 機時間 99.99999%
兩臺服務器 同時工作
模式 active/passive   一個處於活動,一個處於被用
       active/active    兩個都處於活動 ,通過不同服務來實現的
 使用共享式的raid 機制 
 raid  和nfs 區別  
  raid 是通過總線 連接在服務器上的
 nfs  是通過網絡  方式共享
信息層  messagehg  傳遞心跳信息 基於udp
  隔離 級別:
      節點級別 stonith   切斷電源
      資源級別 fence  把資源資源截斷
  HA: quorum    stonith
n/n-1  有一個空閒的服務器
n/m  m小於n的 ,有m 個空閒服務器
 集羣的分區:導致資源掙用
法定代表人數:集羣 必須超過半數以上 纔算是正常
        腦裂 和仲裁:在某種情況下,由於底層通知錯誤,或者傳遞的信息的介質出現錯誤,會出現資源爭用的情況。 稱之腦裂
Dc 指定的協調員 就是頭 ,爲了避免資源爭用   定義故障優先級
  
 
共享 存儲:
 DAS   直接附加存儲
       RAID  共享式的
       SCSI   磁盤
NAS  網絡共享存儲
      文件級別共享
SAN 存儲區域網絡
      塊級別的   單獨主機或單獨服務器
       SCSI 
        Fc   通過光網絡傳輸  但是交換機接口很貴
         Ipsan (iscsi) 帶寬是有限的   共享是塊 級別
        
   cluster filsesystem  集羣文件系統:
     工作在HA
     開源軟件軟件 :
      GFS2    readhat 公司  
     Ocfs   都做進內核中了
    
     故障轉移域: 分組 
     怎麼定義 兩個節點的 集羣法定票數:rhcs 裏quorum disk 共享磁盤    
      


      
  4個層次:
      1. 最底層 :基礎架構層   傳遞心跳信息的 ,靠單獨插件來實現
       2.成員層 :對整個集羣發定票數計算,重新收斂狀態信息  簡稱ccm,
                承上啓下  接收不到另外一個心跳,重新計算
      3.資源分配層: crm核心  叫集羣管理器   crm維護cib 集羣信息機庫   cib 是以xml文件
                   策略 pe和te   只能運行在DC上, 無論任何 時候一個集羣 節點時候發生了改變都必須要通過DC來實現   
                    pe 是做策略的  te 是做執行的
                      
      4.資源代理層 : 啓動  停止   獲取信息   lrm 是執行crm傳遞 過來在本地執行某個資源監控或停止
    
   Lrm  管理本地 , Crm   管理全局的
資源 可以是ip 也可以是服務

Web
  Ip   storage  httpd 要按照順序啓動
HA: 層次
  成員關係層 :  繪製整個集羣中拓撲圖
           Ccm  向其它層傳遞信息
  資源分配層   crm ,lrm,CIB
         Crm集羣資源管理器  直接調用下層  最核心的      
          DC  指定協調員  有PE和TE   有te執行 
         Lrm 本地資源管理器   
資源代理層: ra   要分組  資源約束
         Ra 資源代理   格式 lsb,ocf,heartbeat
linux HA:
   heartbeat  有三個版本 (v1,v2,v3)
          v2版本 需要手寫 xml ,但官方提供了 cib.Xml 
   keepalive             
   uitramonkey
   corosync/openais  結合起來使用  紅帽6版本  在用
   RHCS (luci  riccii) 紅帽的  完整的解決方案 
         提供web   cman 基於命令行的管理工具 ccsd
       
/etc/ha.d/hd.cf 對心跳信息加密的
/etc/ha.d/haresoucs 集羣資源管理器
/etc/ha.d/quthkeys 

 

 啓動服務 一定要手動啓動 ,而且確保下次啓動不能讓它自動啓動
實驗 配置靜態地址,


搭建環境:

node 1: eth0  192.168.0.11   橋接 
           eth1    192.168.11.11 通過虛擬通道連接  心跳測試
   提供 web 服務,httpd
node 2 : eth0   192.168.0.12    橋接
              eth1  192.168.11.12   通過虛擬通道 連接 心跳測試
    提供web 服務,httpd
 向外提供服務   公網 ip 192.168.0.10
配置 node 1 上的節點:
 #vim /etc/sysconfig/network-scripts/ifcfg-eth0
 把 BOOTPROTU=static
  IPADDR=192.168.0.11
  NETMASK=255.255.0.0
 #vim /etc/sysconfig/network-scripts/ifcfg-eth1
 把 BOOTPROTU=static
添加  IPADDR=192.168.11.11
       NETMASK=255.255.0.0
#vim /etc/sysconfig/network
如果有網關 把 網關刪除
#service network restart
#vim /etc/sysconfig/network
 HOSTNAME=node1.a.org
 #hostname node1.a.org
#vim /etc/host
添加 192.168.0.11   node1.a.org   node1
        192.168.0.12  node2.a.org   node2

#yum install httpd

編輯個網頁 爲了 驗證:
# vim /var/www/html/index.html
<h1> node 1.a.org</h>
#service httpd start
#service httpd stop   停止服務
#chkconfig httpd off  關閉不讓開機自動啓動

接下來裝集羣軟件:
下載 軟件包

 


# yum localinstall *.rpm --nogpgcheck
#cd /etc/hd.d
#cp ha.cf haresource authkeys /etc/ha.d
#vim ha.cf
把 logfile /var/log/ha-log 把#去了
在 bcast let le2   # Solaris  行後 添加
bcast eth1
 

#vim authkeys
最後 添加
auth 2
2  sha1 suibianxie       後邊加密串隨便寫的
#chown 400 authkeys  改權限
#vim haresources
在 最後 添加:
node1.a.org    192.169.0.10/16/eth0/192.168.255.255 httpd
#./ha_propagate   是個執行腳本
#scp haresources node2:/etc/ha.d
# /etc/init.d/heartbeat start 啓動
#tail /var/log/ha-log   查看
#ssh node2 --‘/etc/init.d/hearthear start'  啓動第二個節點

 

配置node 2
 #vim /etc/sysconfig/network-scripts/ifcfg-eth0
把 BOOTPROTU=static
添加 IPADDR=192.168.0.12
      NETMASK=255.255.0.0

 #vim /etc/sysconfig/network-scripts/ifcfg-eth1
把 BOOTPROTU=static
添加 PADDR=192.168.11.12
      NETMASK=255.255.0.0
#service network restart
#vim /etc/sysconfig/network
 HOSTNAME=node2.a.org
 #hostname node2.a.org
# yum install httpd
 
 編輯個網頁 爲了 驗證:
# vim /var/www/html/index.html
<h1> node 2.a.org</h>
 
 
 #service httpd start
 測試 在瀏覽器上 輸入 ip地址
 
 #service httpd stop   停止服務
#chkconfig httpd off  關閉不讓開機自動啓動
 
 下載 軟件包
 

# yum localinstall *.rpm --nogpgcheck -y


測試 在瀏覽器上 輸入 公網 ip
 
如果節點一,壞了 ,節點二自動啓動
 
 
 
 
 
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章