在上节中我们创建了 mysql 集群。
实际工作中,我们不希望让某一数据库节点处理所有的请求,这样的话单个负载高,性能差。

image.png

在这里我们使用haproxy作为负载均衡的中间件,类似的还有LVS,但是好像不支持虚拟机,在docker中用不了。

image.png

实现流程:

  1. 下载镜像 docker pull haproxy
  2. 宿主机创建 haproxy 的配置文件,比如路径是 D:\Docker\haproxy\haproxy.cfg
  3. 最重要的就是配置文件了。这里内容如下:
globaldaemon# nbproc 1# pidfile /var/run/haproxy.pid# 工作目录chroot /usr/local/etc/haproxydefaultslog 127.0.0.1 local0 err #[err warning info debug]mode http                #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OKretries 2                #两次连接失败就认为是服务器不可用,也可以通过后面设置option redispatch        #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器option abortonclose      #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接option dontlognull       #日志中不记录负载均衡的心跳检测记录maxconn 4096             #默认的最大连接数timeout connect 5000ms   #连接超时timeout client 30000ms   #客户端超时timeout server 30000ms   #服务器超时#timeout check 2000      #=心跳检测超时######## 监控界面配置 #################
listen admin_status# 监控界面访问信息bind 0.0.0.0:8888mode http# URI相对地址stats uri /dbs# 统计报告格式stats realm Global\ statistics# 登录账户信息stats auth admin:123456
########frontend配置###################### mysql负载均衡配置 ###############
listen proxy-mysqlbind 0.0.0.0:3306mode tcp# 负载均衡算法# static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobinbalance roundrobin# 日志格式option tcplog# 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户# create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;option mysql-check user haproxy# 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效server MYSQL_1 172.18.0.2:3306 check weight 1 maxconn 2000server MYSQL_2 172.18.0.3:3306 check weight 1 maxconn 2000server MYSQL_3 172.18.0.4:3306 check weight 1 maxconn 2000# 使用keepalive检测死链# option tcpka
#########################################
  1. 启动 haproxy 的容器,镜像名称为 h1,网络名称使用上节中创建的 pxc-network,就是和 mysql 集群处于同一网络。
    docker run -it -d -p 4001:8888 -p 4002:3306 -v D:/Docker/haproxy:/usr/local/etc/haproxy --name h1 --net=pxc-network
  2. 进去容器,并让 haproxy 加载配置
    docker exec -it h1 bash
    haproxy -f /usr/local/etc/haproxy/
  3. 宿主机打开 http://localhost:4001/dbs 这是haproxy 提供的图形界面
image.png

可以看到每个mysql节点运行状态是绿色,说明正常。

  1. 测试,停掉一个数据库节点 docker stop pxc_node1 ,发现有一个变红了。
image.png

  1. 项目中可以使用配置的 4002 来连接数据库,这样请求会被分发到各个子节点。

总结:

  1. 数据库的负载均衡配置还是比较简单的,关键是负载均衡算法,如果每个数据库节点配置都一样,可以使用轮询算法,如果不一样,可以使用权重算法,让配置高的多接收请求。
  2. 官方的教程

问题:

  1. 启动停掉的节点 docker start pxc_node1,mysql恢复不起来了。待研究。有谁知道麻烦告诉我。
image.png

docker学习系列14 使用haproxy实现mysql集群的负载均衡...相关推荐

  1. haproxy对mysql集群进行负载均衡

    haproxy对mysql集群进行负载均衡: 参考网址:https://www.cnblogs.com/jave1ove/p/5980053.html 注: mysql为集群模式,我使用的为mysql ...

  2. docker swam 集群实现负载均衡

    docker swam 集群实现负载均衡 文章目录 docker swam 集群实现负载均衡 1. 初始化集群 2. 虚拟IP 3. 服务发现 4. 多主机LB和服务发现 1. 初始化集群 第一个节点 ...

  3. MySQL数据库集群实现负载均衡的安装配置详解

    本文我们详细地介绍了MySQL 5.0数据库集群负载均衡的安装配置工作,希望能够对您有所帮助. 本文我们主要介绍了MySQL数据库集群实现负载均衡的安装配置工作,接下来我们就让我们一起来了解一下这部分 ...

  4. mysql cluster java_Java学习笔记(十):MySQL集群安装配置

    需要安装软件(所有的节点都必须安装,不需要安装mysql mysql-server,mysql-cluster有自带的): mysql-cluster-gpl-7.3.7-linux-glibc2.5 ...

  5. Docker学习(三) swarm 与tutk集群

    Docker Swarm docker集群概念 群集是一组运行docker的设备组成,其中部分机器是集群管理机(Swarm Manager) ,其他的是工作机(Worker).群集中的机器可以是物理机 ...

  6. 如何在CentOS 7上使用HAproxy Loadbalancer设置Percona XtraDB集群(负载均衡)

    翻译&转载来源:https://linoxide.com/cluster/setup-percona-cluster-haproxy-centos-7/ 如何在CentOS 7上使用HApro ...

  7. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  8. 【docker】利用docker配置Nginx集群实现负载均衡

    目录 1.启动docker服务 2.拉取Nginx.Tomcat 3.启动三个容器 4.配置 5.验证 1.启动docker服务 [root@mgr1 ~]# systemctl start dock ...

  9. Docker集群环境下安装Fastdfs集群+Nginx负载均衡

    一.环境配置 现有两台服务器10.168.103.110(旧服务器)和10.168.103.111(新服务器),其中110服务器上有swarm集群,一个tracker和一个storage,现在要做Fa ...

最新文章

  1. Mysql学习总结(14)——Mysql主从复制配置
  2. NR 5G 关于gNB-CU和gNB-DU
  3. APUE学习笔记之UNIX系统概述(1)
  4. Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04
  5. c语言表现一些简单的图片,C语言的一些简单例题.doc
  6. 戳破微服务的七大谎言
  7. jvm 参数_6个重要的JVM性能参数
  8. 从无主之地看FPS+ARPG游戏的发展方向
  9. 服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法
  10. 一次面试总结(记录)
  11. Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
  12. ae去闪插件deflicker使用_AE去闪烁插件|RevisionFX DEFlicker(AE视频去闪烁插件) V1.4.12 官方版 下载_当下软件园_软件下载...
  13. 不用登陆QQ也能使用QQ截图工具
  14. dht磁力链php,基于 DHT 网络的磁力链接和BT种子的搜索引擎架构
  15. PDM系统与PLM系统
  16. Guass-Legendre(高斯-勒让德)求积方法 | Guass型求积公式 + Legendre多项式
  17. 计算机rs485通讯,RS485与电脑通信
  18. 盘点IT职场“最差”程序员,这7个特征尤为典型!
  19. 【Google面试题】有四个线程1、2、3、4同步写入数据…C++11实现
  20. 数据结构:单链表中在P结点前插入S结点

热门文章

  1. MySQL- SQL执行计划 统计SQL执行每阶段的耗时
  2. Spring-Spring MVC + Spring JDBC + Spring Transaction + Maven 构建web登录模块
  3. Oracle-HWM(High Water Mark) 高水位解读
  4. matlab读取表格读成mat文件,MATLAB 视频读取 Excel读写 Excel2txt txt2mat 按文件夹读取文件...
  5. mysql单列索引和多列索引_浅谈MySQL索引优化
  6. c语言中输入10,10 is greater than 0,2013练习题__Student
  7. java 输入框输入1到9_java程序设计  习题答案1到9
  8. Puppeteer + TypeScript 模拟 Ctrl + A 操作
  9. matlab plot title 包含变量的图片标题
  10. grep 显示搜索的关键字相关的行信息