Ansible-galera

clip_image001[1]

在四台虚拟机上都安装好docker

一、控制节点

1. 域名解析

[root@d ansible]# vim /etc/hosts

clip_image002[1]

[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/

clip_image003[1]

[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/* ./

clip_image004[1]

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

clip_image005[1]

[root@d bin]# cd /opt/

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

clip_image006[1]

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

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

clip_image007[1]

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

clip_image008[1]

4. 开始部署

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

[root@d ansible]# ansible-playbook install.yml

二、登陆node1,node2,node3查看状态

1. 各个节点上都运行了一个galera的容器

clip_image009[1]

clip_image010[1]

clip_image011[1]

 

2. 在node1,2,3检查集群状态:

[root@node1 ~]# docker ps -a

clip_image012[1]

[root@node1 ~]# docker exec -it galera1 /bin/bash

root@node1:/# mysql -uroot -p123

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

clip_image013[1]

3. 故障恢复

(1)集群中某slave节点down机,重启该节点后,重启docke容器即可;

将node3虚拟机shutdown

[root@d ~]# mysql -h node1 -uroot -p123 #远程登陆其他虚拟机上的数据库

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

clip_image014[1]

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

clip_image015[1]

(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';

clip_image016[1]

此时再将node1开机,然后查看集群状态,发现还是2台,没有加入集群中

[root@node1 ~]# docker ps -a

clip_image017[1]

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

clip_image018[1]

将上面的配置文件复制粘贴到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

clip_image019[1]

容器启动成功

再查看集群状态

clip_image020[1]

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'

clip_image021[1]

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

clip_image022[1]

[root@node1 data]# docker stop galera1

galera1

[root@node1 data]# docker rm galera1

galera1

[root@node1 mariadb]# vim master.sh

clip_image023[1]

[root@node1 mariadb]# sh master.sh

登陆节点查看数据库集群状态

[root@d ~]# mysql -h node1 -uroot -p123

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

clip_image024[1]

添加成功

原文地址:https://www.cnblogs.com/liangzb310/p/11198830.html