Board logo

标题: 利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 Mariadb Galera Cluster-1 [打印本页]

作者: look_w    时间: 2017-12-19 20:19     标题: 利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 Mariadb Galera Cluster-1

简介Chef
Chef                提供了一套自动化安装和配置软件的工具。它允许开发者以模块化的方式(cookbook)来定义软件的安装和配置流程(recipe),以及流程中的可定制参数(attribute)。当需要在特定的环境中创建软件服务时,用户指定模块名称以及相应的参数值,Chef                会负责在目标环境中执行预定义的安装和配置流程。
使用 Chef 需要安装 Chef Server 以及 Chef Development Kit(ChefDK)。Chef Server                负责保存开发者提供的软件安装和配置流程定义,并在目标机器上执行。ChefDK 则是开发者用来定义软件安装和配置流程的工具。
Mariadb Galera Cluster
Mariadb Galera Cluster 是 Mariadb 提供的一种同步多主节点的集群模式。这种模式与传统的 Maraidb Replication 功能的区别主要在于:
部署准备准备工作主要包括:
自动安装流程本文所描述的自动安装流程的目标是在至少两台机器上安装 Mariadb Galera Cluster,主要包含如下几个步骤:
详细实现首先创建一个名为 mariadb-galera-cluster 的 cookbook 和名为 test.json 的 environment                文件,如清单 1 所示。创建 cookbook 会在当前目录下生成一个同名的目录,后续定义的大部分文件都放在这个目录下。environment                文件将包含所有针对当前环境的参数值,例如当前环境下节点的 IP 地址和域名。创建完成后的目录结构如清单 2 所示。
清单 1.                创建 cookbook 和 environment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
knife cookbook create mariadb-galera-cluster
cat environments/test.json <<EOF
{
  "name": "test",
  "description": "",
  "cookbook_versions": {

  },
  "json_class": "Chef::Environment",
  "chef_type": "environment",
  "default_attributes": {

  },
  "override_attributes": {

  }
}
EOF




清单 2. 目录结构
1
2
3
4
5
6
7
8
9
10
11
..
environments/
    test.json
cookbooks/
    mariadb-galera-cluster/
        recipes/
            default.rb
        templates/
            default/
        attributes/
            default.rb




安装 Mariadb利用在 Chef Server 机器上配置的 yum 源来安装 Mariadb,需要在目标机器的/etc/yum.repos.d                目录下加入相应的配置文件。将该配置文件的内容预先定义在                mariadb-galera-cluster/templates/default/chef_server.repo.erb 中,如清单 2                所示。同时,在 mariadb-galera-cluster/recipes/default.rb 中定义这一部分的安装流程,如清单 3                所示。配置好 yum 源后,即可通过 yum 命令安装预先下载好的 Mariadb 安装介质。
安装完成后,可以执行一些基本的数据库初始化任务,例如设置 root 用户的密码和权限,这些任务可以定义在一个 sql                文件中。另外也可以通过编辑/etc/my.cnf 对 Mariadb 进行一些基本的配置。全部完成后重启 Mariadb 的服务。
清单 3. templates/default/chef_server.repo.erb,定义 yum 配置
1
2
3
4
5
6
[chef_server_repo]
name=chef_server_repo
baseurl=http://chefserver:80/yum_repo
enabled=1
gpgcheck=0
sslverify=0




清单 4. recipes/default.rb,安装 Mariadb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
template "/etc/yum.repos.d" do
        source "chef_server.repo.erb"
        owner 'root'
        mode 0755
        action :create
end

...
execute "Install Mariadb" do
        command "yum clean metadata && yum -y install mariadb-server"
end
...
bash "Config database settings..." do
        cwd "#{CWD}"
        user "root"
        group "root"
        code <<-EOF
       printf "\n[mysqld]\nlower_case_table_names=1" >> /etc/my.cnf
        systemctl enable mariadb.service
        systemctl start mariadb.service
        mysql < init.sql
        systemctl restart mariadb.service
        EOF
end






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0