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
如果節點一,壞了 ,節點二自動啓動