Mycat高可用方案-HAProxy+Keepalived

Mycat高可用方案-HAProxy+KeepalivedHAProxy Keepalived 实现 Mycat 的高可用

? 作者:微枫Micromaple

? 主页:欢迎关注Micromaple

? 简介:Java程序员、后端全栈工程师

? 点赞?➕收藏⭐➕留言? 您的支持就是我前进的动力???

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

? 深入学习Mycat

Mycat系列专栏:点我学习

? Mycat主从搭建、读写分离:点我学习

? Mycat实现分库分表:点我学习

? Mycat实现单库水平分表、按月分表:点我学习

一、概述

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

二、高可用方案

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

在这里插入图片描述

编号 角色 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/21d35fef731bc96af05b46c75a/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/21d35fef731bc96af05b46c75a/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: 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/

      在这里插入图片描述

    • 验证负载均衡,通过HAProxy访问Mycat
      mysql -umycat -p -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 {  } notification_email_from  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 -p -h 192.168.110.200 -P 48066 
  • 测试高可用
    • 关闭Mycat1

      在这里插入图片描述

    • 通过虚拟IP查询数据
      # 通过Keepalived登录数据库 mysql -umycat -p -h 192.168.110.200 -P 48066 # 切换数据库 use TESTDB; # 执行SQL命令 show tables; 
      root@ubuntu-mysql-master:~# mysql -umycat -p -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-810 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) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217027.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:31
下一篇 2026年3月18日 上午10:31


相关推荐

  • java中array的方法_array java

    java中array的方法_array java题目要求为:卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的…

    2026年2月1日
    5
  • java实训自我总结_java实训个人总结

    java实训自我总结_java实训个人总结java 实训个人总结 java 实训个人总结范文实训已经进行两周多了 还有一周就要正式结束了 突然发现自己似乎又重蹈覆辙了 再一次一次的不经意中和某些人的就距离却是越来越来大 总是想偷一下懒 总是想着马马虎虎过去算了 没有那么精打细算过 结果不经意有些人人开始脱颖而出 有些人开始展露锋芒 而我也开始黯淡下去 我是想好好学学别人的 结果画虎不成反类犬 原来我也是不轻易臣服的人 我即便不去领导他们也没

    2026年3月18日
    3
  • eclipse中文版自动补全设置

    eclipse中文版自动补全设置eclipse中文版自动补全设置如下:

    2022年6月28日
    27
  • 全排列 leetcode_8的全排列

    全排列 leetcode_8的全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]classSolution:defpermute(self,nums):res=[]defbackt…

    2026年2月4日
    7
  • Cpu流水线_cpu多级流水线

    Cpu流水线_cpu多级流水线原文地址:AJourneyThroughtheCPUPipeline转载翻译地址:CPU流水线的探秘之旅作为程序员,CPU在我们的工作中扮演了核心角色,因此了解处理器内部的工作方式对程序员来说不无裨益。CPU是如何工作的呢?一条指令执行需要多长时间?当我们讨论某个新款处理器拥有12级流水线还是18级流水线,甚至是更深的31级流水线时,这到些都意味着什么呢?应用程序通常会将CPU看

    2022年8月20日
    12
  • navicat15激活码(破解版激活)

    navicat15激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    134

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号