Squid(Proxyサーバ)の冗長化#
ここでは、AWSで提供しているElastic Load Balancer(以降、ELB)のうちNetwork Load Balancer(以降、NLB)を利用したProxyサーバの冗長化を行います。
- ターゲットグループの作成
- NLBの作成
- 接続確認
構成図を再掲します。NLB
とTaget Group
と書かれたコンポーネントが構築対象となります。
1.ターゲットグループの作成#
1.1 まずは、ターゲットグループを作成します。これは、NLBが受けたリクエストを転送する先となります。今回は、2台で冗長構成をとる想定のたため、この2台(Proxy1, Proxy2
)をターゲットグループに登録していきます。EC2のページに移り、左の一覧から ターゲットグループ
を選択してください。そこから、Create target group
を選択します。
選択後、各項目に対して下記設定をし、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 instance
を 3128
とします。ここで指定したポートに振り分けていきます。
一つ前に設定した Protocal:Port
はデフォルトとして設定され、ここで設定したものはその設定を上書きすることができます。実際、同じポート指定で問題ないのですが、ターゲットが複数いて異なるポートで受けたいときは別のポートを指定して登録します。Include as pending below
を選択することでターゲットグループへのインスタンスの登録が完了します。最後に Create target group
を押して完了です。
これで、NLBに登録するターゲットグループが作成できたので、次に、NLBを作成します。
2 NLBの作成#
EC2のページに移り、左の一覧から ロードバランサ
を選択してください。そこから、ロードバランサの作成
を選択します。そして、 Network Load Balancerの作成
を選択します。
要素 | 説明 | 設定値 |
---|---|---|
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名」と書かれている情報をコピーします。
クライアントとなるインスタンスにログインし下記コマンドを実行します。(宛先はYahooにしておりますが、ここは適宜変更してください)
curl -x squidlb-xxxxxxxxxxxxxxxx.elb.ap-northeast-1.amazonaws.com:3128 -L https://www.yahoo.co.jp
レスポンスを確認し、Curl先の情報が取得できていたら成功です。あとは、片方停止して実行したり、ログを確認して冗長化されているかのテストを実施して完了となります。