• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > docker 搭建Mysql集群的方法示例

docker 搭建Mysql集群的方法示例

作者:hongxinerke 字体:[增加 减小] 来源:互联网

本文主要包含docker搭建Mysql集群,docker集群搭建等服务器相关知识,hongxinerke 希望可以进行参考

docker基本指令:

更新软件包

yum -y update

安装Docker虚拟机(centos 7)

yum install -y docker

运行、重启、关闭Docker虚拟机

service docker start
service docker stop

搜索镜像

docker search 镜像名称

下载镜像

docker pull 镜像名称

查看镜像

docker images

删除镜像

docker rmi 镜像名称

运行容器

docker run 启动参数 镜像名称

查看容器列表

docker ps -a

当我们想要使用java环境,我们可以这么操作:

搜索:
[root@VM_71_225_centos ~]# docker search java
INDEX    NAME                          DESCRIPTION                   STARS   OFFICIAL  AUTOMATED
docker.io  docker.io/node                     Node.js is a JavaScript-based platform for...  5752   [OK]
docker.io  docker.io/tomcat                    Apache Tomcat is an open source implementa...  1891   [OK]
docker.io  docker.io/java                     Java is a concurrent, class-based, and obj...  1745   [OK]
docker.io  docker.io/openjdk                   OpenJDK is an open-source implementation o...  1031   [OK]
下载:
[root@VM_71_225_centos ~]# docker pull docker.io/java
Using default tag: latest
Trying to pull repository docker.io/library/java ...
latest: Pulling from docker.io/library/java
5040bd298390: Downloading [=>                         ] 1.572 MB/51.36 MB
运行:
[root@VM_71_225_centos ~]# docker run -it --name myjava docker.io/java bash
root@25623e12b759:/# java


-i: 以交互模式运行容器,通常与 -t 同时使用;


-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

安装PXC集群(在此不做mysql pxc集群与replication集群的方案优劣说明,在此选用pxc集群方案[多节点备份与强联合性]):

安装PXC镜像

docker pull percona/percona-xtradb-cluster

查看本地镜像

[root@VM_71_225_centos ~]# docker images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/hello-world           latest       e38bc07ac18e    2 months ago    1.85 kB
docker.io/percona/percona-xtradb-cluster  latest       f1439de62087    3 months ago    413 MB
docker.io/java               latest       d23bdf5b1b1b    17 months ago    643 MB

docker.io/percona/percona-xtradb-cluster 太长,进行改名:

[root@VM_71_225_centos ~]# docker tag percona/percona-xtradb-cluster pxc
[root@VM_71_225_centos ~]# docker images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/hello-world           latest       e38bc07ac18e    2 months ago    1.85 kB
docker.io/percona/percona-xtradb-cluster  latest       f1439de62087    3 months ago    413 MB
pxc                    latest       f1439de62087    3 months ago    413 MB
docker.io/java               latest       d23bdf5b1b1b    17 months ago    643 MB

创建net1网段:

docker network create --subnet=172.18.0.0/16 net1

创建五个数据卷(pxc无法直接存取宿组机的数据,所以创建五个docker数据卷)

docker volume create v1
docker volume create v2
docker volume create v3
docker volume create v4
docker volume create v5

查看数据卷位置:

[root@VM_71_225_centos code]# docker inspect v1
[
  {
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/v1/_data",
    "Name": "v1",
    "Options": {},
    "Scope": "local"
  }
]

创建5节点的PXC集群

#创建第1个MySQL节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

等待2分钟后,再创建第二个节点,等待第一个节点实例化完毕后,才能开启第二个节点实例,不然会瞬间停止

创建其他节点:

#创建第2个MySQL节点
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
#创建第3个MySQL节点
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
#创建第4个MySQL节点
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
#创建第5个MySQL节点
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

测试在任意mysql节点创建数据库:

mysql -h 172.18.0.3 -uroot -pabc123456

mysql> create database test;
Query OK, 1 row affected (0.03 sec)

登录其他节点数据库,能看到已经进行了同步,构成简单的mysql集群

安装Haproxy进行高可用与负载均衡

拉取haproxy

docker pull haproxy

编写Haproxy配置文件

vi /home/soft/haproxy.cfg

配置文件如下:

global
  #工作目录
  chroot /usr/local/etc/haproxy
  #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
  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
  #监控界面的访问的IP和端口
  bind 0.0.0.0:8888
  #访问协议
  mode    http
  #URI相对地址
  stats uri  /dbs
  #统计报告格式
  stats realm   Global\ statistics
  #登陆帐户信息
  stats auth admin:abc123456
#数据库负载均衡
listen proxy-mysql
  #访问的IP和端口
  bind 0.0.0.0:3306 
  #网络协议
  mode tcp
  #负载均衡算法(轮询算法)
  #轮询算法:roundrobin
  #权重算法:static-rr
  #最少连接算法:leastconn
  #请求源IP算法:source 
  balance roundrobin
  #日志格式
  option tcplog
  #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
  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
  server MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000
  #使用keepalive检测死链
  option tcpka

创建第1个Haproxy负载均衡服务器

进入h1容器,启动Haproxy

docker exec -it h1 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

查看是否启动成功:

访问http://ip:4001/dbs

安装keepalive实现双击热备

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • Docker安装常用组件(mysql,redis)的方法
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • docker 搭建Mysql集群的方法示例

相关文章

  • Xenserver迁移所有虚拟机到VMware vSphere 6.0
  • Docker 给运行中的容器设置端口映射的方法
  • Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法
  • VMware配置虚拟机静态IP地址的方法
  • Docker 中的容器完全解析
  • Docker为网络bridge模式指定容器ip的方法
  • CoreOS配置Docker镜像加速器的方法
  • docker 开源的应用容器引擎
  • Docker 限制容器对内存的使用详解
  • Docker新手实践及部署NGINX的步骤详解

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解Docker 容器基础系统镜像打包
    • Docker 默认bridge网络中配置DNS的方法
    • 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则(图解)
    • 主机和VMware中的Linux实现共享文件夹的图文教程
    • 局域网内部署 Docker Registry(推荐)
    • Docker 手动配置容器网络实例详解
    • 使用Docker容器搭建MySql主从复制
    • Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)
    • Docker容器使用jenkins部署web项目(总结)
    • docker容器如何优雅的终止详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有