keepalived を CentOS 5 にインストールする(3)

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 とは依存していない為、同じである必要はありません。

Published by in Linux, Web 技術, インストール and 負荷分散 using 205 words.