6.2. Squid リバースプロキシーのインストール
Squid サーバーをインストールし、リバースプロキシーモードを使用してロードバランサーとして使用します。
yum install squid
# yum install squid
SSL 証明書を生成し、Satellite CA でそれらに署名する必要もあります。最も簡単な方法としては、CA がすでに利用可能であるため、Satellite サーバーで
rhn-ssl-tool
を使用し、サーバー証明書を生成することができます。
Satellite SSL Maintenance Tool (rhn-ssl-tool) は Satellite SSL キーおよび証明書を生成し、これらを保持します。また、これらのキーおよび証明書をデプロイする際に使用する RPM も生成します。このツールは Satellite 環境での使用が意図されていますが、Satellite 外でも使用することができます。
この例では、ロードバランサーの名前は
lb.example.com
です。ホスト名をデプロイメントに適用される名前に置き換え、適切なビルドディレクトリーを入力します。以下のコマンドを Satellite サーバーで実行します。
rhn-ssl-tool --gen-server --set-hostname=lb.example.com -d /root/ssl-build
$ rhn-ssl-tool --gen-server --set-hostname=lb.example.com -d /root/ssl-build
上記で使用される
rhn-ssl-tool
は lb.example.com
の SSL ファイルを作成し、これらのファイルを /root/ssl-build
ディレクトリーに保存します。server.crt
、server.key
、および RHN-ORG-TRUSTED-SSL-CERT
CA 証明書を、dhcp
ディレクトリーから lb.example.com
ロードバランサーにコピーします。これらのファイルは、実際のロードバランサーの SSL をセットアップするために使用されます。RHN-ORG-TRUSTED-SSL-CERT
証明書により、ロードバランサーとプロキシー間の SSL 通信が可能になります。
lb.example.com
サーバーで /etc/squid/squid.conf
ファイルを変更し、リバースプロキシーモードをセットアップします。
例6.1 リバースプロキシーモードのセットアップ
直前の例では、2 つのリバースプロキシーのセットアップについて説明しています。ポート 443 にはラウンドロビンモードで使用される 2 つのプロキシーがあります。要求は 2 つのプロキシー間で均等に共有されます。
server.crt
および server.key
ファイルの名前はそれぞれ lb.crt
および lb.key
(「load balancer (ロードバランサー) の省略) に変更され、識別が容易になりました。Satellite CA 証明書の名前は squid-ca.crt
に変更されます。cache_peer sslcafile
オプションはこのファイルを参照します。
証明書を
squid
グループに追加します。
chgrp squid /etc/pki/tls/certs/{lb.crt,lb.key,squid-ca.crt}
# chgrp squid /etc/pki/tls/certs/{lb.crt,lb.key,squid-ca.crt}
ファイルの詳細は以下のように表示されます。
-rw-r--r--. 1 root squid 5450 Aug 23 21:23 lb.crt -rw-r--r--. 1 root squid 1675 Aug 23 21:23 lb.key -rw-r--r--. 1 root squid 5363 Aug 22 14:19 squid-ca.crt
-rw-r--r--. 1 root squid 5450 Aug 23 21:23 lb.crt
-rw-r--r--. 1 root squid 1675 Aug 23 21:23 lb.key
-rw-r--r--. 1 root squid 5363 Aug 22 14:19 squid-ca.crt
cache_peer
ディレクティブはラウンドロビン形式で使用される 2 つのプロキシーをセットアップします。ロードバランサーがプロキシーと通信できるように CA 証明書を指定する必要があることに注意してください。また squid の acl is_ssl
および cache_peer
ディレクティブを使用して、ポート 443 のトラフィックのみがこれらのプロキシーにヒットするように設定されます。
defaultsite
ディレクティブを使用して、ポート 80 のすべてのトラフィックが 1 つのプロキシーにリダイレクトされ、dhcp16.example.com プロキシーにデフォルト設定されます。Acls は ssl ポートと同様にセットアップされます。
sslpassword_program
ディレクティブを使用すると、SSL キーのパスフレーズ (使用される場合、完了についての表示が出されます) を人の介入なしに起動時に squid に送信できます。password.out の内容は、SSL パスフレーズを echo する bash スクリプトです。forwarded_for
ディレクトリーは forwarded_for
ヘッダーをプロキシーに送信するようにロードバランサーを設定します。
重要
/etc/squid/squid.conf
を編集し、squid が通常リッスンするデフォルトポートの 3128 をコメントアウトします。
Squid normally listens to port 3128 http_port 3128
# Squid normally listens to port 3128
# http_port 3128
設定の変更後に squid を再起動します。
service squid restart
# service squid restart