cmndrsp0ck.galera-cluster
galera-cluster
目的
このリポジトリは、浮動IP再割り当てを持つ2つのHAProxyノードとMariaDB Galeraクラスターをデプロイし、構成するのに役立ちます。プロビジョニングはTerraformによって行われ、構成はAnsibleで行われます。
必要条件
- リソースをプロビジョニングするためにTerraformをインストールする必要があります。
- 新しくプロビジョニングされたDropletに構成変更を適用するには、Ansibleをインストールする必要があります。
- AnsibleのインベントリはTerraformによって管理されるため、terraform-inventoryが必要です。
- DigitalOcean APIキーが必要です。APIキーの生成手順はこちらで確認できます。
- 同梱の
gen_auth_key
スクリプトを使用して、ロードバランシングクラスター用の認証キーを生成します。
構成
Terraform
terraform.tfvars
サンプルファイルterraform.tfvars.sampleが用意されていますので、_.sample_を削除することを忘れないでください。すべての変数が設定されたら、Terraformは認証してDropletをデプロイできるはずです。
- 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でDropletを構成するときに使用するユーザー名
Ansible
requirements.ymlファイルを使用してAnsibleロールをインストールします。
$ ansible-galaxy install -r requirements.yml
Ansibleロールには、**group_vars/**内に機密データを含む変数を設定する必要があります。設定すべき変数については、それぞれのREADME.mdファイルを参照してください。
簡単なメモ!Ansibleボルトを使用してファイルを暗号化します。プレイブックを実行するたびにボルトパスワードを入力する必要がないように、リポジトリの外にファイルを作成してパスワードを設定することをお勧めします。
$ echo 'password' > ~/.vaultpass.txt
また、ansible.cfgファイル内のvault_password_file = ~/.vaultpass.txt
のコメントを解除してください。
これで、すべての設定が完了し、Dropletのプロビジョニングと構成を開始する準備が整いました。
デプロイ
Terraform
Terraformを使って始めます。リポジトリのルートディレクトリに戻ることを確認してください。terraform init
を実行して、digitaloceanやtemplateプロバイダのTerraformプラグインをダウンロードする必要があります。すべてが設定されたら、terraform plan
を実行して実行プランを作成します。
terraform apply
を使用してDropletと浮動IPを構築します。ノードの数に応じて、約1〜2分かかるはずです。
Ansible
Terraformの作業が完了したら、ansible all -i /usr/local/bin/terraform-inventory -m ping
を使用してネットワーク接続を確認できます。すべてのノードに対してpongが返されるはずです。
これでDropletの構成を始める準備が整いました。リポジトリのルートからAnsibleプレイブックを実行して、Dropletを構成します。
ansible-playbook -i /usr/local/bin/terraform-inventory site.yml
このプレイブックは、浮動IP再割り当てサービスであるheartbeatをインストールし構成し、HAProxyロードバランサーをインストールし構成し、MariaDB Galeraクラスターをセットアップします。Ansibleが現在実行している役割とステップに関する安定した出力が表示されます。エラーが発生した場合は、正しい役割とタスクに簡単にトレースできます。
ライセンス
GPL-3.0