文章目录
前言
🔥
Mycat
系列专栏:https://blog.csdn.net/qq_41779565/category_11876566.html
🔥Mycat
主从搭建、读写分离:https://micromaple.blog.csdn.net/article/details/125375231
🔥Mycat
实现分库分表:https://micromaple.blog.csdn.net/article/details/125375312
🔥Mycat
实现单库水平分表、按月分表:https://micromaple.blog.csdn.net/article/details/125395498
概述
在实际项目中,
Mycat
服务也需要考虑高可用性,如果
Mycat
所在服务器出现宕机,或
Mycat
服务故障,需要有备机提供服务,需要考虑
Mycat
集群。
高可用方案
使用
HAProxy
+
Keepalived
配合两台
Mycat
搭起
Mycat
集群,实现高可用性。
HAProxy
实现了
Mycat
多节点的集群高可用和负载均衡,而
HAProxy
自身的高可用则可以通过
Keepalived
来实现。
编号角色
IP
地址1
Mycat1
192.168.110.1452
Mycat2
192.168.110.1503
HAProxy(master)
192.168.110.1514
Keepalived(master)
192.168.110.1515
HAProxy(backup)
192.168.110.1526
Keepalived(backup)
192.168.110.152
安装配置 HAProxy
各版本下载地址:
https://src.fedoraproject.org/repo/pkgs/haproxy/
本文使用版本为:
1.5.18
下载地址:
https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.18.tar.gz/21d35f114583ef731bc96af05b46c75a/haproxy-1.5.18.tar.gz
安装步骤:
- 将下载好的
HAProxy
安装包传到/usr/local/src
目录下进行解压cd /usr/local/srcwget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.18.tar.gz/21d35f114583ef731bc96af05b46c75a/haproxy-1.5.18.tar.gztar -zxvf haproxy-1.5.18.tar.gzcd /usr/local/src/haproxy-1.5.18
- 安装依赖插件
# Ubuntu 依次执行sudoapt-getinstall -y gccsudoapt-getinstall -y g++sudoapt-getinstall -y libssl-devsudoapt-getinstall -y daemonsudoapt-getinstall -y make# CentOSyum install -y gcc openssl-devel popt-devel
- 查看内核版本,进行编译
# 查看内核版本uname -r# 查看 haproxy README文件对应的系统内核版本cat /usr/local/haproxy/README``````makeTARGET=linux2628 PREFIX=/usr/local/haproxy ARCH=x86_64
-ARGET
:内核版本,使用uname -r
查看内核,结合查看haproxy README
文件对应的系统内核版本-ARCH
:系统位数-PREFIX
:为haprpxy
安装路径 - 编译完成,进行安装
makeinstallPREFIX=/usr/local/haproxy
- 安装完成- 创建配置目录
mkdir -p /usr/data/haproxy/
- 创建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 #quietdefaults log global mode tcp option abortonclose option redispatch retries 3 maxconn 2000 timeout connect 5000 timeout client 50000 timeout server 50000# HAProxy 监听配置listen proxy_status # 监听代理端口 bind :48066 mode tcp balance roundrobin # 监听Mycat服务地址 server mycat_1 192.168.110.145:8066 check inter 10s server mycat_2 192.168.110.150:8066 check inter 10s# HAProxy 控制台配置frontend admin_stats bind :7777 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123456 stats hide-version stats admin if TRUE
- 启动验证- 启动
HAProxy``````/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
- 查看HAProxy
进程ps -ef|grep haproxy
- 打开浏览器访问http://192.168.110.151:7777/admin
输入配置文件中的账号密码进行访问。admin/123456
- 验证负载均衡,通过HAProxy
访问Mycat``````mysql -umycat -p123456 -h 192.168.110.151 -P 48066
HAProxy(backup) 192.168.110.152
如上配置
配置 Keepalived
各版本下载地址:
https://www.keepalived.org/download.html
本文使用版本为:
1.4.2
下载地址:
https://www.keepalived.org/software/keepalived-1.4.2.tar.gz
安装步骤:
- 将下载好的
Keepalived
安装包传到/usr/local/src
目录下进行解压cd /usr/local/srcwget https://www.keepalived.org/software/keepalived-1.4.2.tar.gztar -zxvf keepalived-1.4.2.tar.gzcd /usr/local/src/keepalived-1.4.2
- 安装依赖插件
# Ubuntu 依次执行sudoapt-getinstall -y gccsudoapt-getinstall -y g++sudoapt-getinstall -y libssl-devsudoapt-getinstall -y daemonsudoapt-getinstall -y make# CentOSyum install -y gcc openssl-devel popt-devel
- 进入解压后的目录,进行配置
cd /usr/local/src/keepalived-1.4.2./configure --prefix=/usr/local/keepalived
- 进行编译,完成后进行安装
cd /usr/local/src/keepalived-1.4.2make&&makeinstall
- 运行前配置,将
keepalived
设置为系统服务-Ubuntu
配置mkdir /etc/keepalivedmkdir /etc/sysconfigcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/ln -s /usr/local/keepalived/sbin/keepalived /sbin/
-CentOS
配置mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/cp /usr/local/src/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/default/keepalivedcp /usr/local/keepalived/sbin/keepalived /usr/sbin/
- 修改配置文件
vim /etc/keepalived/keepalived.conf
配置文件内容如下:! Configuration File for keepalivedglobal_defs { notification_email { [email protected] } notification_email_from [email protected] 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 ens33 virtual_router_id 51 #数值越大优先级越高 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { #虚拟IP,在HAProxy之上设定一个虚拟IP,可以在该网段内任意指定未使用的IP 192.168.110.200 }}virtual_server 192.168.110.200 48066 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP # HAProxy 地址 real_server 192.168.110.151 48066 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.110.152 48066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }}
- 配置重载
systemctl daemon-reload
- 启动验证- 启动
Keepalived``````service keepalived start
- 启动后可以看到在ens33
真实IP:192.168.110.151
下面挂载了一个虚拟IP:192.168.110.200``````root@ubuntu:~# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:9b:eb:14 brd ff:ff:ff:ff:ff:ff inet 192.168.110.151/24 brd 192.168.110.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.110.200/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe9b:eb14/64 scope link valid_lft forever preferred_lft forever3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:c3:d3:e0:c7 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever
- 查看Keepalived
状态service keepalived status
- 登录验证mysql -umycat -p123456 -h 192.168.110.200 -P 48066
- 测试高可用- 关闭
Mycat1
- 通过虚拟IP
查询数据# 通过Keepalived登录数据库mysql -umycat -p123456 -h 192.168.110.200 -P 48066# 切换数据库use TESTDB;# 执行SQL命令show tables;``````root@ubuntu-mysql-master:~# mysql -umycat -p123456 -h 192.168.110.200 -P 48066mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.6.29-mycat-1.6.7.6-release-20220524173810 MyCat Server (OpenCloudDB)Copyright (c)2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.mysql> use TESTDB;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+------------------+| Tables_in_orders |+------------------+| customer || dict_order_type || login_info || orders || orders_detail || orders_ware_info || payment_info |+------------------+7 rows inset(0.00 sec)
版权归原作者 micromaple 所有, 如有侵权,请联系我们删除。