Ansible-galera

在四台虚拟机上都安装好docker
一、控制节点
1. 域名解析
[root@d ansible]# vim /etc/hosts

[root@d ansible]# scp /etc/hosts node1:/etc/hosts
[root@d ansible]# scp /etc/hosts node2:/etc/hosts
[root@d ansible]# scp /etc/hosts node2:/etc/hosts
做好ssh免密登陆node1,node2,node3
2. 将镜像解压后放在对应的目录
[root@d ~]# cd /opt/

[root@d opt]# tar xzf ansible-galera.tar.gz
[root@d ~]# yum install ansible -y
[root@d ansible-galera]# cd /etc/ansible/
[root@d ansible]# rm -rf *
[root@d ansible]# mv /opt/ansible-galera/* ./

[root@d bin]# cd /etc/ansible/bin/

[root@d bin]# cd /opt/
[root@d opt]# tar xzf galera.tar.gz

[root@d opt]# mv config.tar.gz mariadb-galera.tar /etc/ansible/bin/
[root@d opt]# cd /etc/ansible/bin/

3. 修改ansible的hosts配置文件
[root@d bin]# cd /etc/ansible/
[root@d ansible]# vim hosts
[all]
192.168.88.51
192.168.88.52
192.168.88.53
[master]
192.168.88.51
[slave1]
192.168.88.52
[slave2]
192.168.88.53
[all:vars]
#定义集群ip
master="192.168.88.51"
slave1="192.168.88.52"
slave2="192.168.88.53"
#部署目录,即 ansible 工作目录
base_dir="/etc/ansible"
#ansible默认软件安装目录
opt_dir="/opt"
[root@d ~]# ansible all -m ping

4. 开始部署
[root@d ~]# cd /etc/ansible/
[root@d ansible]# ansible-playbook install.yml
二、登陆node1,node2,node3查看状态
1. 各个节点上都运行了一个galera的容器



2. 在node1,2,3检查集群状态:
[root@node1 ~]# docker ps -a

[root@node1 ~]# docker exec -it galera1 /bin/bash
root@node1:/# mysql -uroot -p123
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

3. 故障恢复
(1)集群中某slave节点down机,重启该节点后,重启docke容器即可;
将node3虚拟机shutdown
[root@d ~]# mysql -h node1 -uroot -p123 #远程登陆其他虚拟机上的数据库
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

再将node3开机,查看集群状态

(2)集群中master节点down机,重启该master节点后,master-docker容器不能正常启动,因为这是master节点已经切换,需要将原先master-docker容器删除,再以非wrsep方式启动一个普通容器;
将master节点node1关机
[root@node1 ~]# shutdown -h now
[root@d ~]# mysql -h node2 -uroot -p123
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

此时再将node1开机,然后查看集群状态,发现还是2台,没有加入集群中
[root@node1 ~]# docker ps -a

galera1容器启动失败
[root@node1 ~]# docker stop galera1
galera1
[root@node1 ~]# docker rm galera1
galera1
[root@node1 ~]# cd /opt/
[root@node1 opt]# ls
mariadb rh
[root@node1 opt]# cd mariadb/
[root@node1 mariadb]# ls
config mariadb-galera.tar slave1.sh
config.tar.gz master.sh slave2.sh

将上面的配置文件复制粘贴到txt中,然后修改提示信息,然后将修改后的内容再命令行下运行
[root@node1 mariadb]# docker run -d --net host --name galera1 \
> -e WSREP_NODE_ADDRESS=192.168.88.51 \
> -e WSREP_CLUSTER_ADDRESS=gcomm://192.168.88.51:4567,192.168.88.52:4567,192.168.88.53:4567 \
> -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
WARNING: Published ports are discarded when using host network mode
e03ee2f6ec1bb2c6e7592d75154cead7bf5dd621a452731e68a0a25d170bf64a
[root@node1 mariadb]# docker ps -a

容器启动成功
再查看集群状态

node1加入成功
(3)集群全部意外down机,强制找一台节点作为master节点;到如下路径,将 safe_to_bootstrap: 0修改为1(平时集群正常时,每个节点都为0)
将node1,node2,node3全部宕机
[root@d ~]# ansible all -m shell -a 'shutdown -h now'
然后,再将三台机子开机恢复
[root@d ~]# ansible all -m shell -a 'docker ps -a'

cat /opt/mariadb/master.sh
docker run -d --net host --name galera1 \
-e WSREP_NODE_ADDRESS=192.168.88.51 \
-e WSREP_CLUSTER_ADDRESS=gcomm://192.168.88.51:4567,192.168.88.52:4567,192.168.88.53:4567 \
-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
选择一台虚拟机作为master节点
[root@node1 ~]# cd /opt/mariadb/config/data/
[root@node1 data]# vim grastate.dat

[root@node1 data]# docker stop galera1
galera1
[root@node1 data]# docker rm galera1
galera1
[root@node1 mariadb]# vim master.sh

[root@node1 mariadb]# sh master.sh
登陆节点查看数据库集群状态
[root@d ~]# mysql -h node1 -uroot -p123
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

添加成功
Ansible-galera的更多相关文章
- Docker 版ansible galera集群
1. 部署galera集群 利用四台主机cicd.node1.node2.node3来搭建galera集群. 1> 上传压缩包至cicd,解压得到ansible配置文件 [root@cicd ~ ...
- ansible无网络安装openstack(Newton)
概要 apt使用本地源,pip使用本地源 网络环境 物理机环境 网络名 网络地址 VLAN br-ex 192.168.200.250/24 90 br-mgmt 92.0.0.100/24 92 a ...
- 如何利用ansible callback插件对执行结果进行解析
最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...
- 《Ansible权威指南》笔记(2)——Inventory配置
四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...
- useful Ansible commands
This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...
- 《Ansible权威指南》笔记(4)——Playbook
七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- 自动化运维工具ansible部署以及使用
测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...
- Ansible Ubuntu 安装部署
一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...
随机推荐
- 浅谈IT人的发展(转载)
一个人如果能确定他喜欢的行业,他一生都会非常幸福. 相反,则往往痛苦,也许竟然会因此成为一个哲学家也说不定. 中国的贫穷决定了我们当中的大多数人不能根据自己的爱好来选择职业,而只是因为生活所迫,或者世 ...
- visual studio 和visual studio code 的区别是什么?
区别有三: 区别一:含义不一样. Visual Studio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码 ...
- 编辑器 --- Visual Studio Code 英文界面转换成中文(简体)
打开编辑器 同时按下Ctrl+Shift+P打开命令面板: 之后输入"config"筛选可用命令表,最后选择配置语言命令进行选择或安装插件
- 如何在网页标题栏title加入logo(icon)图标?
打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标,当网页被添加到收藏夹或者书签中时也会出现网页的图标,怎么在网页title左边显示网页的logo图标呢? 方法一(被动式): 制作一个ico格式 ...
- struts2模糊查询
dao层 public interface DimDao { //一个条件 public List<User> userdim(User user); //两个条件且关联表格 public ...
- learning strrchr func
函数名称: strrchr 函数原型:char *strrchr(const char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str中末次出现 ...
- 【HTTP】无状态无连接的含义
无连接:服务器处理完客户的请求,并收到客户的应答后,即断开连接. 早期这么做的原因是HTTP协议产生于互联网,因此服务器需要处理同时面向全世界数十万.上百万客户端的网页访问,但每个客户端(即浏览器)与 ...
- 关于keepalive
linux内核配置有一项tcp_keepalive_time,即tcp的保活定时器.当网络上两个建立连接的进程都没有数据向对方发送的时候,tcp会隔段时间发送一次保活数据,以保持连接,间隔时间就是tc ...
- 【分类模型评判指标 二】ROC曲线与AUC面积
转自:https://blog.csdn.net/Orange_Spotty_Cat/article/details/80499031 略有改动,仅供个人学习使用 简介 ROC曲线与AUC面积均是用来 ...
- MongoDB系列一:MongoDB文档型数据库特点介绍
一.MongoDB数据库的存储特点: 1.MongoDB是文档型数据库,存储的是文档(将json二进制化为Bson存储): 2.存储的每篇文档都可以有自己独特的存储结构,颠覆了传统数据库必须按照表和列 ...