4.18. 各コントローラー上の Keystone のプロキシー永続性の使用
高可用性を確保すると、複数のバックエンドサーバーの 1 つでリクエストのフィールドが表示されることが期待されます。SAML で使用されるリダイレクトの数と、これらのリダイレクトのそれぞれのリダイレクトには状態情報が必要になるため、同じサーバーがすべてのトランザクションを処理することが重要です。さらに、mod_auth_mellon
によりセッションが確立されます。現在、mod_auth_mellon
は複数のサーバーで状態情報を共有できないため、常にクライアントから同じサーバーに要求を送信するように HAProxy を設定する必要があります。
HAProxy は、アフィニティーまたは永続性のいずれかを使用してクライアントを同じサーバーにバインドできます。この記事では、HAProxy Sticky Sessions で役に立つ背景情報を提供します。
永続性 と アフィニティー の違いは、アプリケーションレイヤーの下のレイヤーからの情報がクライアント要求を 1 つのサーバーに固定する場合に使用されることです。永続性は、アプリケーションレイヤー情報がクライアントを 1 つのサーバーのスティッキーセッションにバインドする場合に使用されます。アフィニティーに対する永続性の主な利点は、より正確である点です。
永続性は Cookie を使用して実装されます。HAProxy cookie
ディレクティブは、永続性に使用されるクッキーに名前を付け、その使用を制御するパラメーターと共にこれを使用します。HAProxy サーバー
ディレクティブには Cookie
オプションがあり、これはサーバー名に設定する必要があります。受け取った要求にバックエンドサーバーを識別する cookie がない場合、HAProxy はその設定済みの分散アルゴリズムに基づいてサーバーを選択します。HAProxy は、Cookie が応答で選択されたサーバーの名前に設定されていることを確認します。受信要求にバックエンドサーバーを識別する cookie がある場合、HAProxy は要求を処理するサーバーを自動的に選択します。
/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg
設定ファイルのkeystone_public
ブロックで永続性を有効にするには、以下の行を追加します。cookie SERVERID insert indirect nocache
この設定には、
SERVERID
が永続クッキーの名前になります。次に、各
サーバー
の行を編集し、Cookie <server-name> を追加オプションとし
て追加する必要があります。以下に例を示します。server controller-0 cookie controller-0 server controller-1 cookie controller-1
明確にするために、server ディレクティブの他の部分は省略されています。