架构:

步骤:

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. asp.net 页面生命周期事件详细

    (1)请求页面:页请求发生在页生命周期开始之前. (2)开始:在开始阶段,将设置页属性,如Request和Response.在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性 ...

  2. HDU.4903.The only survival(组合 计数)

    题目链接 惊了 \(Description\) 给定\(n,k,L\),表示,有一张\(n\)个点的无向完全图,每条边的边权在\([1,L]\)之间.求有多少张无向完全图满足,\(1\)到\(n\)的 ...

  3. c#清空数组&初始化数组&动态数组

    清空数组>>>Array.Clear [去MSDN查看] ]; ; i < str.Length; i++) str[i] = i.ToString(); Array.Clea ...

  4. day10_friest_自动化

    一.知识回顾, 1.构造函数:def __del__(self)是类执行完后,需要将某些如连接等关闭,可将关闭代码写在该函数中,既是实例被销毁的时候执行 2.私有寒素:def __say(self)表 ...

  5. mobile_5 种常见适配_设备兼容

    em  参照本身元素的 font-size rem 参照 html 根元素 的 font-size 1. rem 适配   (同一元素,在不同设备上,效果一样) 适用情况: 当页面大于 独立像素375 ...

  6. 2018-2019-1 20189210 《LInux内核原理与分析》第八周作业

    一 .可执行程序工作原理 程序编译 预处理:gcc -E hello.c -o hello.i 编译:gcc -S hello.i -o hello.s -m32 汇编:gcc -c hello.s ...

  7. [LeetCode] Letter Case Permutation 字母大小写全排列

    Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...

  8. ubuntu16.04中supervisor安装与简单使用(转载)

    ubuntu16.04中supervisor安装与简单使用 supervisor 进程管理是可以让进程在后台运行,而不占用控制台影响使用 1. 安装 supervisor sudo apt insta ...

  9. spring boot 开始部署报Whitelabel Error Page错解决方法

    因为时刚刚才学spring boot ,第一次碰到的问题,花了半个小时终于明白了,SpringBoot 的application类会自动扫描子包类下的mapping方法,因此application类不 ...

  10. WIN10远程计算机不支持所需的FIPS安全级别解决

    win10系统的电脑在远程xp系统或者其他系统的电脑时,提示错误,远程计算机可能不支持所需的FIPS安全级别,如果出现一以下2种错误,可以解决!   1 第一步:打开win10下的,控制面板 2 第二 ...