一、首先需要安装好docker,安装方法可以参考之前一篇博文Centos7安装docker

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker 设置开机启动docker 
[root@localhost ~]# docker version
Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:33:21 2019
OS/Arch: linux/amd64
Experimental: false Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:02:24 2019
OS/Arch: linux/amd64
Experimental: false 验证docker是OK的

  

1、由于后面容器间通讯需要防火墙转发,所以需要开通IPv4转发

[root@localhost ~]# vim  /usr/lib/sysctl.d/00-system.conf
添加 net.ipv4.ip_forward=1
[root@localhost ~]# systemctl restart network

2、先下载percona/percona-xtradb-cluster镜像

[root@localhost~]# docker pull percona/percona-xtradb-cluster
[root@localhost~]# docker tag docker.io/percona/percona-xtradb-cluster pxc 将镜像名称修改为一个方便使用的名称

 3、创建pxc集群需要使用的网络

[root@localhost ~]# docker network create --subnet=172.18.0.0/24 pxc_network   指定特定的网段

二、创建第一个节点master

1、创建数据卷,用于挂载容器里面数据库的信息,这样容器销毁或者损坏,数据可以不丢失

[root@localhost ~]# docker volume create v1
v1
[root@localhost ~]# docker volume create v2
v2
[root@localhost ~]# docker volume create v3
v3
我们这里需要创建三个容器,所以需要三个挂载卷
/var/lib/docker/volumes/
容器创建的配置文件存放在这个目录下面

2、创建第一个节点 

[root@pxc13 ~]# docker run -d -p 3306:3306 -e \
MYSQL_ROOT_PASSWORD=mysql -e \
CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=mysql \
-v v1:/var/lib/mysql --privileged --name=node1 \
--net=pxc_network --ip=172.18.0.2 pxc
d4a38ad90b3d477769deb6a3ad983bd0235e48bed16eb8387f4891540a2eec80 参数解释:
CLUSTER_NAME:集群名称
XTRABACKUP_PASSWORD:集群数据同步密码
--net:使用自己定义的网络

3、查看日志

[root@pxc13 ~]# docker logs node1
Running --initialize-insecure on /var/lib/mysql/
total 0
drwxr-xr-x 2 mysql mysql 6 Mar 25 06:35 .
drwxr-xr-x 1 root root 105 Feb 28 15:56 ..
2019-03-25T06:35:48.615251Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-03-25T06:35:48.615390Z 0 [Warning] WSREP: Node is running in bootstrap/initialize mode. Disabling pxc_strict_mode checks
2019-03-25T06:35:50.636233Z 0 [Warning] InnoDB: New log files created, LSN=45790 从日志来看,第一个节点启动成功

4、检测链接情况,能否正常连接

  

三、创建其他两个节点

[root@pxc13 ~]# docker run -d -p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=mysql -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=mysql -e CLUSTER_JOIN=node1\
-v v2:/var/lib/mysql --privileged --name=node2\
--net=pxc_network --ip=172.18.0.3 pxc
4020e30aa38b4c9e513418f3f9485d02721ba4e64794daaa8321028a2aab8fcf 创建第二个节点
[root@pxc13 ~]# docker run -d -p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=mysql -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=mysql -e CLUSTER_JOIN=node1\
-v v3:/var/lib/mysql --privileged --name=node3 \
--net=pxc_network --ip=172.18.0.4 pxc
0b96bbce1e000bebfcef144e98e61fbc68d7e833fd3ba1e7d182fea4dcf7907d 创建第三个节点 参数解释: CLUSTER_JOIN:同步哪一个节点的数据

三、到此,我们三节点的pxc集群以及启动成功,用navicat连接三个数据库进行测试

4、可以用命令行查看集群的状态

mysql> show status like 'wsrep%';
+----------------------------------+-------------------------------------------------+
| Variable_name | Value |
+----------------------------------+-------------------------------------------------+
| wsrep_local_state_uuid | 427613f5-4ec8-11e9-abe4-429d2cd3ad07 |
| wsrep_protocol_version | 9 |
| wsrep_last_applied | 16 |
| wsrep_last_committed | 16 |
| wsrep_replicated | 2 |
| wsrep_replicated_bytes | 464 |
| wsrep_repl_keys | 3 |
| wsrep_repl_keys_bytes | 72 |
| wsrep_repl_data_bytes | 251 |
| wsrep_repl_other_bytes | 0 |
| wsrep_received | 10 |
| wsrep_received_bytes | 800 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_max | 1 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_max | 2 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_recv_queue_avg | 0.100000 |
| wsrep_local_cached_downto | 15 |
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_flow_control_interval | [ 173, 173 ] |
| wsrep_flow_control_interval_low | 173 |
| wsrep_flow_control_interval_high | 173 |
| wsrep_flow_control_status | OFF |
| wsrep_cert_deps_distance | 1.000000 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 1.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 1.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 2 |
| wsrep_cert_bucket_count | 22 |
| wsrep_gcache_pool_size | 2136 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0.000000 |
| wsrep_open_transactions | 0 |
| wsrep_open_connections | 0 |
| wsrep_ist_receive_status | |
| wsrep_ist_receive_seqno_start | 0 |
| wsrep_ist_receive_seqno_current | 0 |
| wsrep_ist_receive_seqno_end | 0 |
| wsrep_incoming_addresses | 172.18.0.2:3306,172.18.0.3:3306,172.18.0.4:3306 |
| wsrep_cluster_weight | 3 |
| wsrep_desync_count | 0 |
| wsrep_evs_delayed | |
| wsrep_evs_evict_list | |
| wsrep_evs_repl_latency | 0/0/0/0/0 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_gcomm_uuid | 4d5462bd-4ec8-11e9-809a-96f76f03bbb9 |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 427613f5-4ec8-11e9-abe4-429d2cd3ad07 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 3.35(rddf9876) |
| wsrep_ready | ON |
+----------------------------------+-------------------------------------------------+
71 rows in set mysql>

四、创建第二个分片,第二个分片也是三个节点的pxc集群

1、先创建数据卷v4、v5、v6

[root@pxc13 ~]# docker volume create v4
v1
[root@pxc13 ~]# docker volume create v5
v2
[root@pxc13 ~]# docker volume create v6
v3

2、创建三个容器

[root@localhost ~]# docker run -d -p 3316:3306 -e \
MYSQL_ROOT_PASSWORD=mysql -e \
CLUSTER_NAME=PXC2 -e XTRABACKUP_PASSWORD=mysql \
-v v4:/var/lib/mysql --privileged --name=node4 \
--net=pxc_network --ip=172.18.0.5 pxc [root@localhost ~]# docker run -d -p 3317:3306 -e\
MYSQL_ROOT_PASSWORD=mysql -e \
CLUSTER_NAME=PXC2 -e XTRABACKUP_PASSWORD=mysql\
-e CLUSTER_JOIN=node4\ -v v5:/var/lib/mysql --privileged --name=node5\
--net=pxc_network --ip=172.18.0.6 pxc [root@localhost ~]# docker run -d -p 3318:3306 -e\
MYSQL_ROOT_PASSWORD=mysql -e \
CLUSTER_NAME=PXC2 -e XTRABACKUP_PASSWORD=mysql\
-e CLUSTER_JOIN=node4\-v v6:/var/lib/mysql --privileged --name=node6 \
--net=pxc_network --ip=172.18.0.7 pxc  这样我们就有了两个分片的pxc集群

  

Docker 搭建pxc集群 + haproxy + keepalived 高可用(一)的更多相关文章

  1. Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)

    上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...

  2. Docker搭建PXC集群

    如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...

  3. LVS集群和Keepalived高可用实战

    第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...

  4. Flink 集群搭建,Standalone,集群部署,HA高可用部署

    基础环境 准备3台虚拟机 配置无密码登录 配置方法:https://ipooli.com/2020/04/linux_host/ 并且做好主机映射. 下载Flink https://www.apach ...

  5. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  6. Haproxy+keepalived高可用集群实战

    1.1  Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...

  7. docker安装pxc集群

      前言 现在mysql自建集群方案有多种,keepalived.MHA.PXC.MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有 ...

  8. Docker 搭建 etcd 集群

    阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...

  9. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

随机推荐

  1. [转]Example Design - Using the AXI DMA in polled mode to transfer data to memory

    Description Attached to this Answer Record is an Example Design for using the AXI DMA in polled mode ...

  2. flex"

    很久以前,有面试官问过我如何实现"

  3. pg 生成数据字典

    select (select relname||'--'||(select description from pg_description where objoid=oid and objsubid= ...

  4. 二维条码扫描模组在肯德基KFC的无纸化点餐解决方案

    在如今提倡节约资源的环境下,肯德基在品牌发展中,逐渐实现无纸化点餐,不仅节约了纸质点餐单,而且还具有节约资源的示范作用.而其中二维码扫描模组是这套无纸化点餐方案的重点,在整套设备中,加入二维码扫描模组 ...

  5. Docker 学习9 Docker私有registry

    一.docker registry分类 二.安装docker-hub提供的registry 1.安装 [root@localhost yum.repos.d]# yum install -y dock ...

  6. python第六天(元组、字典、集合)

    一.元组(tuple) 作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要用来读 定义:与列表类型相比,只不过把[ ]换成() age=(11,22,33,44,55)prin ...

  7. 使用pl/sql developer登陆不了oracle

    1,Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务 这里最主要的原因在于:(参考:https://www.cnblogs.com/shangshan/p/6359880.h ...

  8. 利用 Saltstack 远程执行命令

    Saltstack的一个比较突出优势就是具备执行远程命令的功能. 操作方法与func (https://fedorahosted.org/func/)相似,可以帮助运维人员完成集中化的操作平台. ht ...

  9. SpringBoot与日志框架2(日志内斗)

    一.SpringBoot如何引入slf4j+logback框架的呢? 在POM文件中 <dependency> <groupId>org.springframework.boo ...

  10. python一些好文章链接收藏

    程序员之路:python3+PyQt5+pycharm桌面GUI开发 python-nmap的函数学习 python标准库中socket模块详解 python队列Queue 简单认识python cm ...