Mysql多主多从集群部署,Haproxy负载均衡,Mycat读写分离

一、Mysql前置知识点

1.1 MySQL主从复制的工作过程

1.2 主从复制的过程

  • mysql主数据库将处理的事务(增、删、改、查)存放到二进制日志文件(mysql-bin-000001),通知存储引擎将数据存储到磁盘中。

  • master的dump线程监听slave的I/O线程的请求,将二进制日志文件更新的数据发送给slave的I/O线程。

  • slave的工作线程(I/O线程),会将master更新的数据复制存放到slave的中继日志文件中,然后由slave中的sql线程进行读取数据,并将数据存放到自己的二进制(类似)文件中,与master的数据保持一致。

1.3 主从复制核心内容

  • 两个日志文件

    • 二进制日志文件(master,xxx-bin.00001)

    • 中继日志文件(slave,xxx-relay-bin.00001)

  • 三个线程

    • dump线程(master):监听slave的I/O线程请求,将master中二进制日志文件中更新的数据发送给slave的I/O线程。

    • I/O线程(slave):将更新的数据存放到slave的中继日志文件中。

    • sql线程(slave):读取中继日志文件中的数据,并将数据存放到自己的二进制(类似)文件中,与master数据保持一致性。

1.4 GTID

  • (Global Transaction ID)是全局事务ID,当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务,比如主库新事务都有一个全局ID,即使此事务被同步到任何从库上并应用都会标记着这个事务
  • GTID的组成: server_uuid:transaction_id,平时看到的gtid_executed或者Executed_Gtid_Set实际是个集合,m-n的方式,代表执行了事务m 到 事务n 这些ID
  • 有了GTID对数据库分布式会有很大的帮助。尤其是复杂主从关系,我们可以省去手工去找偏移量,而是通过CHANGE MASTER TO MASTER_HOST=‘xxx’, MASTER_AUTO_POSITION=1即可方便的搭建从库,在故障修复中也可以采用MASTER_AUTO_POSITION=‘X’的方式。
  • MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog,主从同步时GTID_Event和事务的Binlog都会传递到从库,在从库应用Relay Log,从库在执行的时候也是用同样的GTID写binlog。

二、集群环境介绍

2.1 节点信息表:

序号主机类型主机名IP地址Keepalive软件版本
1Master_01 主节点master01172.16.40.71172.16.40.222mysql 5.7
2Master_02 主节点master02172.16.40.72172.16.40.222mysql 5.7
3Haproxy_01 负载均衡haproxy01172.16.40.61172.16.40.111haproxy1.5.18
4Haproxy_02 负载均衡haproxy02172.16.40.62172.16.40.111haproxy1.5.18
5Mycat_01 读写分离mycat01172.16.40.81jdk1.8/mycat1.6
6Mycat_02 读写分离mycat02172.16.40.82jdk1.8/mycat1.6
7Slave_01 从节点slave01172.16.40.91mysql 5.7
8Slave_02 从节点slave02172.16.40.92mysql 5.7
9Slave_03 从节点slave03172.16.40.93mysql 5.7
10Client 客户端ittools172.16.40.250mysql 5.7

2.2架构拓扑:

三、配置Master双主同步

3.1 全部节点都关闭防火墙及安全管理

systemctl stop firewalld
systemctl disable firewalld
setenforce 0    # 永久关闭需配置/etc/selinux/config中SELINUX=disabled,并保存重启

3.2 Master01配置

在/etc/my.cnf文件中添加以下配置项:

[mysqld]
#定义server-id,每台主机的唯一值
server-id=1
#添加主服务器开启二进制日志
log-bin=master01-bin
#复制类型使用MIXED模式
binlog_format=MIXED
#当角色为从服务器时,允许将同步到的数据更新至二进制日志中
log-slave-updates=true
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
#设置自动删除 binlog 文件的天数
expire_logs_days=7
#开启GTID同步
gtid_mode=on
#强制事务一致,确保 GTID 的安全,在事务中就不能创建和删除临时表
enforce_gtid_consistency=on
#这个变量用于在 MySQL 重启或启动的时候寻找 GTIDs 过程中,控制 binlog 如何遍历的算法
binlog_gtid_simple_recovery=1
#自增主键步长,通常有几个主库节点就写几,避免主键冲突
auto_increment_increment=2
#设置自增主键起始值,master01节点为1,master02节点为2,以此类推
auto_increment_offset=1

 保存,并重启mysql。systemctl restart mysqld

3.3 Master02配置

[mysqld]
#定义server-id,每台主机的唯一值
server-id=2
#添加主服务器开启二进制日志
log-bin=master02-bin
#复制类型使用MIXED模式
binlog_format=MIXED
#当角色为从服务器时,允许将同步到的数据更新至二进制日志中
log-slave-updates=true
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
#设置自动删除 binlog 文件的天数
expire_logs_days=7
#开启GTID同步
gtid_mode=on
#强制事务一致,确保 GTID 的安全,在事务中就不能创建和删除临时表
enforce_gtid_consistency=on
#这个变量用于在 MySQL 重启或启动的时候寻找 GTIDs 过程中,控制 binlog 如何遍历的算法
binlog_gtid_simple_recovery=1
#自增主键步长,通常有几个主库节点就写几,避免主键冲突
auto_increment_increment=2
#设置自增主键起始值,master01节点为1,master02节点为2,以此类推
auto_increment_offset=2

master02的配置信息和master01节点的只有3点不同:

  • server-id=2:这个是各节点在集群中的唯一标识,不能重复。

  • log-bin:binlog日志文件的前缀名称为自定义的

  • auto_increment_offset=2:自增初始值从1变为2,最终效果会变为:

    •  master01:1、3、5、7、9、11、13、15、17.......

    •  master02:2、4、6、8、10、12、14、16、18......

关于 log-slave-updates=true 的说明:

保存,并重启mysql。systemctl restart mysqld

3.4 分别在master01和master02上创建用于数据同步的账号

# 创建账号
grant replication slave ON *.* to 'test'@'172.16.40.%' identified by 'test@666';
# 刷新权限
flush privileges;

 3.5 配置互主同步关系

配置前 master01和master02 都重置一下binlog。

reset master;

master01配置主从,指向master02设为主库。

change master to
    master_host='172.16.40.72',
    master_port=3306,
    master_user='test',
    master_password='test@666',
    master_auto_position=1;

master02配置主从,指向master01设为主库。

change master to
    master_host='172.16.40.71',
    master_port=3306,
    master_user='test',
    master_password='test@666',
    master_auto_position=1;

分别启动同步任务。

start slave;

3.6 校验双主同步状态

输入 show slave status\G 查询同步状态:IO 线程和 SQL 线程都为 YES 表示同步正常,成功实现master01和master02互为主从。

查看 /var/lib/mysql 目录下的文件,可以看到2台主机都已生成relay_log中继日志文件,至此,双主同步完成。

四、部署Keepalived,实现Master双主热备

4.1下载安装keepalived

2台master主机都下载 keepalive2.3.1。

wget https://www.keepalived.org/software/keepalived-2.3.1.tar.gz
tar -xzvf keepalived-2.2.4.tar.gz

安装依赖

yum -y install gcc openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel net-snmp-devel glib2-devel

安装keepalive,设置开机自启。

cd keepalived-2.3.1
./configure --prefix=/usr/local/keepalived-2.3.1
make && make install
systemctl enable keepalived

如下图所示,代表已支持IPVS虚拟IP功能。

 4.2 修改Master节点的keepalived.conf配置文件

创建并配置master01的keepalived.conf文件

mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf 
global_defs {
	router_id  Master_01	#节点服务名称
}
 
vrrp_script check_run {
   script "/etc/keepalived/mysql_check.sh"
   interval 5				#5秒执行一次脚本
}
 
vrrp_instance VIP_master {
    state MASTER			#节点的初始状态(MASTER|BACKUP)
    interface ens192		#承载VIP地址到物理接口
    virtual_router_id 100	#虚拟路由器ID号,主备都一样
    priority 100			#优先级,数值越大优先级越高
    advert_int 1			#指定发送 VRRP 广播的间隔,默认为1s
    authentication {		#主备间认证信息,每个热播组保持一致
        auth_type PASS      #认证类型,明文
        auth_pass mysql@123	#密码字串,主备都一样
    }
    virtual_ipaddress {
        172.16.40.222/24	#VIP地址(内网地址)
    }
    track_script {
        check_run
    }
}

主库 master01 检测脚本,编辑 /etc/keepalived/mysql_check.sh 文件:

#!/bin/bash
/usr/bin/mysql -uroot -p'你自己的数据库密码' -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then
    systemctl stop keepalived
else
	echo ok
fi
chmod u+x /etc/keepalived/mysql_check.sh

创建并配置master02的keepalive.conf文件。

mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf 
global_defs {
	router_id Master_02		#节点服务名称
}
 
vrrp_script check_run {
   script "/etc/keepalived/mysql_check.sh"
   interval 5				#5秒执行一次脚本
}
 
vrrp_instance VIP_master {
    state BACKUP			#节点的初始状态(MASTER|BACKUP)
    interface ens192		#承载VIP地址到物理接口
    virtual_router_id 100	#虚拟路由器ID号,主备都一样
    priority 90				#优先级,数值越大优先级越高
    advert_int 1			#指定发送 VRRP 广播的间隔,默认为1s
    authentication {		#主备间认证信息,每个热播组保持一致
        auth_type PASS      #认证类型,明文
        auth_pass mysql@123	#密码字串,主备都一样
    }
    virtual_ipaddress {
        172.16.40.222/24	#VIP地址(内网地址)
    }
    track_script {
        check_run
    }
}

主库 B 检测脚本,编辑 /etc/keepalived/mysql_check.sh 文件:

#!/bin/bash
/usr/bin/mysql -uroot -p'你自己的数据库密码' -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then
    systemctl stop keepalived
else
	echo ok
fi
chmod u+x /etc/keepalived/mysql_check.sh

4.3 启动Keepalive并校验状态

 在master01和主库master02上分别启动 keepalived。

systemctl start keepalived

可以看到master01根据配置文件获得了更高的优先级,成功的拿到了VIP地址:

  • 验证一(从客户端连接VIP登录mysql,查看当前mysql实例归属;同时新建表单数据,查看双主同步效果):

select @@hostname	# 查看数据库主机名

 通过客户端登录VIP—Mysql,新建表单数据,查看数据是否实现双主同步

create database testdb;

create table testdb.data01(id int not null primary key auto_increment, name varchar(60), age int); 

insert into testdb.data01 (name,age) values ('tom',18), ('jack',17), ('rock',16), ('james',15), ('cris',20);

校验成功,数据已在双主库中完成同步:

  • 验证二(关闭master01的mysql服务,查看VIP是否自动漂移到mysql02的网卡上;同时从客户端连接VIP登录mysql,查看VIP漂移后的mysql实例归属;)

    检验成功,关闭master01数据库服务后,keepalive检测脚本生效,主动关闭msater01的keepalive服务,顺利完成自动选主,VIP漂移至master02网卡上:

五、部署Slaves双主多从,主从同步

5.1 配置每台slave从机的/etc/my.cnf文件

# slave01
[mysqld]
#定义server-id,每台主机的唯一值
server-id=3
#添加主服务器开启二进制日志
log-bin=slave01-bin
#复制类型使用MIXED模式
binlog_format=MIXED
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
#设置自动删除 binlog 文件的天数
expire_logs_days=7
#开启GTID同步
gtid_mode=on
#强制事务一致,确保 GTID 的安全,在事务中就不能创建和删除临时表
enforce_gtid_consistency=on
#这个变量用于在 MySQL 重启或启动的时候寻找 GTIDs 过程中,控制 binlog 如何遍历的算法
binlog_gtid_simple_recovery=1
# slave02
[mysqld]
#定义server-id,每台主机的唯一值
server-id=2
#添加主服务器开启二进制日志
log-bin=slave02-bin
#复制类型使用MIXED模式
binlog_format=MIXED
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
#设置自动删除 binlog 文件的天数
expire_logs_days=7
#开启GTID同步
gtid_mode=on
#强制事务一致,确保 GTID 的安全,在事务中就不能创建和删除临时表
enforce_gtid_consistency=on
#这个变量用于在 MySQL 重启或启动的时候寻找 GTIDs 过程中,控制 binlog 如何遍历的算法
binlog_gtid_simple_recovery=1
# slave03
[mysqld]
#定义server-id,每台主机的唯一值
server-id=3
#添加主服务器开启二进制日志
log-bin=slave03-bin
#复制类型使用MIXED模式
binlog_format=MIXED
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
#设置自动删除 binlog 文件的天数
expire_logs_days=7
#开启GTID同步
gtid_mode=on
#强制事务一致,确保 GTID 的安全,在事务中就不能创建和删除临时表
enforce_gtid_consistency=on
#这个变量用于在 MySQL 重启或启动的时候寻找 GTIDs 过程中,控制 binlog 如何遍历的算法
binlog_gtid_simple_recovery=1

 保存后,分别重启3台Slave的mysql服务 systemctl restart mysqld

5.2 配置每台从机的Slave服务,校验主从同步结果

依次在3台Slave中配置数据同步账号(注意master_host为双主keepalive的VIP地址)。

change master to
    master_host='172.16.40.222',
    master_port=3306,
    master_user='test',
    master_password='test@666',
    master_auto_position=1;

 启动同步服务 start slave;,查看同步状态 show slave status\G;

客户端Client通过双主虚拟VIP 172.16.40.222 登录,并写入新数据至Master上,查看每台Slave已正常完成数据同步,即双主多从部署完毕。

六、部署Mycat,配置读写分离

6.1 下载安装Mycat1.6

安装配置jdk1.8环境。

tar -zxvf jdk-8u152-linux-x64.tar.gz
mv jdk1.8.0_152 /usr/local/
echo -e 'export JAVA_HOME=/usr/local/jdk1.8.0\nexport PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile

分别在Mycat01和Mycat02节点上安装Mycat1.6。下载地址:Mycat-download-old/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz at master · MyCATApache/Mycat-download-old · GitHub

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
mv mycat /usr/local/
echo -e 'export MYCAT_HOME=/usr/local/mycat\nexport PATH=$MYCAT_HOME/bin:$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile

6.2 修改Mycat配置文件

(参考:Mycat 三大配置文件详解

修改两台Mycat节点的/usr/local/mycat/conf/server.xml,配置mycat对外连接的账户信息。schemas的值需要与schema.xml中的schemas标签值保持一致

<user name="root">
        <property name="password">123456</property>
        <property name="schemas">testdb</property>

        <!-- 表级 DML 权限设置 -->
        <!--            
        <privileges check="false">
                <schema name="TESTDB" dml="0110" >
                        <table name="tb01" dml="0000"></table>
                        <table name="tb02" dml="1111"></table>
                </schema>
        </privileges>           
         -->
</user>

<user name="test">
        <property name="password">test123</property>
        <property name="schemas">testdb</property>
</user>

修改两台Mycat节点的/usr/local/mycat/conf/schema.xml文件,配置读写分离。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <!-- 数据库配置 与server.xml 中的数据库对应 -->
 <schema name="testdb" checkSQLschema="true" dataNode="dn_node1" sqlMaxLimit="100">
        <table name="data01" primaryKey="id" dataNode="dn_node1" />
 </schema>
 
    <!-- 分片配置 -->
 <dataNode name="dn_node1" dataHost="dh_host1" database="testdb" />
 
    <!-- 物理数据库配置 -->
 <dataHost name="dh_host1" maxCon="1000"  minCon="10" balance="3"
  writeType="0" dbType="mysql"  dbDriver="native" switchType="1"  slaveThreshold="100">
   <heartbeat>select user()</heartbeat>
   <writeHost host="hostM"  url="172.16.40.222:3306" user="root"  password="******">
   <readHost host="hostS1" url="172.16.40.91:3306" user="root" password="******" />
   <readHost host="hostS2" url="172.16.40.92:3306" user="root" password="******" />
   <readHost host="hostS3" url="172.16.40.93:3306" user="root" password="******" />
   </writeHost>
 </dataHost>
 
</mycat:schema>

6.3 开启Mycat,并对读写分离策略进行校验

 启动mycat服务。

mycat start

查看服务运行状态及端口。

 从客户端分别连接2台mycat并执行SQL查询,进行读写分离验证。

读取数据:mysql -utest -ptest123 -h172.16.40.81 -P8066 -e 'select @@hostname' ,可以看到读取操作只会随机分发到3台slave从节点上执行。

 写入数据:mysql -utest -ptest123 -h172.16.40.81 -P8066 -e 'insert into testdb.data01 (name,age) values (@@hostname,50)' , 可以看到写入的操作只会在master节点上执行。

在关闭master01的mysql服务后,再次连接mycat进行数据写入,可以看到执行写入的节点已近自动变为master02了。

七、部署HAProxy负载均衡+Keepalived实现高可用

7.1 安装Haproxy和Keepalived

yum -y install haproxy keepalived

 7.2 修改Haproxy配置文件

修改两台haproxy节点的/etc/haproxy/haproxy.cfg内容,配置如下:

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4096
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
defaults
    log global
    mode tcp
    option abortonclose
    option redispatch
    retries 3
    maxconn 2000
    timeout connect 5000
    timeout client 50000
    timeout server 50000
#---------------------------------------------------------------------
# HAProxy的状态信息统计页面
listen admin_stats
    bind    :50004                      # 管理页面端口号
    stats    uri /admin         # 管理页面地址路径
    stats    auth admin:123456           # 管理页面登录账户密码
    mode    http                        # 所处理的模式 (tcp:四层, http:七层, health:状态检查,只会返回OK)
    option    httplog                  # 启用日志记录HTTP请求
#--------------------------------------------------------------------
listen mycat_servers
    bind      :50005                    # Haproxy对外连接的端口号
    mode      tcp
    option    tcplog                    # 记录TCP请求日志
    option    tcpka                     # 在客户端和监听器之间以及HAProxy和后端服务器之间的连接上启用SO_KEEPALIVE
    balance    roundrobin               # 定义负载均衡算法为轮询方式(leastconn:以最少连接数算法来分配请求)
    server mycat01 172.16.40.81:8066 check inter 3000 rise 1 maxconn 1000 fall 3
    server mycat02 172.16.40.82:8066 check inter 3000 rise 1 maxconn 1000 fall 3
    # 格式:server <name> <address>[:[port]] [param*]
    # serser:在后端声明一个server,只能用于listen和backend区段。
    # <name>:为此服务器指定的内部名称,其将会出现在日志及警告信息中
    # <address>:此服务器的IPv4地址,也支持使用可解析的主机名,但要在启动时需要解析主机名至响应的IPV4地址
    # [:[port]]:指定将客户端连接请求发往此服务器时的目标端口,此为可选项
    # [param*]:为此server设定的一系列参数,均为可选项,参数比较多,下面仅说明几个常用的参数:
    # weight:权重,默认为1,最大值为256,0表示不参与负载均衡
    # backup:设定为备用服务器,仅在负载均衡场景中的其他server均不可以启用此server
    # check:启动对此server执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定
    # inter:设定监控状态检查的时间间隔,单位为毫秒,默认为2000,也可以使用fastinter和downinter来根据服务器端专题 
    #优化此事件延迟
    # rise:设置server从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为2)
    # fall:设置server从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为3)
    # cookie:为指定server设定cookie值,此处指定的值将会在请求入站时被检查,第一次为此值挑选的server将会被后续的请
    #求所选中,其目的在于实现持久连接的功能
    # maxconn:指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列 
    #,以等待其他连接被释放

7.3 保存配置,重启Haproxy服务,并查看端口运行状态

7.4 登录Haproxy管理页面,查看后端Mycat的检测状态

7.5 验证Haproxy负载均衡策略

客户端通过HAProxy访问Mycat测试,mysql -utest -ptest123 -h172.16.40.81 -P5005 -e 'select @@hostname'

 关闭后端其中一台Mycat服务,校验Haproxy是否顺利切换正常使用。

7.6 修改Keepalived配置文件

修改Haproxy01的/etc/keepalived/keepalived.conf内容:

global_defs {
	router_id Haproxy_01	#节点服务名称
}
 
vrrp_script chk_haproxy {
   script "/etc/keepalived/check_haproxy.sh"
   interval 5				#5秒执行一次脚本
}
 
vrrp_instance VIP_Haproxy {
    state MASTER			#节点的初始状态(MASTER|BACKUP)
    interface ens192		#承载VIP地址到物理接口
    virtual_router_id 110	#虚拟路由器ID号,主备都一样
    priority 100			#优先级,数值越大优先级越高
    advert_int 1			#指定发送 VRRP 广播的间隔,默认为1s
    authentication {		#主备间认证信息,每个热播组保持一致
        auth_type PASS      #认证类型,明文
        auth_pass haproxy@123	#密码字串,主备都一样
    }
    virtual_ipaddress {
        172.16.40.111/24	#VIP地址(内网地址)
    }
    track_script {
        chk_haproxy
    }
}

 Haproxy01状态检测脚本,编辑/etc/keepalived/check_haproxy.sh文件:

#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg
fi
sleep 3
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
killall keepalived
fi
chmod +x /etc/keepalived/check_haproxy.sh

修改Haproxy02的/etc/keepalived/keepalived.conf内容:

global_defs {
	router_id Haproxy_02	#节点服务名称
}
 
vrrp_script chk_haproxy {
   script "/etc/keepalived/check_haproxy.sh"
   interval 5				#5秒执行一次脚本
}
 
vrrp_instance VIP_Haproxy {
    state BACKUP			#节点的初始状态(MASTER|BACKUP)
    interface ens192		#承载VIP地址到物理接口
    virtual_router_id 110	#虚拟路由器ID号,主备都一样
    priority 90				#优先级,数值越大优先级越高
    advert_int 1			#指定发送 VRRP 广播的间隔,默认为1s
    authentication {		#主备间认证信息,每个热播组保持一致
        auth_type PASS      #认证类型,明文
        auth_pass haproxy@123	#密码字串,主备都一样
    }
    virtual_ipaddress {
        172.16.40.111/24	#VIP地址(内网地址)
    }
    track_script {
        chk_haproxy
    }
}

Haproxy02状态检测脚本,编辑/etc/keepalived/check_haproxy.sh文件:

#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg
fi
sleep 3
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
killall keepalived
fi
chmod +x /etc/keepalived/check_haproxy.sh

7.7 开启Keepalived服务,校验Haproxy高可用状态

 启动Keepalived,看下虚拟VIP落点。

systemctl start keepalived
systemctl status keepalived
ip addr show ens192

客户端通过HAProxy集群的VIP地址访问Mycat测试,mysql -utest -ptest123 -h172.16.40.111 -P50005 -e 'select @@hostname' 关闭Haproxy01的服务,再次从客户端连接VIP访问Mycat测试。  将Haproxy01的配置文件复原,检测脚本自动重启Haproxy01的服务,并成功复主拿到VIP。

 到此,集群环境全部部署完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值