android系统定制开发Mycat高可用方案-HAProxy+Keepalived

🍁 作者:微枫Micromaple

💒 主页:

📌 简介:Java程序员、android系统定制开发后端全栈工程师

🔗 点赞👍➕收藏⭐➕留言📝 android系统定制开发您的支持就是我前进的动力💪💪💪

大家好,我是微枫Micromaple,android系统定制开发下面是我的Mycat系列专栏(持续更新ing),有喜欢的小伙伴欢迎订阅学习呀

🚀 深入学习Mycat

Mycat系列专栏:

🔥 Mycat主从搭建、读写分离:

🔥 Mycat实现分库分表:

🔥 Mycat实现单库水平分表、按月分表:

文章目录

一、概述

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

二、高可用方案

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

编号角色IP地址
1Mycat1192.168.110.145
2Mycat2192.168.110.150
3HAProxy(master)192.168.110.151
4Keepalived(master)192.168.110.151
5HAProxy(backup)192.168.110.152
6Keepalived(backup)192.168.110.152

三、安装配置 HAProxy

各版本下载地址:

https://src.fedoraproject.org/repo/pkgs/haproxy/
  • 1

本文使用版本为:1.5.18

下载地址:

https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.18.tar.gz/21d35f114583ef731bc96af05b46c75a/haproxy-1.5.18.tar.gz
  • 1

安装步骤:

  • 将下载好的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
    • 1
    • 2
    • 3
    • 4
  • 安装依赖插件

    # Ubuntu 依次执行sudo apt-get install -y gccsudo apt-get install -y g++sudo apt-get install -y libssl-devsudo apt-get install -y daemonsudo apt-get install -y make# CentOSyum install -y gcc openssl-devel popt-devel
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 查看内核版本,进行编译

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

    make install PREFIX=/usr/local/haproxy
    • 1
  • 安装完成

    • 创建配置目录
    mkdir -p /usr/data/haproxy/
    • 1
    • 创建HAProxy配置文件
    vim /usr/local/haproxy/haproxy.conf
    • 1

    配置内容如下:

    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
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 启动验证

    • 启动HAProxy

      /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
      • 1
    • 查看HAProxy进程

      ps -ef|grep haproxy
      • 1
    • 打开浏览器访问

      http://192.168.110.151:7777/admin
      • 1

      输入配置文件中的账号密码进行访问。admin/123456

    • 验证负载均衡,通过HAProxy访问Mycat

      mysql -umycat -p123456 -h 192.168.110.151 -P 48066
      • 1

HAProxy(backup) 192.168.110.152如上配置

四、配置

各版本下载地址:

https://www.keepalived.org/download.html
  • 1

本文使用版本为:1.4.2

下载地址:

https://www.keepalived.org/software/keepalived-1.4.2.tar.gz
  • 1

安装步骤:

  • 将下载好的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
    • 1
    • 2
    • 3
    • 4
  • 安装依赖插件

    # Ubuntu 依次执行sudo apt-get install -y gccsudo apt-get install -y g++sudo apt-get install -y libssl-devsudo apt-get install -y daemonsudo apt-get install -y make# CentOSyum install -y gcc openssl-devel popt-devel
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 进入解压后的目录,进行配置

    cd /usr/local/src/keepalived-1.4.2./configure --prefix=/usr/local/keepalived
    • 1
    • 2
  • 进行编译,完成后进行安装

    cd /usr/local/src/keepalived-1.4.2make && make install
    • 1
    • 2
  • 运行前配置,将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/
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 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/
      • 1
      • 2
      • 3
      • 4
      • 5
  • 修改配置文件

    vim /etc/keepalived/keepalived.conf
    • 1

    配置文件内容如下:

    ! Configuration File for keepalivedglobal_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        }    }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 配置重载

    systemctl daemon-reload
    • 1
  • 启动验证

    • 启动Keepalived

      service keepalived start
      • 1
    • 启动后可以看到在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
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    • 查看Keepalived状态

      service keepalived status
      • 1
    • 登录验证

      mysql -umycat -p123456 -h 192.168.110.200 -P 48066
      • 1
  • 测试高可用

    • 关闭Mycat1

    • 通过虚拟IP查询数据

      # 通过Keepalived登录数据库mysql -umycat -p123456 -h 192.168.110.200 -P 48066# 切换数据库use TESTDB;# 执行SQL命令show tables;
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      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 in set (0.00 sec)
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发