keepalived を CentOS 5 にインストールする方法について説明しています。今回まででだいたいのインストールが完了し、残りは設定と起動になります。
リアルサーバのルーティング設定
リアルサーバにルーティング設定を行います。この設定は keepalived を NAT 構成で構築したい場合のみ必要です。DSR 構成の場合は読み飛ばして下さい。(この辺りの詳細は こちら を参照下さい)
# yum -y install make rpm-build openssl-devel gcc
# cd /etc/sysconfig/network-scripts
# vi ifcfg-eth0
“GATEWAY” をバーチャルサーバのリアルサーバ向けバーチャル IP を設定します。また、ifcfg-eth0 の番号箇所は利用するインタフェースに応じて変わります
次に設定内容を反映します
# service network restart
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
xxx.xxx.xx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 xxx.xxx.xx.193 0.0.0.0 UG 0 0 0 eth0
GATEWAY が設定されていることを確認する
リアルサーバの healthcheck 設定
次にリアルサーバへの healthcheck 設定を行います。healthcheck はバーチャルサーバからリアルサーバへ http 経由で行います。今回はこの設定を apache で行います。
apache 自体は既にインストールされていることを前提とします。以下のような例で最初に apache を設定します。
# cd /etc/httpd/conf.d
# system-config-securitylevel
http ポートを開放する
# vi healthcheck.conf
# vi healthcheck.conf
# vim: syntax=apache ts=2
# ==========================================
# Load Balancer が行う health check 用の Virtual Host
# ==========================================
<VirtualHost *:80>
DocumentRoot /var/www/vhost/healthcheck
ServerName healthcheck
ErrorLog logs/healthcheck_error.log
CustomLog logs/healthcheck_access.log common
<Directory />
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
</VirtualHost>
そして仮の healthcheck.cgi を作成します
# mkdir -p /var/www/vhost/healthcheck
# setfacl -m u:apache:rx /var/www/vhost
# setfacl -m u:apache:rx /var/www/vhost/healthcheck
# cd /var/www/vhost/healthcheck/
# vi healthcheck.cgi
healthcheck.cgi の例を以下に記載します。
#! /bin/bash</p>
function main {
echo "Content-Type: text/plain"
echo ""printf "%s OKn"
}
main $*
これは無制限に OK を返すだけの内容です。実際にはシステムに応じて変更する必要があります。例えば、システムが tomcat 等の Web アプリケーションでできているのであればそのポートを叩いたり URL を叩いて実際に確認した結果を返すことになります(今回は長くなるので省略)。 また、ここでは 1つのサーバしか行っていませんが、この healthcheck の設定は NAT 構成 DSR 構成に限らず全てのリアルサーバに行う必要があります。
この時の keepalived のバージョンは IPVS とは依存していない為、同じである必要はありません。