首页 > 数据库 >Docker搭建MySQL负载均衡

Docker搭建MySQL负载均衡

时间:2023-03-16 13:13:09浏览次数:49  
标签:haproxy Haproxy 负载 MySQL 3306 Docker root localhost

Docker 拉取MySQL集群

https://www.cnblogs.com/zuoyoua/p/17212377.html

前言: 为什么要搭建负载均衡

# 在搭好集群的情况下,负载均衡可以消除服务器之间的负载不平衡,可以优化访问请求在服务器组之间的分配,提高系统的反应速度和总体性能
# 负载均衡能够监控服务器的运行状态,提高整个服务器组的可靠性。提高系统的扩展能力,简化管理。

1.安装Haproxy

# docker pull 拉取 Haproxy1.8.8版本

[root@localhost ~]# docker pull haproxy:1.8.8
1.8.8: Pulling from library/haproxy
f2aa67a397c4: Pull complete 
fbe89b1fc408: Pull complete 
3860fe2d1a0f: Pull complete 
bd6e6f0896cb: Pull complete 
Digest: sha256:559c1e881f4d0c8434caade0c3814dce4ec57b5c478783ed387f8eaf00967fbc
Status: Downloaded newer image for haproxy:1.8.8
docker.io/library/haproxy:1.8.8
[root@localhost ~]# 

2.编辑Haproxy配置文件

# pull拉取下来的Haproxy镜像不包含配置文件
# 我的本机没有soft文件夹 所以在这里 -p连续创建一下 
# 查看自己的目录如果有soft文件夹 在这里可以不用 -p
[root@localhost ~]# mkdir -p /home/soft/haproxy
[root@localhost ~]# 

# 进入 vi 编辑器模式  按i键进行编辑
[root@localhost ~]# vi /home/soft/haproxy/haproxy.cfg
# 复制配置文件
global
	chroot /usr/local/etc/haproxy
	log 127.0.0.1 local5 info
	daemon

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
	timeout connect 5000
	timeout client  50000
    timeout server  50000

listen  admin_stats
	bind  0.0.0.0:8888
    mode        http
    stats uri   /dbs
    stats realm     Global\ statistics
    stats auth  admin:abc123456
    
listen  proxy-mysql
	bind  0.0.0.0:3306  
	mode  tcp
    balance  roundrobin
    option  tcplog
    option  mysql-check user haproxy
    server  MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000  
    server  MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000  
	server  MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 
	server  MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
    option  tcpka  
# ESC键退出编辑模式  按一下「 :」冒号键 输入wq进行保存退出

3.进入容器,创建MySQL用户

# 进入你的MySQL 用命令创建用户  create user 'haproxy'@'%'  identified by '';  输入完退出MySQL exit 退出  然后退出容器 CTRL+P+Q 
[root@localhost ~]# docker exec -it node1 /bin/bash
root@29d17de3f772:/# mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.7.20-18-57-log Percona XtraDB Cluster (GPL), Release rel18, Revision 4a4da7e, WSREP version 29.24, wsrep_29.24

Copyright (c) 2009-2017 Percona LLC and/or its affiliates
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

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> create user 'haproxy'@'%'  identified by '';
Query OK, 0 rows affected (0.04 sec)

# mysql> exit
Bye
root@29d17de3f772:/# read escape sequence
[root@localhost ~]# 

4.创建Haproxy容器

# 运行 Haproxy 容器 
# 输入docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name haproxy1 --privileged --net=net1 haproxy:1.8.8 


[root@localhost ~]# docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name haproxy1 --privileged --net=net1 haproxy:1.8.8
ff5a611c360f49f3ad3bfbf6b5e65706091eb69dc5a8564a497879a7b762e08c
[root@localhost ~]# 

# 创建容器完成后 进入容器 启动Haproxy中间件
# 输入:haproxy -f /usr/local/etc/haproxy/haproxy.cfg
[root@localhost ~]# docker exec -it haproxy1 bash
root@ff5a611c360f:/# haproxy -f /usr/local/etc/haproxy/haproxy.cfg
root@ff5a611c360f:/#  
# 然后退出容器 CTRL+P+Q

5.访问Haproxy监控界面

# 在浏览器访问 http://宿主机ip:4001/dbs , 输入haproxy.cfg中配置的账号密码
例:http://192.168.120.133:4001/dbs
# 输入账号密码 刚才在Haproxy中配置的账号密码
用户名:admin
密码:abc123456

登录后,就可以查看数据集群的运行情况

标签:haproxy,Haproxy,负载,MySQL,3306,Docker,root,localhost
From: https://www.cnblogs.com/zuoyoua/p/17222162.html

相关文章

  • Docker离线安装部署
    卸载Docker(没有Docker就跳过)一、准备工作1.杀死docker有关的容器:dockerkill$(dockerps-a-q)2.删除所有docker容器:dockerrm$(dockerps-a-q)3.删除所有doc......
  • MySQL/MariaDB 取列名及类型
    SELECTTABLE_CATALOG,TABLE_NAME表名,COLUMN_KEY列键,COLUMN_NAME列名,COLUMN_TYPE数据类型,DATA_TYPE字段类型,......
  • 容器化docker部署nginx代理的go-web应用
    通常我们的web应用程序部署的时候不会直接暴露,通过nginx反向代理,一是隐藏真实后端,二是通过nginx的epoll网络IO多路复用,获取高性能的网络访问。今天我们分享个通过nginx代......
  • Mysql——事务隔离级别详解
        ......
  • MySQL三大日志——binlog、redo log和undo log详解
              ......
  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    在一个servlet中连接数据库,加载驱动报错,将异常抛了出来。  解决方案:创建的Maven项目中,在web.xml中引入了mysql的驱动,但是创建的servlet需要使用Tomcat服务器,Tomcat中......
  • flink cdc 读取mysql数据
    flinkcdc版本:1.14.0mysql版本:5.7 1、开启MySQL中binlog日志修改我们的配置文件my.cnf,增加:server_id=1log_bin=mysql-binbinlog_format=ROWexpire_logs_days=30......
  • MySQL中IF语句的使用
    mysql中if语句的使用参考地址:https://www.php.cn/mysql-tutorials-417851.html1IF表达式IF(expr1,expr2,expr3)如果expr1是true,则返回expr2,否则返回expr3select*,if......
  • mysql中单引号双引号的区别
    单独使用时,单引号和双引号没有区别;需要嵌套使用时,双引号和单引号可以互相嵌套。使用的结果是把内部的内容当做整体一个字符串变量不需要成对出现SELECT *FROM `exc......
  • docker 部署 postgres
    1.打开dockerhub查找postgres版本 地址https://registry.hub.docker.com/_/postgres/tags   2.复制需要的版本dockerpullpostgres:alpine3.17复制需......