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