Docker 搭建pxc集群 + haproxy + keepalived 高可用(一)
一、首先需要安装好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 高可用(一)的更多相关文章
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)
上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...
- Docker搭建PXC集群
如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...
- LVS集群和Keepalived高可用实战
第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...
- Flink 集群搭建,Standalone,集群部署,HA高可用部署
基础环境 准备3台虚拟机 配置无密码登录 配置方法:https://ipooli.com/2020/04/linux_host/ 并且做好主机映射. 下载Flink https://www.apach ...
- RabbitMQ集群安装配置+HAproxy+Keepalived高可用
RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...
- Haproxy+keepalived高可用集群实战
1.1 Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...
- docker安装pxc集群
前言 现在mysql自建集群方案有多种,keepalived.MHA.PXC.MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有 ...
- Docker 搭建 etcd 集群
阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...
- 使用Docker搭建Hadoop集群(伪分布式与完全分布式)
之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...
随机推荐
- C#如何实现DataGridView单元格拖拽
参考: http://www.cnblogs.com/michaelxu/archive/2009/09/27/1574905.html
- SVN 通过Shell Bash 获取项目Reversion号码
接上篇 Jenkins Vue项目自动构建以及构建后续操作 在项目构建完成后,需要提供当前构建的一个唯一标识的东西,并告诉我们的上线系统,这个唯一标识的东西可以让我们在回退线上版本的时候变得很有用, ...
- MyCat分片规则--笔记(二)
概述 myCat实现分库分表的策略,对数据量的处理带来很大的便利,这里主要整理下MyCat的使用以及常用路由算法,针对MyCat里面的事务.集群后续再做整理:另外内容整理,不免会参考技术大牛的博客,内 ...
- [转]7行Python代码的人脸识别
https://blog.csdn.net/wireless_com/article/details/64120516 随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域 ...
- c++ 开源库介绍和安装
1 BLAS库 BLAS(Basic Linear Algebra Subprograms)是一组线性代数计算中通用的基本运算操作函数集合.BLAS Technical (BLAST) Forum负责 ...
- 韩天峰《大话PHP设计模式》听课笔记
课程主要内容 1.PHP面向对象的高级特性 2.11种设计模式 3.PSR-0,Composer,Phar等最流行的技术 目标 掌握PHP各类设计模式,并具备设计纯面向对象框架和系统的能力 二.编 ...
- 回文自动机(PAM) 学习笔记
原文链接www.cnblogs.com/zhouzhendong/p/PAM.html 前置知识 无. (强行说和KMP有关也是可以的……) 关于回文串的一些性质 1. 一个长度为 n 的字符串最多有 ...
- Adams 2013自定义插件方法zz
1.Adams插件介绍 Adams的高级模块(如Controls控制模块.Vibration振动模块.Durability耐久性模块等)是以插件的形式集成在Adams软件中.通过Adams提供的插件管 ...
- 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼
目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...
- springboot添加邮件发送及压缩功能
springboot添加邮件发送及文件压缩功能 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190233.html 先来一段诗 ``` 就这样吧 忍受折磨 ...