# 高可用性

## 概要

以下は、Keeperコネクションマネージャー (KCM) を高可用性 (HA) 構成でセットアップする際の概要です。

この構成には、ロードバランサー、データベース、セキュリティグループ、VPCなどに関する知識が必要です。

## HA構成のアプローチ

### アクティブ-アクティブ構成

* 複数のKCMサーバーが同時にトラフィックを処理します。
* ユーザーが同じKCMインスタンスに接続し続けられるよう、セッションの永続性 (スティッキーセッション) に対応したロードバランサーが必要です。
* 高いスループットと自動フェイルオーバーが実現されます。

### アクティブ-パッシブ構成

* 1つのKCMサーバーがアクティブとして稼働し、待機インスタンスがバックアップとして待機します。
* アクティブサーバーが利用不可になった場合のみ、フェイルオーバーが発生します。
* トラブルシューティングが容易になる一方で、全体の処理能力は向上しません。

<figure><img src="/files/zhlqtEsqvR5eedAWX76r" alt=""><figcaption></figcaption></figure>

## 主な要件

* **外部データベース**: すべてのKCMインスタンスが同一のデータベース (例: MySQL、PostgreSQL) を共有する必要があります。一貫性を保つためです。
* **ロードバランシング**: 両方のHA構成で必須です。アクティブ-アクティブではスティッキーセッション対応のロードバランサーを使用し、アクティブ-パッシブではフェイルオーバー機構を備えたものを使用してください。
* **ストレージに関する考慮事項**: KCMでのセッション録画は、KCMインスタンスのローカルディスクに保存されます。ストレージが満杯になると、新しい録画は失敗し、既存の録画は保持されます。クラスタ構成の場合は、共有ディスクの使用やcronジョブによるファイル同期の導入を検討する必要があります。
* **SSLターミネーション**: KCMのDocker Compose構成では、デフォルトでNGINXによりSSLが終端され、独自の証明書またはLet's Encryptの証明書が使用されます。ロードバランサーの機能に応じて、SSLの終端をロードバランサー側にするか、KCMインスタンス側にするかを選択できます。

## セットアップ手順

{% stepper %}
{% step %}
**複数のKCMインスタンスを展開**

同一のDocker Composeを使用し、構成が完全に一致していることを確認してください。
{% endstep %}

{% step %}
**データベースを展開**

* クラウド管理型またはローカル管理型のデータベースをセットアップします。
* データベースのバックアップが有効になっていることを確認します。
* KCMのデータをローカルデータベースから共有データベースへ移行します (例: `mysqldump`の使用)。
  {% endstep %}

{% step %}
**KCM構成を更新**

* KCMインスタンス (例: `docker-compose.yml`) を更新し、共有データベースを参照するように構成します。
* ロードバランサーの構成に基づいて、各コンテナのリスナー設定を行ってください。
  {% endstep %}

{% step %}
**HAモデルを導入**

* アクティブ-アクティブ構成の場合は、スティッキーセッション対応のロードバランサーを導入します。
* アクティブ-パッシブ構成の場合は、障害を検知してトラフィックを切り替えるためのモニタリングを設定します。
  {% endstep %}

{% step %}
**検証**

* 障害をシミュレーションし、パフォーマンスを監視するとともに、自動フェイルオーバーが正しく機能することを確認します。
  {% endstep %}
  {% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeper-connection-manager/jp/high-avilability.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
