3.4.3. PROXY プロトコルの使用
デフォルトで、HAProxy ルーターは PROXY プロトコルを使用しません。ROUTER_USE_PROXY_PROTOCOL
環境変数を使用することで、ルーターが受信接続に PROXY プロコトルの使用を予想するように設定できます。
PROXY プロコトルの有効化
oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=true
$ oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=true
変数を true
または TRUE
以外の値に設定し、PROXY プロコトルを無効にします。
PROXY プロトコルの無効化
oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=false
$ oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=false
ルーターで PROXY プロトコルを有効にする場合、ルーターの前のロードバランサーが PROXY プロコトルを使用するように設定する必要があります。以下は、Amazon の Elastic Load Balancer (ELB) サービスを PROXY プロトコルを使用するように設定した例です。この例では、ELB がポート 80 (HTTP)、443 (HTTPS)、5000 (イメージレジストリーの場合) を 1 つ以上の EC2 インスタンスで実行されるルーターに転送することを想定しています。
Amazon ELB を設定して PROXY プロコトルを使用する
後続の手順を単純化するために、最初に一部の Shell 変数を設定します。
lb='infra-lb' instances=( 'i-079b4096c654f563c' ) secgroups=( 'sg-e1760186' ) subnets=( 'subnet-cf57c596' )
$ lb='infra-lb'
1 $ instances=( 'i-079b4096c654f563c' )
2 $ secgroups=( 'sg-e1760186' )
3 $ subnets=( 'subnet-cf57c596' )
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、適切なリスナーやセキュリティーグループおよびサブネットを使用して ELB を作成します。
注記すべてのリスナーが HTTP プロトコルではなく TCP プロトコルを使用するよう設定する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターインスタンスを ELB に登録します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ELB のヘルスチェックを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最後に、
ProxyProtocol
属性を有効にしたロードバランサーのポリシーを作成し、ELB の TCP ポート 80 および 443 でポリシーを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
設定の確認
ロードバランサーを以下のように検証して、設定が正しいことを確認します。
または、ELB をすでに設定していても、PROXY プロトコルを使用するよう設定されていない場合は、 TCP ポート 80 の既存リスナーを、HTTP ではなく TCP プロコトルを使用するように変更する必要があります (TCP ポート 443 はすでに TCP プロトコルを使用しているはずです)。
aws elb delete-load-balancer-listeners --load-balancer-name "$lb" \ --load-balancer-ports 80 aws elb create-load-balancer-listeners --load-balancer-name "$lb" \ --listeners 'Protocol=TCP,LoadBalancerPort=80,InstanceProtocol=TCP,InstancePort=80'
$ aws elb delete-load-balancer-listeners --load-balancer-name "$lb" \
--load-balancer-ports 80
$ aws elb create-load-balancer-listeners --load-balancer-name "$lb" \
--listeners 'Protocol=TCP,LoadBalancerPort=80,InstanceProtocol=TCP,InstancePort=80'
プロコトル更新の確認
プロコトルが以下のように更新されていることを確認します。
- 1
- TCP ポート 80 のリスナーなど、すべてのリスナーが TCP プロコトルを使用している必要があります。
次にロードバランサーポリシーを作成し、上記の手順 5 に説明されているようにこれを ELB に追加します。