Mycat高可用方案-HAProxy+Keepalived

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Mycat高可用方案-HAProxy+Keepalived

概述

在实际项目中,Mycat服务也需要考虑高可用性,如果Mycat所在服务器出现宕机,或Mycat服务故障,需要有备机提供服务,需要考虑Mycat集群。

高可用方案

使用HAProxy + Keepalived配合两台Mycat搭起Mycat集群,实现高可用性。HAProxy实现了Mycat多节点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived 来实现。

011.Mycat_高可用方案.jpg

编号 角色 IP地址
1 Mycat1 192.168.110.145
2 Mycat2 192.168.110.150
3 HAProxy(master) 192.168.110.151
4 Keepalived(master) 192.168.110.151
5 HAProxy(backup) 192.168.110.152
6 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/src
    wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.18.tar.gz/21d35f114583ef731bc96af05b46c75a/haproxy-1.5.18.tar.gz
    tar -zxvf haproxy-1.5.18.tar.gz
    cd /usr/local/src/haproxy-1.5.18
  • 安装依赖插件

    # Ubuntu 依次执行
    sudo apt-get install -y gcc
    sudo apt-get install -y g++
    sudo apt-get install -y libssl-dev
    sudo apt-get install -y daemon
    sudo apt-get install -y make
    # CentOS
    yum install -y gcc openssl-devel popt-devel
  • 查看内核版本,进行编译

    # 查看内核版本
    uname -r
    # 查看 haproxy README文件对应的系统内核版本
    cat /usr/local/haproxy/README
    make TARGET=linux2628 PREFIX=/usr/local/haproxy ARCH=x86_64
    • ARGET:内核版本,使用uname -r查看内核,结合查看haproxy README文件对应的系统内核版本
    • ARCH:系统位数
    • PREFIX:为haprpxy安装路径
  • 编译完成,进行安装

    make install PREFIX=/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
        #quiet
    defaults
        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

      012.Mycat_HAProxy状态.jpg

    • 验证负载均衡,通过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/src
    wget https://www.keepalived.org/software/keepalived-1.4.2.tar.gz
    tar -zxvf keepalived-1.4.2.tar.gz
    cd /usr/local/src/keepalived-1.4.2
  • 安装依赖插件

    # Ubuntu 依次执行
    sudo apt-get install -y gcc
    sudo apt-get install -y g++
    sudo apt-get install -y libssl-dev
    sudo apt-get install -y daemon
    sudo apt-get install -y make
    # CentOS
    yum 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.2
    make && make install
  • 运行前配置,将keepalived设置为系统服务

    • Ubuntu配置

      mkdir /etc/keepalived
      mkdir /etc/sysconfig
      cp /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/keepalived
      cp /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/keepalived
      cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
  • 修改配置文件

    vim /etc/keepalived/keepalived.conf

    配置文件内容如下:

    ! Configuration File for keepalived
    global_defs {
        notification_email {
            xlcocoon@foxmail.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 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 addr
      1: 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 forever
      2: 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 forever
      3: 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

      013.Mycat_Keepalived_停止Mycat.jpg

    • 通过虚拟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 48066
      mysql: [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 2
      Server 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 its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      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 names
      You can turn off this feature to get a quicker startup with -A
      
      Database changed
      mysql> show tables;
      +------------------+
      | Tables_in_orders |
      +------------------+
      | customer         |
      | dict_order_type  |
      | login_info       |
      | orders           |
      | orders_detail    |
      | orders_ware_info |
      | payment_info     |
      +------------------+
      7 rows in set (0.00 sec)
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
编解码 Linux 内存技术
LosslessCut倍速 LosslessCut github免费中文版,免费视频剪辑有哪些
LosslessCut 是一款免费开源的无损音视频剪切工具,支持 Win、Mac 和 Linux 平台。它无需重新编码即可快速裁剪音视频并保持高质量。软件支持多种格式,包括 MP4、MOV、FLAC 等,具备无损剪切、轨道编辑、元数据修改等功能,还提供中文界面切换及丰富快捷键操作,适合高效处理多媒体文件。
208 0
|
SQL 关系型数据库 MySQL
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
164 0
|
10月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
487 8
|
6月前
|
人工智能 小程序 算法
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
1009 14
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)
168 0
基于SpringBoot+Vue+uniapp的小说阅读平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
存储 SQL 分布式计算
数据湖架构及概念简介
本文整理自阿里云开源大数据技术专家陈鑫伟在7月17日阿里云数据湖技术专场交流会的分享。
3835 0
数据湖架构及概念简介
|
关系型数据库 MySQL 数据安全/隐私保护
Docker 安装 MySQL5.7 和 MySQL8
Docker 安装 MySQL5.7 和 MySQL8
777 0
|
Shell
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
2168 0
|
监控 Java Shell
(二)Logback配置
Logback通过加载配置文件的方式来初始化配置,配置文件的加载顺序如下: 1)Logback首先会去类路径下找名为logback-test.xml的文件。 2)如果没有找到如上文件,会去类路径下找名为logback.groovy的文件。 3)如果没有找到如上文件,会去类路径下找名logback.xml的文件。
(二)Logback配置