实现Mycat的高可用

        下面,要实践一下Mycat的高可用。

        至于Mycat中的一些配置,这里不做说明,可以参考https://blog.csdn.net/weixin_32822759/article/details/106446107,这篇文章里面有说明。

一、环境准备

       我准备了两台虚拟机,虚拟机的ip如下

第一台 第二台
192.168.1.105

192.168.1.110

        数据是采用docker搭建,搭建方式,可以参考https://blog.csdn.net/weixin_32822759/article/details/106301966,这篇文章里面有说明。

        在两台虚拟机都配置好Mycat。

二、Haproxy的安装

       我这里,不使用安装包来安装,使用docker的方式。

      首先,需要拉取Haproxy的镜像,命令如下

docker pull haproxy

      在目录下/home/haproxy/conf(没有目录就新建一个),新建haproxy.cfg文件,文件内容如下

global
    log         127.0.0.1 local2
    maxconn     4000
    daemon

defaults
        log     global
        log 127.0.0.1 local3
        mode    http
        option  tcplog
        option  dontlognull
        retries 10
        option redispatch
        maxconn         2000
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s

listen  mycat
        bind 0.0.0.0:3300
        mode tcp
        balance roundrobin  # 表示负载的策略为轮询
        server mycat-143 192.168.1.105:8066 check port 8066 maxconn 300  # 表示监控的服务是mycat,最大上限连接为300个
        server mycat-142 192.168.1.110:8066 check port 8066 maxconn 300

listen stats
        bind 0.0.0.0:1080
        mode http
        option httplog
        maxconn 10
        stats refresh 30s
        stats uri /stats
        stats realm XingCloud\ Haproxy
        stats auth admin:admin #用这个账号登录,可以自己设置。haproxy页面上需要使用这个登录
        stats auth Frank:Frank
        stats hide-version
        stats admin if TRUE

命令如下

docker run -ti -d -p 3300:3300  -p 1080:1080 --name haproxy -v /home/haproxy/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest

查看一下haproxy是否成功启动

访问haproxy,地址为http://192.168.1.110:1080/stats

实现Mycat的高可用_第1张图片

     另一个节点192.168.1.105上的haproxy安装也是如此。

 

三、Keepalived安装

    1、keepavlied的安装,可以参考https://blog.csdn.net/weixin_32822759/article/details/106304286,这篇文件里面有说明。

    2、chk.sh的配置文件如下

# vi /etc/keepalived/chk.sh#!/bin/bash
#
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       killall keepalived
fi

   3、keepalived.cfg配置文件内容如下

! Configuration File for keepalived
#简单的头部,这里主要可以做邮件通知报警等的设置,此处就暂不配置了;
global_defs {
       #notificationd LVS_DEVEL
}
#预先定义一个脚本,方便后面调用,也可以定义多个,方便选择;
vrrp_script chk_mysql_life {
    script "/etc/keepalived/chk.sh"  #具体脚本路径
    interval 2  #脚本循环运行间隔
}
#VRRP虚拟路由冗余协议配置
vrrp_instance VI_1 {   #VI_1 是自定义的名称;
    state MASTER   #MASTER表示是一台主设备,BACKUP表示为备用设备【我们这里因为设置为开启不抢占,所以都设置为备用】
    nopreempt      #开启不抢占
    interface ens33   #指定VIP需要绑定的物理网卡
    virtual_router_id 50   #VRID虚拟路由标识,也叫做分组名称,该组内的设备需要相同
    priority 99   #定义这台设备的优先级 1-254;开启了不抢占,所以此处优先级必须高于另一台

    advert_int 1   #生存检测时的组播信息发送间隔,组内一致
    authentication {    #设置验证信息,组内一致
        auth_type PASS   #有PASS 和 AH 两种,常用 PASS
        auth_pass asd    #密码
    }
    virtual_ipaddress {
        192.168.1.200    #指定VIP地址,组内一致,可以设置多个IP
    }
    track_script {    #使用在这个域中使用预先定义的脚本,上面定义的
        chk_mysql_life
    }

    #notify_backup "/etc/init.d/haproxy restart"   #表示当切换到backup状态时,要执行的脚本
    #notify_fault "/etc/init.d/haproxy stop"     #故障时执行的脚本
}

     4、启动keepalived

     5、访问一下,看看效果,如图

实现Mycat的高可用_第2张图片

连接数据库看看

实现Mycat的高可用_第3张图片

         另说明一下,keepalived只能做http的负载,而haproxy可以做http、tcp的负载。所以这个架构里面使用keepalived负载haproxy,haproxy负载mycat。

你可能感兴趣的:(Mycat)