追蹤
NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落
關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 159111

    累積人氣

  • 71

    今日人氣

    0

    追蹤人氣

使用 Haproxy 搭建高可用與負載平衡叢集(一)MySQL DB 應用..by Neil

 實驗開始

先來看看搭建好的"Master to Master Replication"是否正常運作

參考我過去佈署 M to M 複寫前置操作完成:

blog.yam.com/keynes0918/article/31199445

檢測兩台MySQL DB 是否已正常同步參考下圖(確認以下二值為YES)

mysql> show slave status;


檢查 Slave_IO Running: YES   

     Slave_SQL Running: YES




安裝haproxy 在IP: 192.168.11.180 上

本人Reposity 有 EPEL 內含有haproxy 套件,可直接線上安裝haproxy

EPEL:  
http://fedoraproject.org/wiki/EPEL

> yum -y install haproxy

> rpm -qa | grep haproxy   #本Lab使用版本haproxy為1.4.22-3



接下來開始編輯haproxy設定檔

vi  /etc/haproxy/harproxy.cfg    #配置檔參考如下

global
        maxconn 51200
        #uid 99
        #gid 99
        daemon
        #quiet
        nbproc 1
        pidfile /application/usr/haproxy/tmp/haproxy.pid

defaults
        mode tcp
        option redispatch   #連前當前配置失敗時,允許重新配發到他台機器
        option abortonclose
        timeout connect 5000ms
        timeout client 30000ms
        timeout server 30000ms
        log 127.0.0.1 local0
        balance roundrobin   #使用輪替演算法,分散主機流量

listen proxy
        bind *:3306  #綁定192.168.11.180的3306 Port為運行主機端口
        mode tcp
        server db1 192.168.11.178:3306  weight 1 check  

       
#後端主機.178,179,權重值配置

        server db2 192.168.11.179:3306  weight 2 check  

       
#check 參數檢查改主機是否Live

listen  haproxy_stats
        mode http
        bind 192.168.11.180:8888 #頁面綁定IP為192.168.11.180:8888
        option httplog
        stats refresh 5s   #頁面翻新5秒維間隔
        stats uri /stats   #監控頁面網址192.168.11.180:8888/stats
        stats realm Haproxy Manager
        stats auth neil:angelnokia  #neil為網頁登入帳號,angelnokia為密碼



編輯完成:重新啟動haproxy

/etc/init.d/haproxy restart

chkconfig haproxy on


可使用 netstat -tuln | grep 8888 查看,3306 為DB綁定之Port



登入Web Monitor 介面 查看: http://192.168.11.180:8888/stats  #輸入正確帳密

目前db1 ,db2 是 Live 狀態呈現綠色(兩台主機皆為健康狀態)



  透過client 連接測試透過 haproxy 中繼介面 存取後端DB 讀取/寫入 是否可正常運行 

 PS: 請授權一個帳密可使192.168.11.180(haproxy)進行遠端存取權限

 mysql -u anita -h 192.168.11.180 -P 3306 -p  #遠端連線測試登入資料庫成功


  測試"寫入"資料到anita2 資料庫(測試兩DB寫入同步測試)

 建立tabx 資料欄位結構顯示於下圖

於後端檢查兩台DB同步狀況是否一致

.178 tax 結構 (MySQL DB Node 1)


.179 tax 結構 (MySQL DB Node 2)_兩者受到Master to Master 影響彼此資料同步OK



最後我們測試HA高可用性(容錯移轉)可能,我們先將Node 1 DB shutdown 

再次測試遠端連線是否可接續不間斷存取服務運作(參考下圖)

db1 由於某些因素暫停運作(紅色警示), db2 目前尚持續穩定運作中



在此遠端連入haproxy 中繼介面: 192.168.11.180  

mysql -u anita -h 192.168.11.180 -p  #運作並未中斷,表示haproxy可以順利容錯轉移

成功登入後(node2 .179 ) 我們測試寫入一筆資料到anita2資料庫底下的tbx資料表

如下

use anita2;

insert into tbx values ( 'neil','卍解',200);

select *
 from tbx;

結論:

haproxy 不僅可支援多台伺服器機群間"流量負載平衡" , 亦可兼具HA 高容錯轉移,高可用

性特色,非常方便佈署(人性化),比以往本人實作MMM,LVS+Keepalived上手很多..Great

改天再Po Web 結合虛擬主機應用 配置for Haproxy 分享

操作時參考資料: haprox 官方文獻
相簿設定
標籤設定
相簿狀態