docker学习系列14 使用haproxy实现mysql集群的负载均衡...
在上节中我们创建了 mysql 集群。
实际工作中,我们不希望让某一数据库节点处理所有的请求,这样的话单个负载高,性能差。
image.png
在这里我们使用haproxy作为负载均衡的中间件,类似的还有LVS,但是好像不支持虚拟机,在docker中用不了。
image.png
实现流程:
- 下载镜像
docker pull haproxy
- 宿主机创建 haproxy 的配置文件,比如路径是 D:\Docker\haproxy\haproxy.cfg
- 最重要的就是配置文件了。这里内容如下:
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
#########################################
- 启动 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
- 进去容器,并让 haproxy 加载配置
docker exec -it h1 bash
haproxy -f /usr/local/etc/haproxy/
- 宿主机打开
http://localhost:4001/dbs
这是haproxy 提供的图形界面
image.png
可以看到每个mysql节点运行状态是绿色,说明正常。
- 测试,停掉一个数据库节点
docker stop pxc_node1
,发现有一个变红了。
image.png
- 项目中可以使用配置的 4002 来连接数据库,这样请求会被分发到各个子节点。
总结:
- 数据库的负载均衡配置还是比较简单的,关键是负载均衡算法,如果每个数据库节点配置都一样,可以使用轮询算法,如果不一样,可以使用权重算法,让配置高的多接收请求。
- 官方的教程
问题:
- 启动停掉的节点
docker start pxc_node1
,mysql恢复不起来了。待研究。有谁知道麻烦告诉我。
image.png
docker学习系列14 使用haproxy实现mysql集群的负载均衡...相关推荐
- haproxy对mysql集群进行负载均衡
haproxy对mysql集群进行负载均衡: 参考网址:https://www.cnblogs.com/jave1ove/p/5980053.html 注: mysql为集群模式,我使用的为mysql ...
- docker swam 集群实现负载均衡
docker swam 集群实现负载均衡 文章目录 docker swam 集群实现负载均衡 1. 初始化集群 2. 虚拟IP 3. 服务发现 4. 多主机LB和服务发现 1. 初始化集群 第一个节点 ...
- MySQL数据库集群实现负载均衡的安装配置详解
本文我们详细地介绍了MySQL 5.0数据库集群负载均衡的安装配置工作,希望能够对您有所帮助. 本文我们主要介绍了MySQL数据库集群实现负载均衡的安装配置工作,接下来我们就让我们一起来了解一下这部分 ...
- mysql cluster java_Java学习笔记(十):MySQL集群安装配置
需要安装软件(所有的节点都必须安装,不需要安装mysql mysql-server,mysql-cluster有自带的): mysql-cluster-gpl-7.3.7-linux-glibc2.5 ...
- Docker学习(三) swarm 与tutk集群
Docker Swarm docker集群概念 群集是一组运行docker的设备组成,其中部分机器是集群管理机(Swarm Manager) ,其他的是工作机(Worker).群集中的机器可以是物理机 ...
- 如何在CentOS 7上使用HAproxy Loadbalancer设置Percona XtraDB集群(负载均衡)
翻译&转载来源:https://linoxide.com/cluster/setup-percona-cluster-haproxy-centos-7/ 如何在CentOS 7上使用HApro ...
- mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- 【docker】利用docker配置Nginx集群实现负载均衡
目录 1.启动docker服务 2.拉取Nginx.Tomcat 3.启动三个容器 4.配置 5.验证 1.启动docker服务 [root@mgr1 ~]# systemctl start dock ...
- Docker集群环境下安装Fastdfs集群+Nginx负载均衡
一.环境配置 现有两台服务器10.168.103.110(旧服务器)和10.168.103.111(新服务器),其中110服务器上有swarm集群,一个tracker和一个storage,现在要做Fa ...
最新文章
- Mysql学习总结(14)——Mysql主从复制配置
- NR 5G 关于gNB-CU和gNB-DU
- APUE学习笔记之UNIX系统概述(1)
- Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04
- c语言表现一些简单的图片,C语言的一些简单例题.doc
- 戳破微服务的七大谎言
- jvm 参数_6个重要的JVM性能参数
- 从无主之地看FPS+ARPG游戏的发展方向
- 服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法
- 一次面试总结(记录)
- Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
- ae去闪插件deflicker使用_AE去闪烁插件|RevisionFX DEFlicker(AE视频去闪烁插件) V1.4.12 官方版 下载_当下软件园_软件下载...
- 不用登陆QQ也能使用QQ截图工具
- dht磁力链php,基于 DHT 网络的磁力链接和BT种子的搜索引擎架构
- PDM系统与PLM系统
- Guass-Legendre(高斯-勒让德)求积方法 | Guass型求积公式 + Legendre多项式
- 计算机rs485通讯,RS485与电脑通信
- 盘点IT职场“最差”程序员,这7个特征尤为典型!
- 【Google面试题】有四个线程1、2、3、4同步写入数据…C++11实现
- 数据结构:单链表中在P结点前插入S结点
热门文章
- MySQL- SQL执行计划 统计SQL执行每阶段的耗时
- Spring-Spring MVC + Spring JDBC + Spring Transaction + Maven 构建web登录模块
- Oracle-HWM(High Water Mark) 高水位解读
- matlab读取表格读成mat文件,MATLAB 视频读取 Excel读写 Excel2txt txt2mat 按文件夹读取文件...
- mysql单列索引和多列索引_浅谈MySQL索引优化
- c语言中输入10,10 is greater than 0,2013练习题__Student
- java 输入框输入1到9_java程序设计 习题答案1到9
- Puppeteer + TypeScript 模拟 Ctrl + A 操作
- matlab plot title 包含变量的图片标题
- grep 显示搜索的关键字相关的行信息