標籤:keepalived雙機熱備 haproxy負載平衡
搭建haproxy+keepalived高可用群集。
一、案例概述
1.haproxy是目前比較流行的一種叢集調度工具,是一款免費開源的軟體,並且具有一定得安全性;haproxy較適用於負載較大的web節點,並且支援數萬的並發量。同類調度工具還有很多,如LVS和Nginx。相比較而言,LVS效能最好,但是搭建相對複雜,Nginx的upstream模組支援群集功能,但是對叢集節點健全狀態檢查功能不強,效能沒有haproxy好。haproxy主要實現web群集的負載平衡haproxy官方網站:http://haproxy.1wt.eu/。
2.負載平衡調度演算法:
①.RR(Round Robin):輪詢,根據節點權重依次分配訪問請求。
②.LC(Least Connect):最小串連數演算法,根據節點的串連數量分配訪問請求,每次將串連請求分配給串連數量最小的用戶端。是目前用的較多的一種演算法。
③.SH(Source Hashing):基於來源訪問調度演算法。可基於ip、cookies等做叢集調度,比如ip1第一次訪問時被指派到A網站,ip2訪問被指派到B網站,那麼以後的每次ip1都會被指派到A網站,ip2被指派到B網站。若某個IP訪問量較大時,就會給節點造成很大的壓力。
3.案例環境:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/8A/03/wKiom1gj58vTt7c0AAAGngECh8g526.png-wh_500x0-wm_3-wmp_4-s_1539231999.png" title="QQ圖片20161110112113.png" alt="wKiom1gj58vTt7c0AAAGngECh8g526.png-wh_50" />
二、編譯安裝haproxy(這裡拿主haproxy伺服器舉例)
1.先用yum安裝支援haproxy的開發包
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/8A/04/wKiom1gj6pSR1YoyAAAVqSm3VUY539.png-wh_500x0-wm_3-wmp_4-s_2716620236.png" title="QQ圖片20161110113317.png" alt="wKiom1gj6pSR1YoyAAAVqSm3VUY539.png-wh_50" />
2..編譯安裝haproxy。
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8A/04/wKiom1gj7JLwH3n8AAAMIKdl_PI473.png-wh_500x0-wm_3-wmp_4-s_3869072811.png" title="QQ圖片20161110114147.png" alt="wKiom1gj7JLwH3n8AAAMIKdl_PI473.png-wh_50" />這裡的Linux26指64位作業系統。
3.配置haproxy伺服器
需手動建立haproxy的設定檔目錄,將haproxy.cfg檔案複製到剛才手動建立的設定檔目錄下。
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/04/wKiom1gj7buD7MyXAAAJJn4Ncd0390.png-wh_500x0-wm_3-wmp_4-s_3838522332.png" title="QQ圖片20161110114637.png" width="600" height="61" border="0" hspace="0" vspace="0" style="width:600px;height:61px;" alt="wKiom1gj7buD7MyXAAAJJn4Ncd0390.png-wh_50" />
4.修改haproxy設定檔
haproxy通常分為三部分(global:全域配置,defaults:預設配置,listen:應用模組配置)
首先修改全域配置:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/8A/04/wKiom1gj84bQviEjAACpa6F-sO4169.jpg-wh_500x0-wm_3-wmp_4-s_142082311.jpg" title="QQ圖片20161110121130.jpg" alt="wKiom1gj84bQviEjAACpa6F-sO4169.jpg-wh_50" />
其次為預設配置:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/8A/01/wKioL1gj86vgCk-cAAAXkjdPQ_E025.png-wh_500x0-wm_3-wmp_4-s_3195656640.png" title="QQ圖片20161110121206.png" alt="wKioL1gj86vgCk-cAAAXkjdPQ_E025.png-wh_50" />
最後為應用模組配置:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8A/05/wKiom1gj8_jyeQbUAAAX7JiTrf4981.png-wh_500x0-wm_3-wmp_4-s_3968121007.png" title="QQ圖片20161110121320.png" alt="wKiom1gj8_jyeQbUAAAX7JiTrf4981.png-wh_50" />
儲存退出即可。
5.建立自啟動指令碼
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/01/wKioL1gj9OuQMMdZAAAdl3LWKFc002.png-wh_500x0-wm_3-wmp_4-s_1654002894.png" title="QQ圖片20161110121723.png" alt="wKioL1gj9OuQMMdZAAAdl3LWKFc002.png-wh_50" />
三.測試web群集
1.建立測試網頁 650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8A/05/wKiom1gj923RXrGIAAAKr5s_kuA981.png-wh_500x0-wm_3-wmp_4-s_771027046.png" title="QQ圖片20161110122801.png" alt="wKiom1gj923RXrGIAAAKr5s_kuA981.png-wh_50" />
啟動apache服務
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/8A/01/wKioL1gj93fCetpjAAAWv51xbp0870.png-wh_500x0-wm_3-wmp_4-s_788597791.png" title="QQ圖片20161110122804.png" alt="wKioL1gj93fCetpjAAAWv51xbp0870.png-wh_50" />
2.測試第一次顯示的頁面為web1的網頁
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/8A/01/wKioL1gj-ejjfULBAAAbFxaqsCU191.png-wh_500x0-wm_3-wmp_4-s_1546644091.png" title="QQ圖片20161110123755.png" alt="wKioL1gj-ejjfULBAAAbFxaqsCU191.png-wh_50" />
第二次顯示的為web2的網頁
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/05/wKiom1gj-gKhDxFYAAAabihW00M893.png-wh_500x0-wm_3-wmp_4-s_1206844562.png" title="QQ圖片20161110123750.png" alt="wKiom1gj-gKhDxFYAAAabihW00M893.png-wh_50" />
四、haproxy的高可用
安裝支援軟體
yum -y install kernel-devel openssl-devel popt-devel ipvsadm
2. 編譯安裝keepalived並將keepalived添加為系統服務
cd /usr/src/keepalived-1.2.13/
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install
ls -l /etc/init.d/keepalived
chkconfig --add keepalived
3.使用keepalived實現雙機熱備
首先配置主調度器即主haproxy(/etc/keepalived/keepalived.conf)
修改keepalived設定檔:
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/06/wKiom1gkD3fT01wRAAA4Bzr6_kU527.png-wh_500x0-wm_3-wmp_4-s_4167930427.png" title="QQ圖片20161110141026.png" alt="wKiom1gkD3fT01wRAAA4Bzr6_kU527.png-wh_50" />
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/8A/06/wKiom1gkD5HQ7BEeAAAnuNPvj3k501.png-wh_500x0-wm_3-wmp_4-s_3063660265.png" title="QQ圖片20161110141037.png" alt="wKiom1gkD5HQ7BEeAAAnuNPvj3k501.png-wh_50" />
2.配置從調度器
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/02/wKioL1gkD8mzKEMkAAAta2GeBG8385.png-wh_500x0-wm_3-wmp_4-s_218635770.png" title="QQ圖片20161110141204.png" alt="wKioL1gkD8mzKEMkAAAta2GeBG8385.png-wh_50" />
3.配置完後重啟keepalived
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/8A/02/wKioL1gkETaSXQYBAAAoWNBY8Oo181.png-wh_500x0-wm_3-wmp_4-s_182606626.png" title="QQ圖片20161110141810.png" alt="wKioL1gkETaSXQYBAAAoWNBY8Oo181.png-wh_50" />
4.用用戶端通過群集瀏覽網頁。效果如下:
(由於地址衝突,把群集IP改為192.168.1.20)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/8A/06/wKiom1gkGy2z2ILKAAAihhh3E5o171.png-wh_500x0-wm_3-wmp_4-s_3749405152.png" style="float:none;" title="QQ圖片20161110150000.png" alt="wKiom1gkGy2z2ILKAAAihhh3E5o171.png-wh_50" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/8A/06/wKiom1gkGy6zuCb4AAAzHXJuSIs197.jpg-wh_500x0-wm_3-wmp_4-s_327793648.jpg" style="float:none;" title="QQ圖片20161110150003.jpg" alt="wKiom1gkGy6zuCb4AAAzHXJuSIs197.jpg-wh_50" />
將主haproxy的網卡斷開後用戶端依然可以正常訪問。
註:作者知識有限,希望大家提出寶貴的意見!
本文出自 “清風與你” 部落格,請務必保留此出處http://super12138.blog.51cto.com/12190541/1871474
用haproxy搭建web群集並由keepalived 實現雙機熱備