docker怎么搭建Mysql集群

2021-02-23 07:37:19 165 0
tangjin

这篇文章主要介绍了docker怎么搭建Mysql集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

docker基本指令:

更新软件包

yum-yupdate

安装Docker虚拟机(centos 7)

yuminstall-ydocker

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

servicedockerstart
servicedockerstop

搜索镜像

dockersearch镜像名称

下载镜像

dockerpull镜像名称

查看镜像

dockerimages

删除镜像

dockerrmi镜像名称

运行容器

dockerrun启动参数镜像名称

查看容器列表

dockerps-a

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

搜索:
[root@VM_71_225_centos~]#dockersearchjava
INDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
docker.iodocker.io/nodeNode.jsisaJavaScript-basedplatformfor...5752[OK]
docker.iodocker.io/tomcatApacheTomcatisanopensourceimplementa...1891[OK]
docker.iodocker.io/javaJavaisaconcurrent,class-based,andobj...1745[OK]
docker.iodocker.io/openjdkOpenJDKisanopen-sourceimplementationo...1031[OK]
下载:
[root@VM_71_225_centos~]#dockerpulldocker.io/java
Usingdefaulttag:latest
Tryingtopullrepositorydocker.io/library/java...
latest:Pullingfromdocker.io/library/java
5040bd298390:Downloading[=>]1.572MB/51.36MB
运行:
[root@VM_71_225_centos~]#dockerrun-it--namemyjavadocker.io/javabash
root@25623e12b759:/#java


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


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

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

安装PXC镜像

dockerpullpercona/percona-xtradb-cluster

查看本地镜像

[root@VM_71_225_centos~]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
docker.io/hello-worldlateste38bc07ac18e2monthsago1.85kB
docker.io/percona/percona-xtradb-clusterlatestf1439de620873monthsago413MB
docker.io/javalatestd23bdf5b1b1b17monthsago643MB

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

[root@VM_71_225_centos~]#dockertagpercona/percona-xtradb-clusterpxc
[root@VM_71_225_centos~]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
docker.io/hello-worldlateste38bc07ac18e2monthsago1.85kB
docker.io/percona/percona-xtradb-clusterlatestf1439de620873monthsago413MB
pxclatestf1439de620873monthsago413MB
docker.io/javalatestd23bdf5b1b1b17monthsago643MB

创建net1网段:

dockernetworkcreate--subnet=172.18.0.0/16net1

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

dockervolumecreatev1
dockervolumecreatev2
dockervolumecreatev3
dockervolumecreatev4
dockervolumecreatev5

查看数据卷位置:

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

创建5节点的PXC集群

#创建第1个MySQL节点
dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-vv1:/var/lib/mysql-vbackup:/data--privileged--name=node1--net=net1--ip172.18.0.2pxc

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

创建其他节点:

#创建第2个MySQL节点
dockerrun-d-p3307:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv2:/var/lib/mysql-vbackup:/data--privileged--name=node2--net=net1--ip172.18.0.3pxc
#创建第3个MySQL节点
dockerrun-d-p3308:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv3:/var/lib/mysql--privileged--name=node3--net=net1--ip172.18.0.4pxc
#创建第4个MySQL节点
dockerrun-d-p3309:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv4:/var/lib/mysql--privileged--name=node4--net=net1--ip172.18.0.5pxc
#创建第5个MySQL节点
dockerrun-d-p3310:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv5:/var/lib/mysql-vbackup:/data--privileged--name=node5--net=net1--ip172.18.0.6pxc

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

mysql-h172.18.0.3-uroot-pabc123456

mysql>createdatabasetest;
QueryOK,1rowaffected(0.03sec)

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

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

拉取haproxy

dockerpullhaproxy

编写Haproxy配置文件

vi/home/soft/haproxy.cfg

配置文件如下:

global
#工作目录
chroot/usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
log127.0.0.1local5info
#守护进程运行
daemon

defaults
logglobal
modehttp
#日志格式
optionhttplog
#日志中不记录负载均衡的心跳检测记录
optiondontlognull
#连接超时(毫秒)
timeoutconnect5000
#客户端超时(毫秒)
timeoutclient50000
#服务器超时(毫秒)
timeoutserver50000

#监控界面
listenadmin_stats
#监控界面的访问的IP和端口
bind0.0.0.0:8888
#访问协议
modehttp
#URI相对地址
statsuri/dbs
#统计报告格式
statsrealmGlobal\statistics
#登陆帐户信息
statsauthadmin:abc123456
#数据库负载均衡
listenproxy-mysql
#访问的IP和端口
bind0.0.0.0:3306
#网络协议
modetcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balanceroundrobin
#日志格式
optiontcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
optionmysql-checkuserhaproxy
serverMySQL_1172.18.0.2:3306checkweight1maxconn2000
serverMySQL_2172.18.0.3:3306checkweight1maxconn2000
serverMySQL_3172.18.0.4:3306checkweight1maxconn2000
serverMySQL_4172.18.0.5:3306checkweight1maxconn2000
serverMySQL_5172.18.0.6:3306checkweight1maxconn2000
#使用keepalive检测死链
optiontcpka

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

dockerrun-it-d-p4001:8888-p4002:3306-v/home/soft/haproxy:/usr/local/etc/haproxy--nameh2--privileged--net=net1--ip172.18.0.7haproxy

进入h2容器,启动Haproxy

dockerexec-ith2bash
haproxy-f/usr/local/etc/haproxy/haproxy.cfg

查看是否启动成功:

访问http://ip:4001/dbs

docker怎么搭建Mysql集群

安装keepalive实现双击热备

感谢你能够认真阅读完这篇文章,希望小编分享的“docker怎么搭建Mysql集群”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

收藏
分享
海报
0 条评论
165
上一篇:怎么使用Docker Swarm搭建分布式爬虫集群 下一篇:CentOS 7中搭建KVM虚拟化平台的案例

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码