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

要使得 Mariadb Galera Cluster 的节点能够进行数据同步,各节点之间必须能够互相通信。这需要各节点能够解析彼此的域名并能访问相应的网络端口。因为 cluster 中节点的域名和 IP 地址是因具体环境而异的,因此将这些信息定义在 environment 文件里。

清单 5. environments/test.json,定义 cluster 成员

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

 

{

  "name": "test",

  "description": "",

  "cookbook_versions": {

    },

  "json_class": "Chef::Environment",

  "chef_type": "environment",

  "default_attributes": {

    "mariadb-galera-cluster": {

        "cluster": {

                "members": {

                        "nodeA": "10.0.0.11",

                        "nodeB": "10.0.0.12"

                },

                "master": "nodeA"

        }

}

}

 

清单 6. recipes/default.rb,域名解析和开启端口

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

 

node['mariadbp4']['cluster']['members'].each_pair do |name, ip|

        bash "Resolve #{name} to #{ip}." do

                user "root"

                group "root"

                code <<-EOF

                name=#{name}

                echo "#{ip} ${name%%.*} $name" >> /etc/hosts

                EOF

                not_if "[ #{name} == `hostname -s` ]"

        end

end

 

bash "Open ports on OS firewall"

    user "root"

    group "root"

    code <<-EOF

    firewall-cmd --zone=public --add-service=mariadb --permanent

    firewall-cmd --zone=public --add-port=3306/tcp --permanent

    firewall-cmd --zone=public --add-port=4567/tcp --permanent

    firewall-cmd --zone=public --add-port=4568/tcp --permanent

    firewall-cmd --zone=public --add-port=4444/tcp --permanent

    firewall-cmd --zone=public --add-port=4567/udp --permanent

    firewall-cmd --reload

     EOF

end

 

配置 Mariadb Galera Cluster

在 Mariadb 中开启 Galera Cluster 需要修改相应的配置文件,通常是/etc/my.cnf.d/server.cnf。这里将所需配置预先定义为 template,然后用它覆盖原来的配置文件,如清单 7、清单 8 所示。

清单 7. templates/default/server.cnf.erb,Mariadb 配置文件

1

2

3

4

5

6

7

8

 

[galera]

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address=gcomm://<%= @node.mariadbp4.cluster.members.keys.join(',') %>

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

 

清单 8. recipes/default.rb,修改 Mariadb 配置文件

1

2

3

4

5

6

7

 

template "/etc/my.cnf.d/server.cnf" do

        source "server.cnf.erb"

        owner "root"

        mode 0644

        action :create

        not_if "grep '^wsrep_on=ON' /etc/my.cnf.d/server.cnf"

end

 

修改操作系统服务

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

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