• 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]

    添加成功

  • 相关阅读:
    算法15 《啊哈算法》第四章 盒子装扑克-DFS深度优先搜索 递归
    算法14 leetcode28 实现 strStr() kmp
    markdown一些有用笔记
    算法11 leetcode274 有效的字母异位词
    Quantity? Quality!
    算法 10 leetcode344. 反转字符串
    JavaWeb —— JDBC Driver驱动及连接问题
    Python —— 4 习题练习
    Python —— 变量的作用域
    JavaWeb —— 文件上传
  • 原文地址:https://www.cnblogs.com/liangzb310/p/11198830.html
Copyright © 2020-2023  润新知