利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 M(3)

在 RHEL7 的中,操作系统服务是通过 systemd 来管理的,因为 Mariadb Galera Cluster 需要修改启动 Mariadb 时的参数,因此需要对 systemd 启动 Mariadb 时所使用的命令进行修改。因为 Mariadb Galera Cluster 对第一个启动的节点(又称为 master 节点)需要采用特定的启动命令,因此这里准备两份 systemd 的配置文件,如清单 9、清单 10 所示。在 recipe 中,首先判断当前节点是否 master 节点,然后用相应的配置文件作为当前节点的 systemd 的 Mariadb 服务启动配置文件。最后重启 Mariadb 服务。

清单 9. templates/default/systemd.master.conf.erb,master 节点的配置文件

1

2

3

 

[Service]

ExecStart=

ExecStart=/usr/sbin/mysqld --wsrep-new-cluster

 

清单 10. templates/default/systemd.master.conf.erb,slave 节点的配置文件

1

2

3

 

[Service]

ExecStart=

ExecStart=/usr/sbin/mysqld --wsrep_cluster_address=gcomm://<%= node.mariadbp4.cluster.master =%>

 

清单 11. recipes/default.rb,修改 systemd 配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

master=node['mariadbp4']['cluster']['master']

bash "Add cluster conf for mariadb service in systemd and restart service..." do

        cwd "/etc/systemd/system"

        user "root"

        code <<-EOF

        if [ ! -d "$service_name.d" ]; then

                mkdir "mariadb.service.d"

        fi

 

        if [ `hostname -s` == #{master} ]; then

                mv /tmp/master.conf mariadb.service.d/cluster.conf

        else

                mv /tmp/slave.conf mariadb.service.d/cluster.conf

        fi

        systemctl daemon-reload

        systemctl restart $service_name

        EOF

        not_if "[[ -f mysql.service.d/cluster.conf || -f mariadb.service.d/cluster.conf ]]"

end

 

安装

首先将上面所定义部署流程上传到 Chef Server,包括 cookbook 和 environment。然后告诉 Chef Server 在目标机器上执行相应的部署流程,如清单 12 所示。这里 10.0.0.11 和 10.0.0.12 为组成 Cluster 的两台机器的 IP,注意执行命令时请确保当前目录为 mariadb-galera-cluster 的上级目录,

清单 12. 安装 Mariadb Galera Cluster 所需命令

1

2

3

4

 

knife cookbook upload -a -o .

knife environment from file environments/test.json

knife bootstrap 10.0.0.11 -x root -P password -r "recipe[mariadb-galera-cluster]" -E test

knife bootstrap 10.0.0.12 -x root -P password -r "recipe[mariadb-galera-cluster]" -E test

 

验证

要验证 Mariadb Galera Cluster 的运行状况,可以通过执行如清单 13 所示的命令来实现。如果一切正常,可以看到如图 1 所示的结果。

清单 13. 查看 Mariadb Galera Cluster 的运行情况

1

2

 

mysql --user=root --password=xxx

show status like 'wsrep_%'

 

图 1. Mariadb Galera Cluster 的运行状态

利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 M

小结

在企业级的应用中,数据库的高可用性是不可或缺的,而 Mariadb Galera Cluster 作为 Mariadb 自带的 Cluster 功能,从功能上可以满足用户的这一要求。而本文所描述的自动化部署步骤,可以快速的帮助用户在多个节点上部署 Mariadb Galera Cluster,极大的节省了创建 Mariadb Galera Cluster 所需的时间。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/98b6f715011305504ad0d8bb4fa5f59e.html