在實際項目中,Mycat 服務也需要考慮高可用性,如果 Mycat 所在服務器出現宕機,或 Mycat 服
務故障,需要有備機提供服務,需要考慮 Mycat 集群。
1、 高可用方案
使用 HAProxy + Keepalived 配合兩臺 Mycat 搭起 Mycat 集群,實現高可用性。
HAProxy實現了 MyCat 多節點的集群高可用和負載均衡
HAProxy 自身的高可用則可以通過 Keepalived 來實現。
角色
ip
mycat01
192.168.199.217
mycat02
192.168.199.120
HA(主)
192.168.199.174
keepalive(主機)
192.168.199.174
HA(主)
192.168.199.199
keepalive(主機
192.168.199.199
先配置好mycat并且啟動mycat
2 安裝配置 HAProxy
1、 安裝 HAProxy
2解壓到/usr/local/src
3進入解壓后的目錄,查看內核版本,進行編譯
[root@mycat05 software]# cd /usr/local/src/haproxy-1.5.18/
[root@mycat05 haproxy-1.5.18]# uname -r
3.10.0-957.el7.x86_64
[root@mycat05 haproxy-1.5.18]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
# ARGET=linux310,內核版本,使用uname -r查看內核,如:3.10.0-957.el7,此時該參數就為linux310;
#ARCH=x86_64,系統位數;
#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,為haprpxy安裝路徑。
4編譯完成后,進行安裝
make install PREFIX=/usr/local/haproxy
5安裝完成后,創建目錄、創建HAProxy配置文件
mkdir -p /usr/data/haproxy/
vim /usr/local/haproxy/haproxy.conf
6向配置文件中插入以下配置信息,并保存
globallog127.0.0.1local0
#log127.0.0.1local1 notice
#log loghost local0 info
maxconn4096chroot/usr/local/haproxy
pidfile/usr/data/haproxy/haproxy.pid
uid99gid99daemon
#debug
#quiet
defaults
logglobalmode tcp
option abortonclose
option redispatch
retries3maxconn2000timeout connect5000timeout client50000timeout server50000listen proxy_status
bind :48066mode tcp
balance roundrobin
server mycat_1192.168.140.128:8066check inter 10s
server mycat_2192.168.140.127:8066check inter 10s
frontend admin_stats
bind :7777mode http
stats enable
option httplog
maxconn10stats refresh 30s
stats uri/admin
stats auth admin:123123 //登陸賬戶and密碼stats hide-version
stats adminif TRUE
2、 啟動驗證
1啟動HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
2查看HAProxy進程
ps -ef|grep haproxy
3打開瀏覽器訪問
如果Mycat主備機均已啟動,則可以看到如下圖
4驗證負載均衡,通過HAProxy訪問Mycat
在HAProxy主機上執行(192.168.199.174HA的主機地址)
[root@mycat05 haproxy-1.5.18]# mysql -umycat -p123456 -h 192.168.199.174 -P 48066
3 配置 Keepalived
1準備好Keepalived安裝包,傳到/opt目錄下
2解壓到/usr/local/src
tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src
3安裝依賴插件
yum install -y gcc openssl-devel popt-devel
4進入解壓后的目錄,進行配置,進行編譯
cd /usr/local/src/keepalived-1.4.2
./configure --prefix=/usr/local/keepalived
5進行編譯,完成后進行安裝
make && make install
6運行前配置
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
7修改配置文件
vim /etc/keepalived/keepalived.conf
#修改內容如下! Configuration File forkeepalived
global_defs {
notification_email {
xlcocoon@foxmail.com
}
notification_email_from keepalived@showjoy.com
smtp_server127.0.0.1smtp_connect_timeout30router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval0vrrp_gna_interval0}
vrrp_instance VI_1 {
#主機配MASTER,備機配BACKUP
state MASTER
#所在機器網卡interfaceens33
virtual_router_id51#數值越大優先級越高
priority100advert_int1authentication {
auth_type PASS
auth_pass1111}
virtual_ipaddress {
#虛擬IP
192.168.199.111} }
virtual_server192.168.199.111 48066{
delay_loop6lb_algo rr
lb_kind NAT
persistence_timeout50protocol TCP
real_server192.168.199.174 48066{ # HA的地址(主機)
weight1rTCP_CHECK {
connect_timeout3retry3delay_before_retry3} }
real_server192.168.199.199 48600{#HA地址(備機r)
weight1TCP_CHECK {
connect_timeout3nb_get_retry3delay_before_retry3}
} }
8、啟動Keepalived
同時啟動備機上的HA
service keepalived start
9、登錄驗證
mysql -umycat -p123456 -h 192.168.199.111 -P 48066
192.168.199.111 :虛擬ip
此時是:
HA隱藏mycat的ip
KeepAlive隱藏HA的ip
4 測試高可用
1關閉mycat
2通過虛擬ip查詢數據
mysql -umycat -p123456 -h 192.168.199.111 -P 48066
mysql> select * fromorders;
ERROR2013(HY000): Lost connection to MySQL server during query
mysql> select * fromorders;
ERROR2006(HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:2Current database: TESTDB+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
8 rows in set (1.46 sec)