Member-only story

KeepalivedとHAproxyを使って可用性の高いKubernetesクラスタを作成する方法

gavin.zhou
20 min readAug 19, 2021

--

可用性の高いKubernetesクラスターがあれば、本番環境で必要となるアプリケーションの無停止運用が可能になります。高可用性を実現するためには、さまざまな方法があります。例えば、クラウド(Google CloudやAWSなど)にクラスタを配置する場合、これらのプラットフォームに直接ロードバランサーを作成することができます。また、それと同時にKeepalived、HAproxy、NGINXなどでもロードバランシングを行うことができます。

今回は、KeepalivedとHAproxyを使ってロードバランシングを行い、高可用性を実現してみたいと思います。手順は以下の通りです。

  1. ホストの準備
  2. eepalivedとHAproxyのコンフィギュア
  3. ubeKey を使って Kubernetes クラスタを設定する

Cluster Architecture

私のクラスタでは、3つのマスターノード、3つのワーカーノード、ロードバランシング用の2つのノード、そして1つの仮想IPアドレスを設定します。この例の仮想IPアドレスは、「フローティングIPアドレス」とも呼ばれます。つまり、ノードに障害が発生しても、IPアドレスをノード間で受け渡してフェイルオーバーを可能にし、高可用性を実現しています。

私のクラスタでは、どのマスターノードにもKeepalivedとHAproxyをインストールするつもりはありません。確かに、そうすれば高可用性を実現することができます。とはいえ、2つの特定のノードをロードバランシング用にコンフィギュアすることで、別の方法を試してみたいと思います(必要に応じてこの種のノードを増やすことができます)。この2つのノードにはKeepalivedとHAproxyのみをインストールし、Kubernetesのコンポーネントやサービスとの*潜在的な対立を回避します。

Host Information

参考までに、私のクラスタ内の各ノードの詳細な情報を示します。

ノード、ネットワーク、ディペンデンシーの要件については、私の過去の投稿を参照してください。

Configure Load Balancing

--

--

No responses yet