一、环境准备

1、各主机配置静态域名解析:

[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.254.20 reg.yunwei.edu
#192.168.42.30 reg.yunwei.edu
192.168.42.172 node3
192.168.42.122 node2
192.168.42.121 node1
192.168.42.30 dlp 

2、并配置各节点ssh无密钥登陆

 

3、安装docker环境

[root@node1 ~]# ls
anaconda-ks.cfg  docker  docker.tar.gz  image  yum-repo.sh
[root@node1 ~]# cd docker
[root@node1 docker]# ls
ca.crt  docker-app.tar.gz  docker.sh  remove.sh
[root@node1 docker]# bash docker.sh 

4、下载配置文件并且导入镜像

wget http://download2.yunwei.edu/shell/ansible-galera.tar.gz[root@dlp ~]# lsanaconda-ks.cfg                       config.tar.gz  docker.tar.gz  kubernetes.tar.gz   test      usernameansible-galera.tar.gz                 data           galera.tar.gz  mariadb-galera.tar  total.sh  yum-repo.shbash-completion-2.1-6.el7.noarch.rpm  docker         kubernetes     password            try.html[root@dlp ~]# tar xf ansible-galera.tar.gz [root@dlp ~]# lsanaconda-ks.cfg        bash-completion-2.1-6.el7.noarch.rpm  docker         kubernetes          password  try.htmlansible-galera         config.tar.gz                         docker.tar.gz  kubernetes.tar.gz   test      usernameansible-galera.tar.gz  data                                  galera.tar.gz  mariadb-galera.tar  total.sh  yum-repo.sh[root@dlp ~]# cd ansible-galera[root@dlp ansible-galera]# lsbin  delete.yml  hosts  install.yml  roles[root@dlp ansible-galera]# mv * /etc/ansible/[root@dlp ansible-galera]# cd /etc/ansible/[root@dlp ansible]# lsbin  delete.yml  hosts  install.yml  roles

wget http://download2.yunwei.edu/shell/galera.tar.gz[root@dlp ~]# mv config.tar.gz mariadb-galera.tar /etc/ansible/bin/[root@dlp ~]# cd /etc/ansible/[root@dlp ansible]# lsbin  delete.yml  hosts  install.yml  roles[root@dlp ansible]# cat hosts[all]192.168.42.121192.168.42.122192.168.42.172

[master]192.168.42.121

[slave1]192.168.42.122

[slave2]192.168.42.172

[all:vars]#定义集群ipmaster="192.168.42.121"slave1="192.168.42.122"slave2="192.168.42.172"

#部署目录,即 ansible 工作目录base_dir="/etc/ansible"

#默认软件安装目录opt_dir="/opt"

在部署节点:
docker run -itd -v /etc/ansible:/etc/ansible -v /etc/kubernetes/:/etc/kubernetes/ -v /root/.kube:/root/.kube -v /usr/local/bin/:/usr/local/bin/ 1acb4fd5df5b  /bin/sh
进入容器设置免密钥,测试是否能ping通:ansible all -m ping/ # cd /etc/ansible//etc/ansible # lsbin          delete.yml   hosts        install.yml  roles/etc/ansible # ansible-playbook install.yml 

二、配置集群

#######node1
docker run -d --net host --name galera1 \
-e WSREP_NODE_ADDRESS=192.168.210.131 \
-p 3306:3306 \
-p 4567:4567/udp \
-p 4567-4568:4567-4568 \
-p 4444:4444 \
-v /opt/mariadb/config/mysql:/etc/mysql \
-v /opt/mariadb/config/data:/var/lib/mysql:Z \
--restart=always \
panubo/mariadb-galera mysqld
 
#######node2
docker run -d --net host --name galera2 \
-e WSREP_NODE_ADDRESS=192.168.210.130 \
-p 3306:3306 \
-p 4567:4567/udp \
-p 4567-4568:4567-4568 \
-p 4444:4444 \
-v /opt/mariadb/config/mysql:/etc/mysql \
-v /opt/mariadb/config/data:/var/lib/mysql:Z \
--restart=always \
panubo/mariadb-galera mysqld
 
#########node3
docker run -d --net host --name galera3 \
-e WSREP_NODE_ADDRESS=192.168.210.132 \
-e MYSQL_ROOT_PASSWORD=123 \
-p 3306:3306 \
-p 4567:4567/udp \
-p 4567-4568:4567-4568 \
-p 4444:4444 \
-v /opt/mariadb/config/mysql:/etc/mysql \
-v /opt/mariadb/config/data:/var/lib/mysql:Z \
--restart=always \
panubo/mariadb-galera mysqld --wsrep-new-cluster

三、查看集群是否同步

[root@node1 docker]# docker ps -a
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                        PORTS               NAMES
08ccff9d97ad        panubo/mariadb-galera                    "/galera-entrypoint.…"   26 minutes ago      Up 26 minutes                                     galera1
[root@node1 docker]# docker exec -it 08ccff9d97ad sh
# mysql -uroot -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.32-MariaDB-1~jessie mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.34 sec)

MariaDB [(none)]> create database test1;
Query OK, 1 row affected (0.30 sec)

[root@node2 ~]# docker exec -it d8b804886305 sh
# mysql -uroot -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.1.32-MariaDB-1~jessie mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| test1              |
+--------------------+
5 rows in set (0.73 sec)

四、登陆数据库时,安装mariadb客户端

yum install mariadb -y
mysql -h 192.168.210.131 -P 3306 -u root -p123
 
检查集群状态:
SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

五、故障恢复:

(1)集群中某slave节点down机,重启该节点后,重启docke容器即可;
(2)集群中master节点down机,重启该master节点后,master-docker容器不能正常启动,因为这是master节点已经切换,
         需要将原先master-docker容器删除,再以非wrsep方式启动一个普通容器;
(3)集群全部意外down机,强制找一台节点作为master节点;到如下路径,将 safe_to_bootstrap: 0修改为1(平时集群正常时,每个节点都为0)
[root@con3 data]# pwd
/opt/mariadb/data
[root@con3 data]# cat grastate.dat
# GALERA saved state
version: 2.1
uuid:    6a26abec-e7b5-11e8-b15b-b74046986de4
seqno:   -1
safe_to_bootstrap: 0
 
之后在该节点启动wsrep进程的docker

ansible-galera集群部署的更多相关文章

  1. Docker 版ansible galera集群

    1. 部署galera集群 利用四台主机cicd.node1.node2.node3来搭建galera集群. 1> 上传压缩包至cicd,解压得到ansible配置文件 [root@cicd ~ ...

  2. MariaDB Galera集群部署--技术流ken

    Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...

  3. Centos 7 下 Mysql 5.7 Galera Cluster 集群部署

     一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...

  4. ansible roles实践 zookeeper集群部署

    1.下载解压 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11. ...

  5. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  6. openstack(pike 版)集群部署(一)----基础环境部署

    一.环境 1.系统: a.CentOS Linux release 7.4.1708 (Core) b.更新yum源和安装常用软件 #  yum -y install  epel-release ba ...

  7. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  8. Apache ZooKeeper 单机、集群部署文档

    简介: Apache ZooKeeper 是一个分布式应用的高性能协调服务,功能包括:配置维护.统一命名.状态同步.集群管理.仲裁选举等. 下载地址:http://apache.fayea.com/z ...

  9. [ Openstack ] Openstack-Mitaka 高可用之 Mariadb-Galera集群部署

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  10. Mariadb galera 集群

    部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性.) 环境准备:三台服务器 ...

随机推荐

  1. PJzhang:经典子域名爆破工具subdomainsbrute

    猫宁!!! 参考链接: https://www.waitalone.cn/subdomainsbrute.html https://www.secpulse.com/archives/5900.htm ...

  2. SDN学习

    SDN & OpenFlow & Open vSwitch SDN SDN(软件定义网络)是一个概念.是一个思想.一个框架.是一种网络设计理念,它有三个特征 控制平面与转发平面分离 控 ...

  3. Mac下安装rJava,xlsx,ReporteRs包

    xlsx包可以用来读取excel数据,ReporteRs包可以用来直接输出word报告,这两个包都对rJava包有依赖,所以必须先安装rJava. (1)查看mac的java信息 java版本: &g ...

  4. HDU2874【LCA(模板)】

    第一题LCA,代码参考自:Ice_Crazy 思路: 这个最短路算法是想都别想了,可以看出这幅图就是树嘛,那么对于查询就是求树上两个结点最短距离. 这里就是利用LCA的tarjan离线算法. 算法的大 ...

  5. ue4 动态增删查改 actor,bp

    ue4.17 增 特殊说明:创建bp时,如果bp上随手绑一个cube,那么生成到场景的actor只执行构造不执行beginPlay,原因未知 ATPlayerPawn是c++类 直接动态创建actor ...

  6. 外网连接Mysql云数据库

    购买好Mysql云数据库,这里是腾讯云 在管理中把外网地址开通,然后可以看到本云数据库的外网地址 注意:外网地址com到前面才是连接地址,冒号后面的10057是连接的端口号,可以看下面的连接语句 cm ...

  7. IOS UILabel的一些使用小技巧

    1. 你在iOS6的需要NSLineBreakByWordWrapping 为了您的代码试试这个: NSString *string = @"bla"; CGSize s = [s ...

  8. Docker学习:Docker安装和基本使用

    Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...

  9. NSPhotoLibraryAddUsageDescription解决办法

    图片并保存到本地的功能,一点发现闪退了.发现 Xcode 报以下错误: The app's Info.plist must contain an NSPhotoLibraryAddUsageDescr ...

  10. linux 02 基础命令

    linux 02 基础命令 1.alias 别名 pyvip@Vip:~/demo$ alias lh="ls -lh" #将ls -lh的功能赋给lh(lh原来并没有意义)这个赋 ...