本系列文章將分成兩個部份:
一、Percona XtraDB Cluster安裝與設定
二、HAProxy安裝與設定
在安裝HAProxy之前, 先回到叢集的pxc1、pxc2及pxc3, 安裝xinetd, 做為HAProxy與資料庫叢集健康檢查的功能。
由於三台資料庫都是一樣的安裝步驟, 這裡在pxc1上示範, 其他機器就依樣畫葫蘆了。
首先安裝xinetd
apt-get install xinetd

安裝xinetd

裝好xinetd, 可以看到/ect/xinetd.d/mysqlchk設定檔與clustercheck叢集伺服器檢查程式。
來看一下mysqlchk
nano /ect/xinetd.d/mysqlchk

編輯mysqlchk設定檔, 如果要改port號碼, 不然預設值是port 9200。
接著編輯/etc/services檔, 我只要mysqlchk就好, 預設檔裡有很多不需要的, 可以砍掉
nano /etc/services
貼上mysqlchk的服務設定
mysqlchk 9200/tcp # mysqlchk
如果有改port號碼, 記得將9200改為你的port號碼。

儲存/etc/services。
起動xinetd
/ect/init.d/xinetd start

用netstat指令查看, xinetd已經啟動mysqlchk服務於port 9200。

接著要讓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

如圖顯示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

貼上後儲存sources.list。

接著就更新套件與安裝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

儲存haproxy.cfg。
還有一個檔案要修改: /etc/default/haproxy
nano /etc/default/haproxy

將ENABLED數值設為1。

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

我用phpMyAdmin來測試連接192.168.1.200, 可以登入就是正常服務了。
各種應用程式只要指定連接192.168.1.200, 就可以存取MySQL資料庫叢集, 不用煩惱到底要連接哪台伺服器。