(小试牛刀)docker部署mysql(pxc)集群之在线安装部署

目录

一、环境:

二、docker的安装

1、把yum包更新到最新

2、安装需要的软件包;

3、设置yum源

4、查看版本

5、安装Docker;

6、启动Docker;

7、查看安装版本

8、常用Docker命令

三、基于docker搭建pxc模式的mysql集群

1、拉取镜像

2、重命名镜像;

3、设置防火墙

4、确认集群服务器;

5、创建容器

四、配置haproxy

1、创建haproxy用户

2、构建haproxy容器

五、后续


最近研究学习mysql集群。发现使用docker对mysql集群的进行部署安装还是很方便简单的。现在把自己部署过程和大家分享一下。想到在自己实际的项目环境中,有两种环境下的服务器,一种是云服务器上可以连接至互联网的网络中;另外一种是某些自建机房中,无法连接连接互联网网络的服务器。所以分为在线部署安装和离线部署安装两种方式。本文讲的是在线部署安装的方式。

一、环境:

   虚拟机:3台,虚拟机操作系统:CentOS 7+ 

二、docker的安装

1、把yum包更新到最新

  yum update

2、安装需要的软件包;

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

3、设置yum源

(选择其中一个)

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

4、查看版本

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

5、安装Docker;

命令:yum install docker-ce-版本号,我选的是docker-ce-18.03.1.ce

yum install docker-ce-18.03.1.ce

6、启动Docker;

命令:systemctl start docker,然后加入开机启动,

systemctl start docker
systemctl enable docker

7、查看安装版本

docker version

8、常用Docker命令

 docker ps 查看当前正在运行的容器

 docker ps -a 查看所有容器的状态

 docker start/stop id/name 启动/停止某个容器

 docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)

 docker exec -ti id 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)

 docker images 查看本地镜像
 docker rm id/name 删除某个容器
 docker rmi id/name 删除某个镜像

 docker run --name test -ti ubuntu /bin/bash  复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash

 docker build -t soar/centos:7.1 .  通过当前目录下的Dockerfile创建一个名为soar/centos:7.1的镜像

 docker run -d -p 2222:22 --name test soar/centos:7.1  以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变

三、基于docker搭建pxc模式的mysql集群

在Docker中安装PXC集群,使用Docker仓库中的PXC官方镜像:地址

1、拉取镜像

从docker官方仓库中拉下PXC镜像:

docker pull percona/percona-xtradb-cluster

查看本地安装的镜像

docker images

2、重命名镜像;

名称太长,重命名一下,会生成一个新的镜像。

docker tag percona/percona-xtradb-cluster:latest pxc

可以删除掉原来名字长的镜像了

docker images
docker rmi docker.io/percona/percona-xtradb-cluster
docker images

3、设置防火墙

安装mysql集群之前确认防火墙的状态,可以关闭防火墙或者指定防火墙开放端口。否则集群服务器集群服务器之间有可能无法访问,影响服务。

#查看防火墙状态
firewall-cmd --state
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
查看防火墙规则
firewall-cmd --list-all 

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

 

4、确认集群服务器;

创建集群用到的文件夹。

本次集群使用到了三台虚拟机,ip和用处如下:

192.*.*.36 haproxy
192.*.*.36 node1
192.*.*.37 node2
192.*.*.38 node3

开始本地所使用的目录

mkdir -p /docker/pxc/mysql /docker/pxc/data

修改文件目录权限

cd /docker/pxc
chmod 777 mysql
chmod 777 data

5、创建容器

创建第1个MySQL节点( node1:192.*.*.36),密码自己设着玩就是设置为123456,实际环境需要设置更复杂的密码。

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db1 --net=host pxc

创建第2个MySQL节点(node2:192.*.*.37)。

注意:192.*.*.36为主机1的ip地址。

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=192.*.*.36 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db2 --net=host pxc

创建第3个MySQL节点(node3:192.*.*.38)

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=192.*.*.36 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db3 --net=host pxc

到了这一步基于docker的多机pxc搭建已经基本换成了,亲测可用!

可分别在服务器上查看日志信息。

docker logs db1 

 

四、配置haproxy

haproxy的必要性:虽然搭建了集群,但是不使用数据库负载均衡,所有请求发送给单一节点,单节点处理所有请求,负载高,性能差。数据库配置了负载均衡,能将请求均匀地发送给集群中的每一个节点。

1、创建haproxy用户

我选择db1节点(node1)作为haproxy的服务器,(服务器资源充足的可以选择一台新的服务器作为haproxy的服务器),在上面执行下面命令进入容器:

docker exec -it db1 bash

进入容器后执行

mysql -uroot -p

输入上面设置的密码 123456 后执行:

create user 'haproxy'@'%' identified by '';

成功运行,退出。

exit
exit

 

2、构建haproxy容器

在192.*.*.36上拉取haproxy镜像。

docker pull haproxy

创建用到的文件目录

mkdir -p /docker/pxc/haproxy

创建配置文件haproxy.cfg;

touch /docker/pxc/haproxy/haproxy.cfg

编辑haproxy.cfg文件;

vi /docker/pxc/haproxy/haproxy.cfg

插入以下配置内容

# 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 192.*.*.36:8888
 #访问协议
 mode http
 #URI相对地址
 stats uri /dbs
 #统计报告格式
 stats realm Global\ statistics
 #登陆帐户信息
 stats auth admin:123456
#数据库负载均衡
listen proxy-mysql
 #访问的IP和端口,这里不能配置成3306
 bind 0.0.0.0:3307
 #网络协议
 mode tcp
 #负载均衡算法(轮询算法)
 #轮询算法:roundrobin
 #权重算法:static-rr
 #最少连接算法:leastconn
 #请求源IP算法:source
 balance roundrobin
 #日志格式
 option tcplog
 #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
 option mysql-check user haproxy
 server MySQL_1 192.*.*.36:3306 check weight 1 maxconn 2000
 server MySQL_2 192.*.*.37:3306 check weight 1 maxconn 2000
 server MySQL_3 192.*.*.38:3306 check weight 1 maxconn 2000
 #使用keepalive检测死链
 option tcpka

开始创建容器

docker run -it -d -p 4001:8888 -p 4002:3306 -v /docker/pxc/haproxy:/usr/local/etc/haproxy --name haproxy --privileged --net=host haproxy

容器创建成功后,可通过访问http://192.*.*.36:8888/dbs,查看各节点的状态。登录的账号密码在上面的配置文件中进行配置。我配置的账户密码为admin/123456。

到了这一步我们就大功告成了,可以通过我们配置的负载地址端口来访问我们的数据库了。

连接参数:  192.*.*.36   端口:3307  用户名:root 密码:123456

五、后续

这就是在有互联网网络的情况下,通过docker部署pxc模式的mysql集群的方式啦。如果有什么不对的地方,欢迎大家指出!下一篇文章将和大家分享在离线环境下安装docker和mysql(pxc)集群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值