コンテンツにスキップ

Squid(Proxyサーバ)の冗長化#

ここでは、AWSで提供しているElastic Load Balancer(以降、ELB)のうちNetwork Load Balancer(以降、NLB)を利用したProxyサーバの冗長化を行います。

  1. ターゲットグループの作成
  2. NLBの作成
  3. 接続確認

構成図を再掲します。NLBTaget Group と書かれたコンポーネントが構築対象となります。

Alt text|790x0|center

1.ターゲットグループの作成#

1.1 まずは、ターゲットグループを作成します。これは、NLBが受けたリクエストを転送する先となります。今回は、2台で冗長構成をとる想定のたため、この2台(Proxy1, Proxy2)をターゲットグループに登録していきます。EC2のページに移り、左の一覧から ターゲットグループ を選択してください。そこから、Create target groupを選択します。

Alt text|790x0|center

選択後、各項目に対して下記設定をし、Nextを選択します。

要素 説明 設定値
Choose a target type NLBが振り分ける先の指定方法(IPなども可能) Instances
Taget group name ターゲットグループの名称 ProxyServerGroup
Protocol:port ターゲットがListenするポート TCP:3128
VPC 登録したいインスタンスがあるVPC プロキシを構築するVPC
Health check protocol HealthCheckに利用されるプロトコル TCP

参考:Network Load Balancers のターゲットグループ

1.2 次に、このターゲットグループに登録するインスタンスを選択します。登録するインスタンスのチェックボックスにチェックを入れ、Ports for the selected instance3128 とします。ここで指定したポートに振り分けていきます。

一つ前に設定した Protocal:Portはデフォルトとして設定され、ここで設定したものはその設定を上書きすることができます。実際、同じポート指定で問題ないのですが、ターゲットが複数いて異なるポートで受けたいときは別のポートを指定して登録します。Include as pending below を選択することでターゲットグループへのインスタンスの登録が完了します。最後に Create target group を押して完了です。

Alt text|790x0|center

これで、NLBに登録するターゲットグループが作成できたので、次に、NLBを作成します。

2 NLBの作成#

EC2のページに移り、左の一覧から ロードバランサ を選択してください。そこから、ロードバランサの作成 を選択します。そして、 Network Load Balancerの作成 を選択します。

Alt text|790x0|center Alt text|790x0|center

要素 説明 設定値
Load balancer name 作成するロードバランサの名称 ProxyLB
Scheme NLBが内部/外部向けのどちらで利用するか Internal
IP address type 対応するIPのバージョン IPv4
VPC 振り分け先のVPC プロキシを構築するVPC
Mapping 振り分け先のサブネット ProxyサーバがいるAZ/Subnetを選択(構成図上のPrivateSubnet1a,1d)
Listener(Protocol:Port) NLBがListenするプロトコルとポート TCP:3128
Default action ターゲットグループの指定 ProxyServerGroup

上記設定後、 Create load balancer を選択。これで、NLBの下に構築したSquidサーバが2つぶら下がっている状態となります。

3 接続確認#

EC2でクライアントとなるインスタンスを構築し、Proxyが利用できているかを確認します。まずは、作成したNLBのDNS名を確認します。作成したNLBを選択し、説明タブから「DNS名」と書かれている情報をコピーします。

Alt text|790x0|center

クライアントとなるインスタンスにログインし下記コマンドを実行します。(宛先はYahooにしておりますが、ここは適宜変更してください)

curl -x squidlb-xxxxxxxxxxxxxxxx.elb.ap-northeast-1.amazonaws.com:3128 -L https://www.yahoo.co.jp

レスポンスを確認し、Curl先の情報が取得できていたら成功です。あとは、片方停止して実行したり、ログを確認して冗長化されているかのテストを実施して完了となります。