我們可以使用 HAProxy + Keepalived 配合兩臺 Mycat 搭起 Mycat 集羣,實現高可用性。HAProxy
實現了 MyCat 多節點的集羣高可用和負載均衡,
而 HAProxy 自身的高可用則可以通過 Keepalived 來實現。
節點說明
節點 |
角色 |
外網ip |
內網ip |
ali-shuidi01 |
Mycat1 |
120.26.178.29 |
172.16.192.132 |
ali-shuidi02 |
Mycat2 |
120.26.178.29 |
172.16.192.133 |
ali-shuidi03 |
HAProxy(Master)+ Keepalived(Master)+ MySql(Master) |
120.26.176.250 |
172.16.192.134 |
ali-shuidi04 |
HAProxy(backup)+ Keepalived(backup)+ MySql(backup) |
120.26.176.175 |
172.16.192.135 |
假設有虛擬ip
120.26.174.134 |
172.16.192.136 |
1.ali-shuidi03,ali-shuidi04 MySQL主從複製搭建
2.在ali-shuidi01,ali-shuidi02分別安裝mycat,實現MySQL讀寫分離,主從複製
3.安裝配置 HAProxy,ali-shuidi03,ali-shuidi04 均執行以下操作
3.1 準備好HAProxy安裝包,傳到/opt目錄下
3.2 解壓到/usr/local/src
tar -zxvf haproxy-1.5.18.tar.gz -C /usr/local/src
3.3 進入解壓後的目錄,查看內核版本,進行編譯
cd /usr/local/src/haproxy-1.5.18/
[root@shuidi03 haproxy-1.8.5]# uname -r
3.10.0-693.2.2.el7.x86_64
make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
# ARGET=linux310,內核版本,使用uname -r查看內核,如:3.10.0-693.2.2.el7.x86_64,此時該參數就爲linux310;
#ARCH=x86_64,系統位數;
#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,爲haprpxy安裝路徑。
3.4 編譯完成後,進行安裝
make install PREFIX=/usr/local/haproxy
3.5 安裝完成後,創建目錄、創建HAProxy配置文件
mkdir -p /usr/data/haproxy/
vim /usr/local/haproxy/haproxy.conf
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
pidfile /usr/data/haproxy/haproxy.pid
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode tcp
option abortonclose
option redispatch
retries 3
maxconn 2000
timeout connect 5000
timeout client 50000
timeout server 50000
listen proxy_status
bind :48066
mode tcp
balance roundrobin
server mycat_1 172.16.192.132:8066 check inter 10s
server mycat_2 172.16.192.133:8066 check inter 10s
frontend admin_stats
bind :7777
mode http
stats enable
option httplog
maxconn 10
stats refresh 30s
stats uri /admin
stats auth admin:123123
stats hide-version
stats admin if TRUE
3.6 啓動HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
3.7查看HAProxy進程
[root@shuidi03 haproxy]# ps -ef|grep haproxy
nobody 29577 1 0 23:29 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
root 31209 3443 0 23:29 pts/2 00:00:00 grep --color=auto haproxy
3.8 打開瀏覽器訪問
http://120.26.176.250:7777/admin
在彈出框輸入用戶名:admin密碼:123123#如果Mycat主備機均已啓動,則可以看到如下圖
3.9 驗證負載均衡,通過HAProxy訪問Mycat
mysql -umycat -pzan123456 -h 172.16.192.134 -P 48066
4. 配置Keepalived ali-shuidi03,ali-shuidi04 均執行以下操作
4.1 準備好Keepalived安裝包,傳到/opt目錄下
4.2 解壓到/usr/local/src
tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src
4.3 安裝依賴插件
yum install -y gcc openssl-devel popt-devel
4.4 進入解壓後的目錄,進行配置,進行編譯
cd /usr/local/src/keepalived-1.4.2
./configure --prefix=/usr/local/keepalived
4.5 進行編譯,完成後進行安裝
make && make install
4.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/
4.7 修改配置文件
vim /etc/keepalived/keepalived.conf
#修改內容如下
! Configuration File for keepalived
global_defs {
notification_email {
shizan666 @163.com
}
notification_email_from keepalived @showjoy.com
smtp_server 127.0 .0 .1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#主機配MASTER, 備機配BACKUP
state MASTER
# 所在機器網卡
interface eth0
virtual_router_id 51
# 數值越大優先級越高
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虛擬IP
172.16 .192 .136
}
}
virtual_server 172.16 .192 .136 48066 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 172.16 .192 .134 48066 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.16 .192 .135 48600 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
4.8 啓動Keepalived
service keepalived start
通過虛擬ip登錄訪問
mysql -umycat -pzan123456 -h 172.16.192.136 -P 48066
4.9 高可用測試,關閉其中一臺mycat,依舊可以通過虛擬ip訪問(因爲阿里雲測試環境,無法生成虛擬Ip,所以沒有測試到這一步)