集羣簡介
什麼是集羣
一組是通過高速網絡互聯的計算組,並以單一系統的模式加以管理。
將很多服務器集中起來一起,提供同一種服務,在客戶端看來就像是隻有一個服務器
可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益
任務調度是集羣系統中的核心技術
集羣:由一組機器提供相同的服務通過網線連接
集羣目的:
提高性能
降低成本
提高可擴展性
增強可靠性
集羣的分類:
高性能計算集羣HPC(主要用於科學)
負載均衡集羣LB(平均分攤)
高可用集羣HA(需要兩臺服務器一個主一個備,避免單點故障)
LB的實現:LVS軟件 Haproxy軟件 (nginx)
HA的實現:Keepalived軟件
LVS:它是一段內核代碼,不提供任何功能,但是能夠根據用戶定義的轉發規則將用戶對於服務應用的請求轉發至後端主機的機制。
LVS:工作在內核的第四層(tcp/udp)層
LVS軟件介紹:主要實現高可用的、可伸縮的web、mail、cache、和media等網絡服務。
LVS集羣組成
前端:負載均衡層
中間:服務器羣組層
底端:數據共享存儲層
LVS術語
Diector Server 調試服務器
Real Server 真實服務器
VIP 虛擬ip地址
RIP 真實IP地址
DIP 調試器連接節點服務器的ip地址
cip 客戶ip地址
LVS工作模式
VS/NAT 網絡地址轉換模式(有兩個網段的IP一個私有和一個公有)
用戶的請求到達的前端的調度器,調度器本身不提供服務,只是提供某種方法從後端realserver中挑選出一個服務角色來響應用戶請求,這些服務器是隱藏在調度器背後的,因此他們是通過地址轉換,將用戶請求逐個分發到後端realserver,當用戶的請求被realserver處理了之後,這個請求需要將請求再次發給調度器,再由調度器封裝報文(源VIP 目標CIP)發送給client
無論是客戶的請求還是服務端的響應都必須經過調度器(director)
如果調度器的併發量非常大的話,(請求非常小,響應比較大)如果後端的relaserver非常的多,調度器可能會成爲性能瓶頸的,因爲調度器本身也需要大量的系統資源來響應用戶的請求(CPU+網絡吞吐)
其好處:只需要一個公網地址即可響應用戶的請求
NAT模式特性總結:
·.realserver應該使用私有ip地址
·一般realsever的網關應該指向DIP,不然的話無法保證響應報文經過director
·RIP要和DIP應該在同一網段內
·進出的報文,無論請求還是響應都要經過Directory
·支持端口映射
·realserver可以使用任意系統,只要端口對應即可
在高負載下,directory可能會成爲性能瓶頸,所以不使用於併發很高的應用場景
在nat模式下在集羣節點下經過哪些鏈:
當一個請求到達的時候,請求剛進入本地會到prerouting,而後目標地址就是本機vip地址,於是送往input鏈,但是在input鏈上工作的有ipvs,而且ipvs會有規則結果會分發到postrouting
NAT模型回覆的報文會經過prerouting ,目標地址是CIP所以通過preting到達fowward到postrouting並返回給用戶
其報文走向流程:
入站報文:prerouting--> input(強行改變流程) --> postrouting
出站報文:響應時候先進行prerouting--> forward --> postrouting
VS/DR直接路由模式(分發器在發請求給服務器時,不直接回包給分發器,而是直接發給客戶,但客戶端必須要有VIP)
·用戶通過訪問其域名解析到其IP地址(VIP)
·用戶向目標VIP發送請求,這是Director接收到請求,此時源IP是用戶的IP地址,其目標MAC是Director的MAC地址
·LVS會根據其相關算法選擇一臺active的服務器,將此RIP所在網卡的MAC地址作爲目標的MAC地址,此時源MAC地址是Director的MAC地址,目標MAC地址是realserver的MAC地址
·realserver收到了數據包,並且分析數據包,如果發現目標IP地址(VIP)與本地的lo(環回接口)匹配,於是就會處理這個報文,廣播到LAN中,此時源MAC地址是realserver的MAC地址,目標IP地址是用戶的IP
其特性:
·realserver可以使用私有地址,但建議使用公網地址,
·realserver的網關一定不能指向DIP,否則沒有意義了
·RIP和DIP要在同一物理網絡內,一定不能跨越路由設備的
·入站報文經過directory,出站則由realserver直接響應
·不能做端口映射
·realserver必須綁定lo地址,跨越支持大多數常見OS
DR模型限定了主機必須在同一物理網絡內
VS/TUN隧道模式(用來做LB集羣時服務器在不同地點)
隧道模式則類似於***的方式,使用網絡分層的原理
TUN的工作流程:
用戶發來的數據包的基礎上,封裝一個新的IP頭標記(此IP頭只有目的IP部) 發給REALSERVER
REALSERVER收到後,先把Director發過來的數據包的頭給解開,還原其數據包原樣,處理後,直接返回給客戶端,而不需要再經過Director
需要注意的是:由於REALSERVER需要對DR發過來的數據包進行還原,也就是說必須支持IPTUNNEL協議所以,在 REALSERVER的內核中,必須編譯支持IPTUNNEL這個選項
負載均衡調試算法
輪詢 :平均分配(rr)
加權輪詢:根據權重值輪詢,根據比例值(wrr)
最少連接:看誰的連接數少就分發給誰(lc)
加權最少連接:根據權重值去選擇最少的連接數(wlc)
LVS-NAT集羣
安裝軟件
LVS的ip負載均衡技術是通過IPVS模塊實現的
IPVS模塊已成爲Linux組成部分
sysctl命令被用於在內核運行時動態地修改內核的運行參數,可用的內核參數在目錄/proc/sys中。它包含一些TCP/ip堆棧和虛擬內存系統的高級選項, 這可以讓有經驗的管理員提高引人注目的系統性能。用sysctl可以讀取設置超過五百個系統變量。
語法
sysctl(選項)(參數)
查看所有可讀變量:
sysctl -a
開啓內核路由轉發功能
sysctl -a | grep ip_forward
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p 開啓路由轉發
添加網關:
route add default gw 網關地址
刪除網關:
route del default gw 網關地址
查看網關:
route -n
注:做這些之前需要將NetworkManager關了在生產環境一般也不開
配置分發器:
安裝軟件包
ipvsadm
服務名和軟包同名
命名是ipvsadm創建集羣管理集羣
創建虛擬服務器
查看集羣ipvsadm -Ln(加n以數字顯示)
添加虛擬服務器 -A
設置羣集地址(VIP,Virtual IP) -t
指定負載調度算法 -s
ipvsadm用法:
添加、刪除服務器節點
-a 添加真實服務器
-d刪除真實服務器
-r指定真實服務器(Real Server)的地址
-m 使用NAT模式;-g、-i 分別對就DR、TUN模式
-w爲節點服務器設置權重,默認爲1
保存配置ipvsadm -S
清除所有配置ipvsadm -C
ipvsadm -Ln --stats 查看詳細信息
conns接收連接數 InPkts 輸入數據包outpkts輸出數據包 inbytes輸入字節數 outbytes輸出字節數
watch -n 1 ipvsadm -Ln --status 每隔一秒顯示信息
清空計數器ipvsadm -Z
/etc/sysconfig/ipvsadm-config
保存到自己的主配置文件裏讓它開機啓動:ipvsadm -S > /etc/sysconfig/ipvsadm-config
IPVS_SAVE_ON_STOP="no" 默認配置文件不保存
缺點:一旦調度器壞了服務集羣就沒法用了,成爲了數據傳輸的瓶頸。爲了解決這問題我們需要用LVS/DR技術
/etc/sysconfig/ipvsadm將ipvsadm -S 保存到那裏面就可以用systemctl restart ipvsadm
LVS-DR集羣
設置分發器
ifconfig eth0:1 192.168.4.254 綁定接口如何想讓他開機生效可以放在/etc/rc.local
保存當前配置到主配置文件裏
ipvsadm -S > /etc/sysconfig/
創建虛擬服務
ipvsadm -A -t 192.168.4.253:80 -s rr
添加realserver
ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.52:80 -g
ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.53:80 -g(默認不寫-g就是DR模式)
保存配置
ipvsadm -S > /etc/sysconig/ipvsadm-config
查看狀態信息
ipvsadm -Ln
如果出現Route字樣就表示是DR模式
二、配置realserver
1、修改網絡接口的內核參數
cd /proc/sys/net/ipv4/conf/
lo/arp_ignore將這裏面的值改爲1
lo/arp_announce將這裏面的值改爲2
all/arp_ignore將這裏面的值改爲1
all/arp_announce將這裏面的值改爲2
如果要永久生效記到寫到/etc/rc.local寫絕對路徑
2、在本機的lo接口綁定vip地址每臺都要設置
刪除綁定的vip地址 ifdown lo:1
ifconfig lo:1 192.168.4.253/32要永久生效寫到/etc/rc.local
3、運行網站服務編寫網頁文件