cmndrsp0ck.galera-cluster

Galera 集群

目的

这个仓库将帮助你部署和配置 2 个带浮动 IP 重新分配的 HAProxy 节点,以及一个 MariaDB Galera 集群。资源配置将由 Terraform 处理,配置将使用 Ansible 完成。

先决条件

  • 你需要安装 Terraform,用于处理 Droplet 的配置。
  • 为了对新配置的 Droplets 应用配置更改,需要安装 Ansible
  • Ansible 的库存将由 Terraform 处理,因此需要 terraform-inventory
  • 我们需要一个 DigitalOcean 的 API 密钥。生成 DigitalOcean API 密钥的步骤可以在 这里 找到。
  • 使用包含的 gen_auth_key 脚本为你的负载均衡集群生成一个认证密钥。

配置

Terraform

terraform.tfvars

提供了样本文件 terraform.tfvars.sample,记得去掉后缀 _.sample_。当你设置好所有变量后,Terraform 应该能够进行身份验证并部署你的 Droplets。

  • do_token - 具备读写权限的 DigitalOcean API 密钥
  • project - 容易区分不同基础设施组的名称
  • region - 数据中心位置标识
  • image_slug - 默认使用 debian-9-x64,因为这个设置是为特定的 Ansible 角色而写的
  • keys - 你的 DigitalOcean ssh 密钥 ID。可以通过 API 获取
  • private_key_path - 你的私钥文件路径。通常在 /home/<用户名>/.ssh/id_rsa
  • ssh_fingerprint - 你的 ssh 密钥的 MD5 指纹
  • public_key - 你的 ssh 公钥的内容
  • ansible_user - 用于以后通过 Ansible 配置 Droplets 的用户名

Ansible

使用 requirements.yml 文件安装 Ansible 角色。

$ ansible-galaxy install -r requirements.yml

Ansible 角色需要在 group_vars/ 中设置一些敏感数据的变量。请参考各自的 README.md 文件,了解需要设置哪些变量。

快速提示!你将通过 ansible vault 来加密文件。为了避免每次运行 playbook 都要输入你的 vault 密码,我建议将密码保存在仓库外的文件中。

$ echo 'password' > ~/.vaultpass.txt

并确保在你的 ansible.cfg 文件中取消注释 vault_password_file = ~/.vaultpass.txt

好了,现在一切都应该设置完毕,你已准备好开始配置和管理你的 Droplets。

部署

Terraform

我们将首先使用 Terraform。确保返回到仓库根目录。需要运行 terraform init 下载数字海洋和模板提供商的 Terraform 插件。设置好后,你可以运行 terraform plan 来创建一个执行计划。

使用 terraform apply 来建立 Droplets 和浮动 IP。这应该需要大约一到两分钟,具体取决于你要启动的节点数量。

Ansible

一旦 Terraform 完成,你可以使用 ansible all -i /usr/local/bin/terraform-inventory -m ping 检查网络连接。所有节点应该返回 pong

接下来,我们准备开始配置 Droplets。在仓库根目录执行 Ansible playbook,配置 Droplets,运行以下命令:

ansible-playbook -i /usr/local/bin/terraform-inventory site.yml

这个 playbook 将安装并配置心跳,浮动 IP 重新分配服务,安装并配置 HAProxy 负载均衡器,以及 MariaDB Galera 集群。你应该能看到稳定的输出,显示 Ansible 当前正在运行的角色和步骤。如果有错误,你可以轻松追踪到正确的角色和任务。

许可证

GPL-3.0

作者信息

cmndrsp0ck

关于项目

Configures a MariaDB Galera Cluster

安装
ansible-galaxy install cmndrsp0ck.galera-cluster
许可证
gpl-3.0
下载
135
拥有者