[Rancher実践] Rancher HAをTerraformで構築する

はじめに

今回はAWS上にTerraformを利用してRancher HA構成を構築する方法をご紹介したいと思います。RancherはRancher serverコンテナを起動するだけで簡単に使い始めることができますが、何かしらの理由により停止してしまった場合、利用できなくなってしまいます。本格的に利用する際はRancherServerの冗長性を確保したいところですが、最初から完全なHighAvailabilityな構成で構築することを考えると、コスト面で躊躇してしまうことがあるのではないでしょうか。

ユースケース

将来的にHAにできるミニマム構成で立ち上げつつ、性能や冗長性が気になりだしたら簡単にスケールアウトしたい。

Terraformを利用することで、メンテナンス性を担保しつつ、上記のようなケースを実現することができるのです。

Rancher HA

まずは、Rancher HAの要件を確認してみましょう。詳細は公式ドキュメントをご確認ください。

  • HAを構成するノードについて
    • DockerがサポートされているモダンなLinux
    • ノード間通信用に9345, 8080のポートが開いていること
    • 1GB RAM
  • MySQLデータベースについて
    • 少なくとも1GB RAM以上
    • Rancher serverノード毎に50コネクション
    • その他MySQLの設定
  • ロードバランサー
    • ロードバランサーとノード間の通信は8080ポート
  • 大規模構成のための奨励要件
    • サーバノード毎に4GB/8GBのヒープサイズ。つまり8GB/16GBのRAM
    • データベースには速いディスクIOを用意する
    • データベースはレプリケーションされ、適切にバックアップされること

AWSでどのように実現するか?

上記の要件を踏まえつつ、今回は下記のような構成をとりたいと思います。

  • 全体
    • 提供されているRancherOSのAMIを利用する
    • 新規VPCを作成して構築する
    • MySQLの代わりにAmazon Auroraを利用する
    • HA構成時のEC2インスタンス配置はAZに分散する
    • ロードバランサーはELBを利用する
    • ロードバランサーのTLS証明書はACMで事前取得したものを利用する
  • ミニマム構成
    • EC2インスタンスはt2.smallを1つ
    • DBインスタンスdb.t2.smallを1つ
  • HA構成
    • EC2インスタンスはt2.smallを3つ
    • DBインスタンスdb.t2.smallを2つ

サンプル

今回の構築のサンプル定義はこちらにあります。

sample-rancher-terraform

各定義内容の詳細な説明は割愛しますが、ポイントは以下になります。ご自身の環境に合わせて調整してください。

  • variables.tfで変数宣言とデフォルト値設定を行なっている。
  • terraform.tfvarsでデフォルト値を上書きしている。

実行

それでは早速、このような設定で実行してみましょう。

環境変数等にAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定し、$ terraform applyを実行すると構築が始まります。構築完了までおよそ10分程度かかります。

構築が完了するとELBのDNS名が最後に表示されますので、Route53などでドメインと紐づけてください。(今回はTerraformによるRoute53の変更は組み込んでいません)

アクセスすると無事、初期画面が表示されました。

スケールアウトできることを確認するため、エージェントホストを1つ追加しておきます。

terraform.tfvarsでインスタンス数を修正して、再び$ terafform applyを実行します。

これでHA構成になりました!変更前に追加したエージェントホストもちゃんと見れてますね!

おわりに

TerraformによりRancher HAを「ミニマムな構成で立ち上げつつ、状況に応じてHA構成にスケールアウトする」ということをコードとして実現することができました。コードとして実現することのメリットは、”HA構成にスケールアウトする”という作業をシンプルな手順で誰でもできるようになる点です。複数人で同じ環境を触る際は、バックエンド定義により状態を共有&ロックする必要がありますが、「最初ミニマムで構成したけど、半年後にスケールアウトしたくなった」という場合でも、ゼロから環境を見直して思い返す必要がなくなります。みなさんも是非、環境をコードとして残し、安心&安全な運用につなげてみてはいかがでしょうか!

APN Consulting Partner
スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。