架构:

步骤:

1、安装centos7   ,设置宿主机IP:192.168.1.224

2、先更新yum软件管理器,再安装docker

1、yum -y update

2、yum install -y docker

  docker管理

docker启动,停止,重启
service docker start /stop /restart

3、启动docker,配置镜像下载地址

https://www.daocloud.io 中找到docker加速器,找到linux版本加速器,拷贝在linux中执行

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

执行后编辑配置文件:  /etc/docker/daemon.json  中将最后一个逗号去掉后保存即可

4、常用docker命令:

查找docker镜像:
docker xxxx search 如:docker java search 查看当前docker镜像:
docker images 导出镜像:
docker save 镜像id > 目标位置
如:
docker save docker.io/java > /home/java.tar.gz 导入镜像:
docker load < 镜像位置 删除镜像:
docker rmi 镜像id

5、安装PXC镜像

docker pull percona/percona-xtradb-cluster

6、为PXC镜像改名

docker tag percona/percona-xtradb-cluster pxc

7、为镜像创建net网段

docker network create --subnet=172.18.0.0/24 net1

8、为5个pxc集群容器创建5个数据卷

   docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5 为便于修改mysql配置文件,最好创建mysql配置文件的数据卷

  
docker volume create --name conf1
docker volume create --name conf2
docker volume create --name conf3 docker volume create --name conf4

docker volume create --name conf5

9、创建热备份数据卷(容器一旦启动后,不停下来无法创建新的数据卷,所以先创建出来用于保存备份的数据卷)

docker volume create --name backup

10、创建第一个pxc节点容器node1,创建完成后等待1-2分钟,用mysql客户端工具连接成功后再创建剩下的2-5pxc容器

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=lezhu123456 -e CLUSTER_NAME=lezhuPXC -e XTRABACKUP_PASSWORD=lezhu123456 -v v1:/var/lib/mysql -v backup:/data -v conf1:/etc/mysql --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

创建成功后,以root帐号进入node1,修改mysql配置文件中的默认sql_mode

以root帐号进入docker容器 node1: docker exec -it --user root node1 bash

安装vim:
apt-get update
apt-get install -y vim 修改mysql配置文件:
vim /etc/mysql/my.cnf [mysqld]

sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
保存后停掉docker stop node1  重启node1 docker start node1

按如此方式依次创建node2-5,因node3-5创建的docker容器卷与宿主机的映射conf3-5,所以可以直接在宿主机的conf3-5中直接修改my.cnf

查看conf3-5路径:

docker inspect conf3

11、创建第2-5pxc容器

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=lezhu123456 -e CLUSTER_NAME=lezhuPXC -e XTRABACKUP_PASSWORD=lezhu123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v conf2:/etc/mysql --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc

docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=lezhu123456 -e CLUSTER_NAME=lezhuPXC -e XTRABACKUP_PASSWORD=lezhu123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v conf3:/etc/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc

docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=lezhu123456 -e CLUSTER_NAME=lezhuPXC -e XTRABACKUP_PASSWORD=lezhu123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql -v conf4:/etc/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc

docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=lezhu123456 -e CLUSTER_NAME=lezhuPXC -e XTRABACKUP_PASSWORD=lezhu123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v conf5:/etc/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

至此,5个节点的pxc集群搭建完成,可以使用mysql客户端工具分别连接后验证同步情况。

11、下载Haproxy镜像

docker pull haproxy

12、宿主机上编写Haproxy配置文件

vi /home/soft/haproxy/haproxy.cfg

haproxy文件配置:

   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:lezhu123456
#数据库负载均衡
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

13、在任一pxc节点中创建一个用户haproxy心跳检测的mysql账户:haproxy,该账户密码可为空,不赋予任何权限

create user 'haproxy'@'%' IDENTIFIED BY ''

14、安装一主一备2个Haproxy容器:

   #创建第1个Haproxy负载均衡服务器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
#进入h1容器,启动Haproxy
docker exec -it h1 bash
#加载配置文件,启动h1
haproxy -f /usr/local/etc/haproxy/haproxy.cfg #创建第2个Haproxy负载均衡服务器
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --privileged --net=net1 --ip 172.18.0.8 haproxy
#进入h2容器,启动Haproxy
docker exec -it h2 bash
#加载配置文件,启动h2
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

至此,一主一备Haproxy设置完毕,可以使用宿主机ip在浏览器中查看haproxy:192.168.1.224:4001/dbs  或192.168.1.224:4003/dbs    或使用mysql客户端连接haproxy验证  ip:宿主机ip,端口 4002  与4004

15、安装Keepalived容器(keepalived必须安装在对应的haproxy容器中,该容器使用乌班图系统,故下载命令改为apt -get )

    #进入h1容器
docker exec -it h1 bash
#更新软件包
apt-get update
#安装VIM
apt-get install vim
#安装Keepalived
apt-get install keepalived
#编辑Keepalived配置文件(参考下方配置文件)
vim /etc/keepalived/keepalived.conf
#启动Keepalived
service keepalived start
#宿主机执行ping命令
ping 172.18.0.201

配置文件内容如下:

vrrp_instance  VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.18.0.201
}
}

16 、安装第二个Keepalived

    #进入h2容器
docker exec -it h2 bash
#更新软件包
apt-get update
#安装VIM
apt-get install vim
#安装Keepalived
apt-get install keepalived
#编辑Keepalived配置文件
vim /etc/keepalived/keepalived.conf
#启动Keepalived
service keepalived start
#宿主机执行ping命令
ping 172.18.0.201 配置文件内容如下: vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.18.0.201
}
}

17、宿主机安装Keepalived,实现双击热备

    #宿主机执行安装Keepalived
yum -y install keepalived
#修改Keepalived配置文件
vi /etc/keepalived/keepalived.conf
#启动Keepalived
service keepalived start Keepalived配置文件如下: vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.99.150
}
} virtual_server 192.168.99.150 8888 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP real_server 172.18.0.201 8888 {
weight 1
}
} virtual_server 192.168.99.150 3306 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP real_server 172.18.0.201 3306 {
weight 1
}
}

18、热备份数据

    #进入node1容器
docker exec -it node1 bash
#更新软件包
apt-get update
#安装热备工具
apt-get install percona-xtrabackup-24
#全量热备
innobackupex --user=root --password=lezhu123456 /data/backup/full

19、冷还原数据

停止其余4个节点,并删除节点,由于前面做过了数据卷,故mysql中数据不会丢失,只是删除容器

    docker stop node2
docker stop node3
docker stop node4
docker stop node5
docker rm node2
docker rm node3
docker rm node4
docker rm node5

node1容器中删除MySQL的数据


#删除数据
rm -rf /var/lib/mysql/*
#清空事务
innobackupex --user=root --password=lezhu123456 --apply-back /data/backup/full/2018-04-15_05-09-07/
#还原数据
innobackupex --user=root --password=lezhu123456 --copy-back /data/backup/full/2018-04-15_05-09-07/


重新创建其余4个节点,组件PXC集群

 

20、安装Redis,配置RedisCluster集群

待续.......

Docker下配置双机热备PXC集群的更多相关文章

  1. KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群

    一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...

  2. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :

    背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...

  3. mysql双机热备+heartbeat集群+自动故障转移

    环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为 192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.20 ...

  4. Jboss集群(五)--F5硬件负载均衡器双击热备 + Jboss集群终极实现

    BIG/IP利用定义在其上面的虚拟IP地址来为用户的一个或多个应用服务器提供服务.因此,它能够为大量的基于TCP/IP的网络应用提供服务器负载均衡服务.BIG/IP连续地对目标服务器进行L4到L7合理 ...

  5. Nginx+Keepalived主从配置(双机主从热备)+Tomcat集群

    拓扑环境 以下表格是这次測试须要的拓扑环境,几台server.每台server上安装什么,都有介绍. server名称 系统版本号 预装软件 IP地址/VIP Nginx主server CentOS ...

  6. nginx:负载均衡实战(四)nginx+keepalived配置双机热备

    1.下载安装 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-.tar.gz 安装o ...

  7. tomcate+keepalived配置双机热备

    环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9 ...

  8. 在Docker下搭建MySQL双主双重集群(单机展示,与多机原理一致)

    前言 Docker的安装部署&在Docker下MySQL的安装与配置 https://www.cnblogs.com/yumq/p/14253360.html 在Docker进行单机主从复制M ...

  9. Linux环境下配置及启动Hadoop(伪集群)

    1.下载tag软件包后,我习惯放到software文件夹下,并建立app文件夹2.通过tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app/ 命令解压到app ...

随机推荐

  1. jvm领域优秀博主

    dh5724 不过csdn iteye 博客园信息均被自己删除,只在一些问答中和引用中有部分信息. redcreen 对jvm有深入认知. RednaxelaFX oracle java 编译器开发者 ...

  2. centos6.5安装ganglia-gmond

    安装过程借鉴许多博客,最后得出没有出错的流程. 一.安装依赖包: yum -y install gccglibc glibc-common rrdtool rrdtool-devel apr apr- ...

  3. __x__(28)0907第四天__固定布局

    布局 固定布局,需要计算单位 自适应响应布局  固定布局 html代码 <!doctype html> <html> <head> <meta charset ...

  4. (50)Wangdao.com第七天_JavaScript 发展与简介

    一个完整的JavaScript 应该由以下三部分组成: ECMAScript DOM,全称Browser Object Model,即浏览器对象模型,主要处理浏览器窗口和框架 BOM,全称Docume ...

  5. vue-router 之 keep-alive

    参考 https://www.jianshu.com/p/0b0222954483

  6. centos中安装配置nginx完成之后主机无法访问

    原因 VMware中安装centos7,安装配置完成nginx后,主机无法访问.虚拟机没有放行Nginx默认端口80. 解决办法 首先:开启 web 端口 firewall-cmd --permane ...

  7. python语法_字符串

    字符串 a = 'asdb' #双引号和打印号没区别, 操作 "abc"*2 打印两遍"abc"  #字符串 加* 重复打印字符串 “abc”[2:1] #切片 ...

  8. oracle 内存不足处理

    alter日志 TNS-12535: TNS:operation timed out ns secondary err code: 12606 nt main err code: 0 nt secon ...

  9. 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

  10. halcon 图片加载和设置XY轴滑动块的先后顺序

    //必须先加载图片,然后执行 hWndControl.setGUICompRangeX( new int[]{ XTrackBar.Minimum, XTrackBar.Maximum}, XTrac ...