HAProxyおよびSquidをRedhat/CentOS系で構築する場合、SELinuxとFirewalldの設定を予め済ませておくと良いでしょう。
SELinuxはデフォルトで有効になっているのでこれを無効化します。(Squid、HAProxy)
# setenforce 0
また、OSの再起動時にSELinuxが設定されないように /etc/sysconfig/selinux の以下の部分を修正します。
# SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
ファイアーウォール機能(デフォルトは有効になっている)を使っている場合には、Squid、HAProxyのそれぞれのサーバで待ち受けポートへのアクセスを許可するようにルールを設定します。
(1) Apacheの場合
http用のファイアーウォールルールは、/usr/lib/firewalld/services/http.xml と https.xml としてデフォルトで用意されています。 このルールを適用します。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# systemctl reload firewalld
(2) HAProxyの場合
HAProxyでは、Firewall用のルールファイルがデフォルトで存在しないので、Ssquid用のルールファイルをコピーしてHAProxy用に編集します。
# cp /usr/lib/firewalld/services/squid.xml /etc/firewalld/services/haproxy.xml
コピーした /etc/firewalld/services/haproxy.xml を次のように書き換えます。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>haproxy</short>
<description>haproxy Load Balancer</description>
<port protocol="tcp" port="80"/>
<port protocol="tcp" port="443"/>
<port protocol="tcp" port="8080"/>
<port protocol="tcp" port="8888"/>
</service>
このルールは、80/TCP、443/TCP、8080/TCP と 8888/TCP のアクセスを許可するようになっています。 作成したルールを適用します。
8080/TCPは、Squid(Proxy)用のルールで、別の章で使うルールですが、ルールの共通化ののために定義しておきます。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --add-service=haproxy --zone=public --permanent
# systemctl reload firewalld
HAProxy経由でWebサーバにアクセスされた場合、アクセス元IPアドレスはすべてHAProxyのIPアドレスになってしまい、本来のアクセス元を確認することができません。
そこで、ApacheでHAProxy経由のログについて、ソースIPをX-Forwarded-forで記録するようにします。
編集するのは、Debia系では "/etc/apache2/apache2.conf" 、RHEL/CentOS系では "/etc/httpd/conf/httpd.conf" となります。
HAproxyおよび各Squid Proxyサーバでは、DNSの名前解決ができなくても相手が見つかるようにそれぞれの /etc/hosts を以下のように設定しておきます。
#
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
#
192.168.10.81 haproxy haproxy.example.jp
# Proxys
192.168.10.31 node1
192.168.10.32 node2
192.168.10.33 node3
参考: