一、环境准备

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. HDU - 5015 233 Matrix(杨辉三角/前缀+矩阵快速幂)

    233 Matrix In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23 ...

  2. null, undefined 和布尔值

    说明:此类博客来自以下链接,对原内容做了标注重点知识,此处仅供自己学习参考! 来源:https://wangdoc.com/javascript/basic/introduction.html 1.n ...

  3. JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String

    在使用Postman测试Spring Boot项目接口时,接口返回JSON parse error: Cannot deserialize value of type `java.time.Local ...

  4. 【转】Js 数组转JSON格式

    要点1:转化函数 JSON.stringify() 要点2:在js里写数组的时候是var data = new Array() 但是你如果是要转json显示的时候就要写成 var data = {}, ...

  5. Python爬虫之设置selenium webdriver等待

    Python爬虫之设置selenium webdriver等待 ajax技术出现使异步加载方式呈现数据的网站越来越多,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给定位元素的定位增加 ...

  6. java基础第十一篇之Date、Math、自动装箱和拆箱

    Date类 表示一个瞬间,就是一个时刻 * * 构造方法: * public Date();//创建一个表示当前系统时间的Date对象 * public Date(long time);//毫秒值,距 ...

  7. 怎么解决java.lang.NoClassDefFoundError错误

    http://blog.csdn.net/jamesjxin/article/details/46606307

  8. vue教程3-webpack搭建项目

    vue-cli https://cli.vuejs.org/zh/ vue-cli是vue的命令行工具,对于创建项目,安装各种组件,运行项目都极为方便,是在开发vue中的必备工具 vue-cli基于n ...

  9. NET Core & Entity Framework Core

    ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)   本文是ABP官方文档翻译版,翻译基于 ...

  10. NET Core:部署项目到Ubuntu Server

    NET Core:部署项目到Ubuntu Server 概述 基于上一篇成功安装Ubuntu Server 16.10的基础上,接下来继续我们ASP.NET Core项目的部署之旅! 只是对于这些年整 ...