1. 程式人生 > 實用技巧 >docker技術快速實現前後端專案的叢集化⑥基於haproxy建立pxc叢集的負載均衡

docker技術快速實現前後端專案的叢集化⑥基於haproxy建立pxc叢集的負載均衡

docker技術快速實現前後端專案的叢集化⑥基於haproxy建立pxc叢集的負載均衡

# 建立存放haproxy的對映目錄和負載均衡配置
# mkdir /data/haproxy
# vim /data/haproxy/haproxy.cfg
global
    #工作目錄
    chroot /usr/local/etc/haproxy
    #日誌檔案,使用rsyslog服務中local5日誌裝置(/var/log/local5),等級info
    log 127.0.0.1 local5 info
    #守護程序執行
    daemon

    defaults
    log    global
    mode    http
    #日誌格式
    option    httplog
    #日誌中不記錄負載均衡的心跳檢測記錄
    option    dontlognull
    #連線超時(毫秒)
    timeout connect 
5000 #客戶端超時(毫秒) timeout client 50000 #伺服器超時(毫秒) timeout server 50000 #監控介面 listen admin_stats #監控介面的訪問的IP和埠 bind 0.0.0.0:8888 #訪問協議 mode http #URI相對地址 stats uri /dbs #統計報告格式 stats realm Global\ statistics #登陸帳戶資訊 stats auth admin:admin #資料庫負載均衡 listen proxy
-mysql #訪問的IP和埠 bind 0.0.0.0:3306 #網路協議 mode tcp #負載均衡演算法(輪詢演算法) #輪詢演算法:roundrobin #權重演算法:static-rr #最少連線演算法:leastconn #請求源IP演算法:source balance roundrobin #日誌格式 option tcplog #在MySQL中建立一個沒有許可權的haproxy使用者,密碼為空。Haproxy使用這個賬戶對MySQL資料庫心跳檢測 option mysql
-check user haproxy server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000 server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 server MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000 server MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000 #使用keepalive檢測死鏈 option tcpka

啟動haproxy的容器,並且進入容器啟動Haproxy這個程式

# 啟動名稱為h1的docker

[root@server01 haproxy]# docker run -it -d -p 4001:8888 -p 4002:3306 -v /data/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy

# 進入容器,啟動Haproxy程式

[root@server01 haproxy]# docker exec -it h1 /bin/bash

root@f9ee51b26ac0:/# haproxy -f /usr/local/etc/haproxy/haproxy.cfg

建立haproxy監控mysql資料庫的專用賬戶(不能登入資料庫的一個賬號)

create user 'haproxy'@'%' identified by '';

# 登入監控頁面

http://10.11.0.206:4001/dbs

通過haproxy進行操作

關閉其中的兩個節點,可以看到haproxy就將兩個剔除掉了

通過haproxy插入資料可以正常同步到沒有關閉的節點中,重新啟動停掉的節點後能正常同步新增加的資料,說明叢集可以正常執行

對其中的node mysql節點進行同步埠遮蔽,插入資料可以驗證資料庫的強一致性

進入pxcnode02進行資料強一致性測試

[root@server01 ~]# docker exec -u 0 -it pxcnode02 sh

sh-4.2# yum install iptable-service -y

# 新增防火牆策略,關閉資料同步的埠

sh-4.2# iptables -A INPUT -p tcp --dport 4567 -j DROP

sh-4.2# iptables -A OUTPUT -p tcp --dport 4567 -j DROP

# 向pxcnode02中寫入資料發現無法同步

通過root許可權進入容器的方法

# docker exec -it -u 0 pxcnode01 /bin/bash