Member-only story
KeepalivedとHAproxyを使って可用性の高いKubernetesクラスタを作成する方法
可用性の高いKubernetesクラスターがあれば、本番環境で必要となるアプリケーションの無停止運用が可能になります。高可用性を実現するためには、さまざまな方法があります。例えば、クラウド(Google CloudやAWSなど)にクラスタを配置する場合、これらのプラットフォームに直接ロードバランサーを作成することができます。また、それと同時にKeepalived、HAproxy、NGINXなどでもロードバランシングを行うことができます。
今回は、KeepalivedとHAproxyを使ってロードバランシングを行い、高可用性を実現してみたいと思います。手順は以下の通りです。
- ホストの準備
- eepalivedとHAproxyのコンフィギュア
- ubeKey を使って Kubernetes クラスタを設定する
Cluster Architecture
私のクラスタでは、3つのマスターノード、3つのワーカーノード、ロードバランシング用の2つのノード、そして1つの仮想IPアドレスを設定します。この例の仮想IPアドレスは、「フローティングIPアドレス」とも呼ばれます。つまり、ノードに障害が発生しても、IPアドレスをノード間で受け渡してフェイルオーバーを可能にし、高可用性を実現しています。
私のクラスタでは、どのマスターノードにもKeepalivedとHAproxyをインストールするつもりはありません。確かに、そうすれば高可用性を実現することができます。とはいえ、2つの特定のノードをロードバランシング用にコンフィギュアすることで、別の方法を試してみたいと思います(必要に応じてこの種のノードを増やすことができます)。この2つのノードにはKeepalivedとHAproxyのみをインストールし、Kubernetesのコンポーネントやサービスとの*潜在的な対立を回避します。
Host Information
参考までに、私のクラスタ内の各ノードの詳細な情報を示します。
ノード、ネットワーク、ディペンデンシーの要件については、私の過去の投稿を参照してください。