使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)

在建立完MySQL資料庫叢集之後, 設立HAProxy軟體來讓應用程式連接, 安裝相當容易, 很快就能完成。我額外建立了一台機器名稱為"hap", IP位址是192.168.1.200, 而這IP位址就負責與應用程式連接。

本系列文章將分成兩個部份:
一、Percona XtraDB Cluster安裝與設定
二、HAProxy安裝與設定

在安裝HAProxy之前, 先回到叢集的pxc1、pxc2及pxc3, 安裝xinetd, 做為HAProxy與資料庫叢集健康檢查的功能。

由於三台資料庫都是一樣的安裝步驟, 這裡在pxc1上示範, 其他機器就依樣畫葫蘆了。
首先安裝xinetd
apt-get install xinetd


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
安裝xinetd

使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
裝好xinetd, 可以看到/ect/xinetd.d/mysqlchk設定檔與clustercheck叢集伺服器檢查程式。

來看一下mysqlchk
nano /ect/xinetd.d/mysqlchk


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
編輯mysqlchk設定檔, 如果要改port號碼, 不然預設值是port 9200。

接著編輯/etc/services檔, 我只要mysqlchk就好, 預設檔裡有很多不需要的, 可以砍掉
nano /etc/services

貼上mysqlchk的服務設定
mysqlchk 9200/tcp # mysqlchk

如果有改port號碼, 記得將9200改為你的port號碼。

使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
儲存/etc/services。

起動xinetd
/ect/init.d/xinetd start


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
用netstat指令查看, xinetd已經啟動mysqlchk服務於port 9200。

使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
接著要讓clustercheck叢集伺服器檢查程式有作用, 需要在資料庫裡建立一個clustercheckuser帳號。

進入MySQL console
mysql -u root -p


以下面的指令建立clustercheckuser帳號
grant process on *.* to 'clustercheckuser'@'localhost' identified by 'clustercheckpassword!';


更新MySQL帳號權限
flush privileges;


離開MySQL console之後, 來測試一下clustercheck
clustercheck


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
如圖顯示HTTP/1/1 200 OK, 就代表該伺服器正常, 若是掛點, 會顯示HTTP/1.1 503 Service Unavailable。

您應該發覺HAProxy與資料庫叢集成員的檢查機制是利用HTTP, 只是走port 9200。
三台資料庫伺服器都設定完成, 來到新安裝的hap機器。

在開始安裝HAProxy前, 得改一下/ect/apt/sources.list, 因為HAProxy被Debian放在backports, 得額外增加backports套件伺服器位置
nano /etc/apt/sources.list

將以下內容附加在最後一行
deb http://http.debian.net/debian wheezy-backports main


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
貼上後儲存sources.list。

使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)

接著就更新套件與安裝HAProxy
apt-get update
apt-get install haproxy


編輯haproxy.cfg設定檔
nano /ect/haproxy/haproxy.cfg

貼上設定內容
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 99
gid 99
daemon
debug
#quiet


defaults
log global
mode http
option tcplog
option dontlognull
option redispatch
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000


listen mysql-cluster 0.0.0.0:3306
mode tcp
balance roundrobin
option httpchk


server c01 192.168.1.201:3306 check port 9200 inter 12000 rise 3 fall 3
server c02 192.168.1.202:3306 check port 9200 inter 12000 rise 3 fall 3
server c03 192.168.1.203:3306 check port 9200 inter 12000 rise 3 fall 3


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
儲存haproxy.cfg。

還有一個檔案要修改: /etc/default/haproxy
nano /etc/default/haproxy


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
ENABLED數值設為1。

使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)

起動HAProxy
/etc/init.d/haproxy start


使用Percona XtraDB Cluster建立MySQL資料庫叢集(2/2: HAProxy)
我用phpMyAdmin來測試連接192.168.1.200, 可以登入就是正常服務了。

各種應用程式只要指定連接192.168.1.200, 就可以存取MySQL資料庫叢集, 不用煩惱到底要連接哪台伺服器。

今日熱門文章 網友點擊推薦!

文章分享
評分
複製連結