haproxy實現mysql的讀負載平衡

來源:互聯網
上載者:User

標籤:haproxy mysql 讀負載平衡

接前一篇部落格<keepalived+Master-Master-Slave實現雙主高可用及讀寫分離>

地址http://lee90.blog.51cto.com/10414478/1825478


上一篇博文裡面,我們只用了一個slave節點。

實際生產環境中,我們肯定有多個slave節點負責讀資料庫。


假設我們還有一個配置好的slave,IP為192.168.2.15。那麼現在的情況是:


Master1:192.168.2.13

Master2:192.168.2.14

VIP:192.168.2.100

Slave1192.168.2.11

Slave2192.168.2.15

Web伺服器:192.168.2.11


haproxy的安裝配置

示範用法而已,我們就將haproxy安裝到192.168.2.11上,能驗證效果即可。

 

參考文檔:

    官方:http://cbonte.github.io/haproxy-dconv/configuration-1.6.html

    http://blog.chinaunix.net/uid-30212356-id-5698536.html

    http://blog.c1gstudio.com/archives/1728?utm_source=tuicool&utm_medium=referral

 

軟體版本:

haproxy-1.5.4-2 【haproxy1.6設定檔和以往的有點不一樣,這裡沒有用最新的】

yum install haproxy -y

cd /etc/haproxy

 

vim haproxy.cfg 修改設定檔,修改好的設定檔如下:

global

   log         127.0.0.1 local2

    chroot     /var/lib/haproxy

    pidfile    /var/run/haproxy.pid

    maxconn    4000

    user       haproxy

    group      haproxy

    daemon

 

    stats socket /var/lib/haproxy/stats

 

defaults

    mode                    tcp

    log                     global

    option                  dontlognull

    retries                 3

    timeout http-request    10s

    timeout queue           1m

    timeout connect         10s

    timeout client          1m

    timeout server          1m

    timeout http-keep-alive 10s

    timeout check           10s

    maxconn                 3000

 

## 定義一個監控頁面,監聽在1080連接埠,並啟用了驗證機制

listenstats

    mode http

    bind 0.0.0.0:1080

    stats enable

    stats hide-version

    stats uri     /haproxy

    stats realm   Haproxy\ Statistics

    stats auth    admin:123456

    stats admin if TRUE

 

listenmysql

    bind 0.0.0.0:3336

    mode tcp

    option mysql-check userhaproxy_check   # 定義了一個用於後端的mysql健全狀態檢查的使用者[主要:這個使用者要在後端的slave上存在才行]

    balance roundrobin

    server slave1 192.168.2.11:3306 weight 1check  inter 1s rise 2 fall 2

    server slave2 192.168.2.15:3306 weight 1check  inter 1s rise 2 fall 2

 

在各個mysqlslave節點上建立帳號

建立允許haproxy串連到資料庫的帳號擷取其運行狀態

> GRANT PROCESS ON *.* TO‘haproxy_check‘@‘192.168.2.%‘;

> flush privileges;

 

再建立一個訪問的帳號,一會要通過它串連haproxy的3336節點嘗試訪問slave,以便驗證是否能負載平衡

> GRANT ALL ON *.* TO‘lirl‘@‘192.168.2.%‘ identified by ‘123456‘;

> flush privileges;

 

啟動haproxy

/etc/init.d/haproxy start

 

瀏覽器訪問http://192.168.2.11:1080/haproxy

輸入使用者名稱admin 密碼123456 進到下面的介面:

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/84/28/wKioL1eHMhCi_eBfAAGQGI_6wcQ645.png" title="1.png" alt="wKioL1eHMhCi_eBfAAGQGI_6wcQ645.png" />

從dashboard介面,可看到slave1 已經是up狀態了。slave2是down狀態。因為我們實際上192.168.2.15這台主機都沒開機(slave2的配置和slave1一樣的方法)。

 

我們在其他節點,用haproxy訪問後端的資料庫,如,已經能串連到了:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/29/wKiom1eHMjbgNu6EAABBJGL7dBw305.png" style="float:none;" title="2.png" alt="wKiom1eHMjbgNu6EAABBJGL7dBw305.png" />


在slave上,用root帳號登入查看,如,能看到lirl帳號登入上來了。

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/28/wKioL1eHMjbBv22VAAAqpN1A3gs535.png" style="float:none;" title="3.png" alt="wKioL1eHMjbBv22VAAAqpN1A3gs535.png" />


slave2的我就不詳細示範如何配了。


最後,附上一張最終完成後機器拓撲圖:

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/84/29/wKiom1eHMjbQNzj-AACKnLlAZqs372.png" style="float:none;" title="4.png" alt="wKiom1eHMjbQNzj-AACKnLlAZqs372.png" />


haproxy實現mysql的讀負載平衡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.