高可用軟件原理及重點


ansible:批量自動化部署工具

底層是用python所寫,調用的主要模塊為:

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 

lvs:負載均衡器

特點:

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:linux下一個輕量級的高可用解決方案

原理:

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

mariadb:關系型數據庫

MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標准化的數據庫語言,它使得存儲、更新和存取信息更加容易。MySQL是一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和許多不同的客戶程序以及庫組成的。分為關系數據庫(mysql、sqlserver、oracle)和非關系型數據庫(redis)

優點:

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

2. 性能好,而且穩定

3. 開源

4. 社區活躍

5. 輕量級

6. 維護簡單

7. 支持跨平台

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

9. 執行用sql進行數據的讀寫

事務:

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

一致性:數據庫總是從一個一致性的狀態轉換到另一個一致性的狀態

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

持久性:事務完成后,該事務內涉及的數據必須持久性的寫入磁盤保證其持久性。當然,這是從事務的角度來考慮的的持久性,從操作系統故障或硬件故障來說,這是不一定的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM