一、簡介
企業中常用的web架構主要的目的是實現高可用及其容災備份,說白了就是讓使用者有更好的用提體驗,乙個架構的可用性只有在經歷過上線後接受使用者的使用才能體現出其穩定性及其不足之處。利用週末的時間出於無聊,所以想總結以前所學的知識,本文主要介紹lvs,keepalived,nginx-proxy,等常用服務的搭建及其原理。
二、lvs概述及nat、dr原理
lvs-nat(linux virtual system)是根據請求報文的目標ip和目標埠進行排程**至後端某主機。在實際生產中常用的模型有nat(network address translation)和dr(direct routing),下面我們從這兩開始展開敘述。
vip1:10.1.10.65
dip1:192.168.184.128
rip1:192.168.184.129
rip2:192.168.184.130
要求:兩台real server閘道器要指向dip.vip和dip需在同乙個網段,且為內網位址
兩台real server閘道器必須指向directory routing.
新增ipvsadm規則,使用預設權重為1,進行測試,實驗結果為輪詢。
修改預設權重為1:2,及其靜態排程演算法為加權輪詢,測試結果為1:2加權輪詢。
lvs-dr(lvs director routing)是通過將請求報文重新封裝其mac位址進行**,源mac位址為dip所在介面的ip位址,而目標mac位址為從後端挑選出來的real server的mac位址ip首部不發生變換 。
vip1:10.1.10.88
dip1:10.1.10.65
rip1:10.1.10.66
vip1:10.1.10.88
rip2:10.1.10.67
vip1:10.1.10.88
要求:需調整核心引數,為每乙個需要vip位址的主機新增vip位址
上訴均可使用指令碼實現如下:
設定為加權輪詢權重比為1:2,及其新增ipvs規則
實驗結果如下圖,實現1:2說明實驗成功 ,可修改其排程演算法再次驗證其結果的真實性。
總結:lvs-dr重點在於給dr及其real server配置vip位址,並且向real server設定核心引數,是的real server中的lo:0上的vip位址不直接響應dr,而是由real server直接響應客服端請求。上訴實驗中有個缺點,當real server主機服務提供服務時,使用者請求頁面很不友好,需給出相應的應急頁面。
三、實戰keepalived高可用集群解決方案
dip1:10.1.10.65
vip1:10.1.10.88
vip2:10.1.10.99
dip2:10.1.10.68
vip1:10.1.10.88
vip2:10.1.10.99
rip1:10.1.10.66
vip1:10.1.10.88
vip2:10.1.10.99
rip2:10.1.10.67
vip1:10.1.10.88
vip2:10.1.10.99
要求:配置過程中,主的優先順序要高於備,同時將主備的state狀態互調。
配置完成後啟動keepalived會自動生成ipvs規則
測試結果為設定的輪詢演算法,同時模擬後端某伺服器故障,檢視相應的伺服器是否能符合正常需求
測試結果為設定的輪詢演算法,同時模擬後端伺服器故障,檢視相應的ipvs規則是否自動生成
測試結果為設定的輪詢演算法,同時模擬後端某伺服器故障,檢視相應的應急頁面是否能符合正常需求
總結:在keepalived中需注意的事項為,配置vrrp_instance例項時需注意主備的狀態及其優先順序,比起lvs來說keepalived總體配置簡單,且ipvs規則自動生成省去了「人工智慧」。
四、nginx前端排程高可用實戰
對於乙個大型**來說,負載均衡是永恆的話題。隨著硬體技術的迅猛發展,越來越多的負載均衡硬體裝置湧現出來,如f5 big-ip、citrix netscaler、radware等等,雖然可以解決問題,但其高昂的**卻往往令人望而卻步,因此負載均衡軟體仍然是大部分公司的不二之選。nginx作為webserver的後起之秀,其優秀的反向**功能和靈活的負載均衡策略受到了業界廣泛的關注。
vip1:10.1.10.88
vip2:10.1.10.99
rip1:10.1.10.66
rip2:10.1.10.67
要求:在配置過程中開啟nginx的upstream模組,並**到後端主機
配置vrrp例項後將遵循自動生成vip位址及其自動實現位址漂移
模擬將後端一台伺服器故障和全體故障的測試結果
例項中內嵌檢測nginx健康狀態檢測指令碼當nginx宕機時,則會自動將權重減去5,vip位址漂移至優先順序高的主機
文末福利 ||
免費領:運維大神速成秘籍(300頁乾貨,基礎、高階、高階,全方位linux技能整理)
mysql企業常用集群架構
在中小型網際網路的企業中。mysql的集群一般就是上圖的架構。web節點讀取資料庫的時候讀取dbproxy伺服器。dbproxy伺服器通過對sql語句的判斷來進行資料庫的讀寫分離。讀請求負載到從庫 也可以把主庫加上 寫請求寫主庫。這裡的dbproxy是資料庫集群的唯一出口所以也需要做高可用。drpr...
mysql集群架構 MySQL企業常用集群架構
在中小型網際網路的企業中。mysql的集群一般就是上圖的架構。web節點讀取資料庫的時候讀取dbproxy伺服器。dbproxy伺服器通過對sql語句的判斷來進行資料庫的讀寫分離。讀請求負載到從庫 也可以把主庫加上 寫請求寫主庫。這裡的dbproxy是資料庫集群的唯一出口所以也需要做高可用。drpr...
Mycat集群架構
架構圖集群總共需要有8臺機子,mysql需要4臺,mycat需要2臺,負載均衡和高可用需要2臺。之所以mycat需要集群這樣的架構,是為了避免mycat單點失效的情況,mysql主機有4臺 db1 db4 其中db1和db3是組一 主主複製 db2和db4是組二 主主複製 之所以需要主主複製是因為m...