高可用軟體原理及重點

2022-05-05 03:21:07 字數 3085 閱讀 8888

1.paramiko:模擬ssh協議,連線linux客戶端

2.yaml:用來編寫yaml指令碼的語言

3.jinjia2:模板語言

ansible通過hosts檔案或免金鑰登入來實現批量管理主機

hoc命令列:ansible client -m copy -a 'src=/root/ceshi.sh dest=/root

playbooks:編寫yaml指令碼

roles:呼叫playbooks 

1、抗負載能力強、效能高,能達到f5硬體的60%;對記憶體和cpu資源消耗比較低

2、工作在osi第4層,通過vrrp協議**(僅作分發之用),具體的流量由linux核心處理,因此沒有流量的產生。

2、穩定性、可靠性好,自身有完美的熱備方案;(如:lvs+keepalived)

3、應用範圍比較廣,可以對所有應用做負載均衡;

4、不支援正則處理,不能做動靜分離。

5、支援負載均衡演算法:rr(輪循)、wrr(帶權輪循)、lc(最小連線)、wlc(權重最小連線)

6、配置 複雜,對網路依賴比較大,穩定性很高。

nat模式:

①.客戶端將請求發往前端的負載均衡器,請求報文源位址是cip(客戶端ip),後面統稱為cip),目標位址為vip(負載均衡器前端位址,後面統稱為vip)。

②.負載均衡器收到報文後,發現請求的是在規則裡面存在的位址,那麼它將客戶端請求報文的目標位址改為了後端伺服器的rip位址並將報文根據演算法傳送出去。

③.報文送到real server後,由於報文的目標位址是自己,所以會響應該請求,並將響應報文返還給lvs。

④.然後lvs將此報文的源位址修改為本機並傳送給客戶端。

注意:

在nat模式中,real server的閘道器必須指向lvs,否則報文無法送達客戶端 

優點:

集群中的物理伺服器可以使用任何支援tcp/ip作業系統,只有負載均衡器需要乙個合法的ip位址。 

缺點

擴充套件性有限。當伺服器節點(普通pc伺服器)增長過多時,負載均衡器將成為整個系統的瓶頸,因為所有的請求包和應答包的流向都經過負載均衡器。當伺服器節點過多時,大量的資料報都交匯在負載均衡器那,速度就會變慢!

dr模式:

①.客戶端將請求發往前端的負載均衡器,請求報文源位址是cip,目標位址為vip。 

②.負載均衡器收到報文後,發現請求的是在規則裡面存在的位址,那麼它將目標mac改為了rip的mac位址,並將此包傳送給rs。 

③.rs發現請求報文中的目的mac是自己,就會將次報文接收下來,處理完請求報文後,將響應報文通過lo介面送給eth0網絡卡直接傳送給客戶端。 

注意:

需要設定lo介面的vip不能響應本地網路內的arp請求。 

優點

和tun(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。與vs-tun相比,vs-dr這種實現方式不需要隧道結構,因此可以使用大多數作業系統做為物理伺服器。 

dr模式的效率很高,但是配置稍微複雜一點,因此對於訪問量不是特別大的公司可以用haproxy/nginx取代。日1000-2000w pv或者併發請求1萬一下都可以考慮用haproxy/nginx。 

缺點

所有 rs 節點和排程器 lb 只能在乙個區域網裡面。

tun模式:

①.客戶端將請求發往前端的負載均衡器,請求報文源位址是cip,目標位址為vip。 

②.負載均衡器收到報文後,發現請求的是在規則裡面存在的位址,那麼它將在客戶端請求報文的首部再封裝一層ip報文,將源位址改為dip,目標位址改為rip,並將此包傳送給rs。 

③.rs收到請求報文後,會首先拆開第一層封裝,然後發現裡面還有一層ip首部的目標位址是自己lo介面上的vip,所以會處理次請求報文,並將響應報文通過lo介面送給eth0網絡卡直接傳送給客戶端。 

注意:

需要設定lo介面的vip不能在公網上出現。 

優點: 

負載均衡器只負責將請求包分發給後端節點伺服器,而rs將應答包直接發給使用者。所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量,這種方式,一台負載均衡器能夠為很多rs進行分發。而且跑在公網上就能進行不同地域的分發。 

缺點:

隧道模式的rs節點需要合法ip,這種方式需要所有的伺服器支援」ip tunneling」(ip encapsulation)協議,伺服器可能只侷限在部分linux系統上。 

keepalived加入了vrrp功能,vrrp協議是一種容錯的主備模式的協議,保證當主機的下一跳路由出現故障時,由另一台路由器來代替出現故障的路由器進行工作,通過vrrp可以在網路發生故障時透明的進行裝置切換而不影響主機之間的資料通訊。

mysql是乙個真正的多使用者、多執行緒sql資料庫伺服器。sql(結構化查詢語言)是世界上最流行的和標準化的資料庫語言,它使得儲存、更新和訪問資訊更加容易。mysql是乙個客戶機/伺服器結構的實現,它由乙個伺服器守護程式mysqld和許多不同的客戶程式以及庫組成的。分為關聯式資料庫(mysql、sqlserver、oracle)和非關係型資料庫(redis)

1. bat都在用mysql,而且往往都是從oracle切換到了mysql

2. 效能好,而且穩定

3. 開源

4. 社群活躍

5. 輕量級

6. 維護簡單

7. 支援跨平台

8. 支援多種語言(編碼)

9. 執行用sql進行資料的讀寫

原子性:事務內的所有操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。

一致性:資料庫總是從乙個一致性的狀態轉換到另乙個一致性的狀態

隔離性:乙個事物所做的修改在最終提交之前,對其他事物是不可見的

永續性:事務完成後,該事務內涉及的資料必須永續性的寫入磁碟保證其永續性。當然,這是從事務的角度來考慮的的永續性,從作業系統故障或硬體故障來說,這是不一定的。

高可用軟體 Keepalived 的原理與實踐

版權 keepalived是c語言開源的免費路由軟體,為 linux 提供高可用的負載均衡功能 keepalived 分為3個守護程序 假設有兩台 centos ip 1 192.168.126.101 和 ip 2 192.168.126.102 兩台都安裝 nginx,分別作為 master b...

Nginx 原理 優化 高可用

js function 是運算子 表示式 則表示式的結果將會返回 function 這樣就返回了乙個函式,但是 當 和函式連線在一起的時候 則表示 函式運算 function 一前一後2個括號 就是呼叫裡面的函式讓他執行 js function問題 var a function function a...

軟體架構 解構高可用

控制系統理論認為 系統受到某種干擾而偏離正常狀態,當干擾消除,如果系統的擾動能逐漸收斂並最終恢復正常狀態,則系統是穩定的,反之,系統偏離正常越來越大,則是不穩定的。所以,穩定性是系統抗干擾和返回平衡狀態的能力。對於經典的傳遞函式的軟體系統,一般我們講的穩定指的是 bibo穩定 即有界輸入有界輸出穩定...