Pacemaker DNSのクラスタ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
目次~
#contents
**概要 [#kace9eb3]
Pacemakerを使用してBINDをクラスタ化する手順。~
BINDはchange root構成にて動作させる。~
zoneファイルの同期にはftpを使用する。~
**環境情報 [#w46d58b3]
|OS|CentOS 5.5|
|pacemaker|1.0.12-1.el5|
|bind|bind-9.7.1-P2|
**前提 [#lc9c7f30]
Pacemakerのインストール、設定が完了していること。~
BINDはソースコードからインストールを行い、change root設定...
**リソースファイルの修正 [#e7b821d6]
PacemakerにはBIND(named)クラスタ用のリソースファイルが用...
合わせてデバッグ用にスクリプトが単体で動作できる改変も行...
- リソースファイル
/usr/lib/ocf/resource.d/heartbeat/named
- 変更箇所(動作設定)~
~
【変更前】~
# Initialization:
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
#Defaults
OCF_RESKEY_named_default="/usr/sbin/named"
OCF_RESKEY_rndc_default="/usr/sbin/rndc"
OCF_RESKEY_host_default="/usr/bin/host"
OCF_RESKEY_named_user_default=named
OCF_RESKEY_named_config_default=""
OCF_RESKEY_named_pidfile_default="/var/run/named/named.p...
OCF_RESKEY_named_rootdir_default=""
~
【変更後】~
# Initialization:
OCF_ROOT="/usr/lib/ocf"
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
#Defaults
OCF_RESKEY_named_default="/usr/local/sbin/named"
OCF_RESKEY_rndc_default="/usr/local/sbin/rndc"
OCF_RESKEY_host_default="/usr/local/bin/host"
OCF_RESKEY_named_user_default=named
OCF_RESKEY_named_config_default="/etc/named.conf"
OCF_RESKEY_named_pidfile_default="/var/named/run/named.p...
OCF_RESKEY_named_rootdir_default="/var/chroot/named"
~
- 変更箇所(起動処理)~
~
【変更前】~
#
# Start
#
named_start() {
local root_dir_opt
local pid
root_dir_opt=""
named_status && return $OCF_SUCCESS
# Remove pidfile if exists
rm -f ${OCF_RESKEY_named_pidfile}
if [ -n "${OCF_RESKEY_named_rootdir}" -a "x${OCF_RESK...
then
root_dir_opt="-t ${OCF_RESKEY_named_rootdir}"
[ -s /etc/localtime ] && cp -fp /etc/localtime ${...
fi
if [ -n "$OCF_RESKEY_named_config" ]; then
OCF_RESKEY_named_options="-c $OCF_RESKEY_named_co...
fi
if ! ${OCF_RESKEY_named} -u ${OCF_RESKEY_named_user} ...
then
ocf_log err "named failed to start."
return $OCF_ERR_GENERIC
fi
pid=`named_getpid`
if [ -n "$pid" ]; then
if [ ! -e ${OCF_RESKEY_named_pidfile} ]; then
echo $pid > ${OCF_RESKEY_named_pidfile}
fi
else
ocf_log err "named failed to start. Probably erro...
return $OCF_ERR_GENERIC
fi
while :
do
named_monitor && break
sleep 1
ocf_log debug "named hasn't started yet."
done
ocf_log info "named has started."
return $OCF_SUCCESS
}
~
【変更後】~
#
# Start
#
named_start() {
echo -n "Starting named: "
daemon /usr/local/sbin/named -u named -t /var/chroot/nam...
echo
touch /var/lock/subsys/named
}
**Pacemakerの設定 [#ab64a35b]
Pacemakerのクラスタ設定は以下。
-dns-cluster.crm
property no-quorum-policy="ignore" stonith-enabled="false"
rsc_defaults resource-stickiness="INFINITY" migration-th...
primitive bind ocf:heartbeat:named params monitor_reques...
primitive vip ocf:heartbeat:IPaddr2 params ip="【仮想IP...
group dns vip bind
primitive ping ocf:pacemaker:pingd params name="default_...
clone clone_ping ping
location dns_location dns rule -inf: not_defined default...
**DNS設定ファイルの同期 [#k83a8967]
ノード間のBINDの設定状態を同一にするため、named.confおよ...
今回構築する環境は設定の更新頻度が低いため、Node2がNode1...
~
尚、更新頻度が高い場合は共有ディスクに設定を配置するか、D...
~
スクリプトはlftpを使用して同期するものを作成。~
2ディレクトリ(/var/chroot/named/etc、/var/chroot/named/v...
~
-同期1
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SERVER1="[Node1]"
MASTER="【named.confのパス】"
MIRROR="【named.confのパス】"
USER="******"
PASS="******"
EXECDATE=`date +%Y%m`
LOGFILE="/home/system/logs/lftp-sync-"$EXECDATE".log"
## Exec
echo "-------------------------------------------" >> $L...
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
lftp -u $USER,$PASS $SERVER1 -e "mirror -e $MASTER $MIRR...
chown -fR named.named $MIRROR
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
exit 0
# EOF
-同期2
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SERVER1="[Node1]"
MASTER="【Zoneファイルのパス】"
MIRROR="【Zoneファイルのパス】"
USER="******"
PASS="******"
EXECDATE=`date +%Y%m`
LOGFILE="/home/system/logs/lftp-sync-"$EXECDATE".log"
## Exec
echo "-------------------------------------------" >> $L...
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
lftp -u $USER,$PASS $SERVER1 -e "mirror -e $MASTER $MIRR...
chown -fR named.named $MIRROR
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
exit 0
# EOF
~
-cron登録用スクリプト~
2つのスクリプトを動かすため、cron登録用スクリプトを別に準...
~
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SCRIPTPATH="【スクリプトのパス】"
# Exec
$SCRIPTPATH/ftp-sync_dns1.sh
$SCRIPTPATH/ftp-sync_dns2.sh
# EOF
-cron設定~
Node2より毎時00分に同期を実行する。~
~
Node2
00 * * * * [PATH]/ftp-sync_dns.sh
~
**Tips [#e31ec85a]
***仮想IPにてDNSが応答しない事象 [#i8ae11dc]
-事象~
ノード上では正常にBINDが動作しており、ノードのIPアドレス...
-原因~
仮想IPの付与とBINDが起動する順番により発生する。~
BINDが起動した後に仮想IPを付与される設定の場合、後から付...
-対処~
BINDが起動する前に仮想IPを付与する様に設定を行う。~
groupの定義において、仮想IP・BINDの順番にて記述することで...
~
【例】group vip bind
終了行:
目次~
#contents
**概要 [#kace9eb3]
Pacemakerを使用してBINDをクラスタ化する手順。~
BINDはchange root構成にて動作させる。~
zoneファイルの同期にはftpを使用する。~
**環境情報 [#w46d58b3]
|OS|CentOS 5.5|
|pacemaker|1.0.12-1.el5|
|bind|bind-9.7.1-P2|
**前提 [#lc9c7f30]
Pacemakerのインストール、設定が完了していること。~
BINDはソースコードからインストールを行い、change root設定...
**リソースファイルの修正 [#e7b821d6]
PacemakerにはBIND(named)クラスタ用のリソースファイルが用...
合わせてデバッグ用にスクリプトが単体で動作できる改変も行...
- リソースファイル
/usr/lib/ocf/resource.d/heartbeat/named
- 変更箇所(動作設定)~
~
【変更前】~
# Initialization:
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
#Defaults
OCF_RESKEY_named_default="/usr/sbin/named"
OCF_RESKEY_rndc_default="/usr/sbin/rndc"
OCF_RESKEY_host_default="/usr/bin/host"
OCF_RESKEY_named_user_default=named
OCF_RESKEY_named_config_default=""
OCF_RESKEY_named_pidfile_default="/var/run/named/named.p...
OCF_RESKEY_named_rootdir_default=""
~
【変更後】~
# Initialization:
OCF_ROOT="/usr/lib/ocf"
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
#Defaults
OCF_RESKEY_named_default="/usr/local/sbin/named"
OCF_RESKEY_rndc_default="/usr/local/sbin/rndc"
OCF_RESKEY_host_default="/usr/local/bin/host"
OCF_RESKEY_named_user_default=named
OCF_RESKEY_named_config_default="/etc/named.conf"
OCF_RESKEY_named_pidfile_default="/var/named/run/named.p...
OCF_RESKEY_named_rootdir_default="/var/chroot/named"
~
- 変更箇所(起動処理)~
~
【変更前】~
#
# Start
#
named_start() {
local root_dir_opt
local pid
root_dir_opt=""
named_status && return $OCF_SUCCESS
# Remove pidfile if exists
rm -f ${OCF_RESKEY_named_pidfile}
if [ -n "${OCF_RESKEY_named_rootdir}" -a "x${OCF_RESK...
then
root_dir_opt="-t ${OCF_RESKEY_named_rootdir}"
[ -s /etc/localtime ] && cp -fp /etc/localtime ${...
fi
if [ -n "$OCF_RESKEY_named_config" ]; then
OCF_RESKEY_named_options="-c $OCF_RESKEY_named_co...
fi
if ! ${OCF_RESKEY_named} -u ${OCF_RESKEY_named_user} ...
then
ocf_log err "named failed to start."
return $OCF_ERR_GENERIC
fi
pid=`named_getpid`
if [ -n "$pid" ]; then
if [ ! -e ${OCF_RESKEY_named_pidfile} ]; then
echo $pid > ${OCF_RESKEY_named_pidfile}
fi
else
ocf_log err "named failed to start. Probably erro...
return $OCF_ERR_GENERIC
fi
while :
do
named_monitor && break
sleep 1
ocf_log debug "named hasn't started yet."
done
ocf_log info "named has started."
return $OCF_SUCCESS
}
~
【変更後】~
#
# Start
#
named_start() {
echo -n "Starting named: "
daemon /usr/local/sbin/named -u named -t /var/chroot/nam...
echo
touch /var/lock/subsys/named
}
**Pacemakerの設定 [#ab64a35b]
Pacemakerのクラスタ設定は以下。
-dns-cluster.crm
property no-quorum-policy="ignore" stonith-enabled="false"
rsc_defaults resource-stickiness="INFINITY" migration-th...
primitive bind ocf:heartbeat:named params monitor_reques...
primitive vip ocf:heartbeat:IPaddr2 params ip="【仮想IP...
group dns vip bind
primitive ping ocf:pacemaker:pingd params name="default_...
clone clone_ping ping
location dns_location dns rule -inf: not_defined default...
**DNS設定ファイルの同期 [#k83a8967]
ノード間のBINDの設定状態を同一にするため、named.confおよ...
今回構築する環境は設定の更新頻度が低いため、Node2がNode1...
~
尚、更新頻度が高い場合は共有ディスクに設定を配置するか、D...
~
スクリプトはlftpを使用して同期するものを作成。~
2ディレクトリ(/var/chroot/named/etc、/var/chroot/named/v...
~
-同期1
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SERVER1="[Node1]"
MASTER="【named.confのパス】"
MIRROR="【named.confのパス】"
USER="******"
PASS="******"
EXECDATE=`date +%Y%m`
LOGFILE="/home/system/logs/lftp-sync-"$EXECDATE".log"
## Exec
echo "-------------------------------------------" >> $L...
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
lftp -u $USER,$PASS $SERVER1 -e "mirror -e $MASTER $MIRR...
chown -fR named.named $MIRROR
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
exit 0
# EOF
-同期2
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SERVER1="[Node1]"
MASTER="【Zoneファイルのパス】"
MIRROR="【Zoneファイルのパス】"
USER="******"
PASS="******"
EXECDATE=`date +%Y%m`
LOGFILE="/home/system/logs/lftp-sync-"$EXECDATE".log"
## Exec
echo "-------------------------------------------" >> $L...
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
lftp -u $USER,$PASS $SERVER1 -e "mirror -e $MASTER $MIRR...
chown -fR named.named $MIRROR
date +%Y/%m/%d/\ %H:%M:%S >> $LOGFILE
exit 0
# EOF
~
-cron登録用スクリプト~
2つのスクリプトを動かすため、cron登録用スクリプトを別に準...
~
#!/bin/sh
# ----------------------------
# lftp sync script
# ----------------------------
# Version : 1.0
# DATE : 2008.03.18
#
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin...
# Set
SCRIPTPATH="【スクリプトのパス】"
# Exec
$SCRIPTPATH/ftp-sync_dns1.sh
$SCRIPTPATH/ftp-sync_dns2.sh
# EOF
-cron設定~
Node2より毎時00分に同期を実行する。~
~
Node2
00 * * * * [PATH]/ftp-sync_dns.sh
~
**Tips [#e31ec85a]
***仮想IPにてDNSが応答しない事象 [#i8ae11dc]
-事象~
ノード上では正常にBINDが動作しており、ノードのIPアドレス...
-原因~
仮想IPの付与とBINDが起動する順番により発生する。~
BINDが起動した後に仮想IPを付与される設定の場合、後から付...
-対処~
BINDが起動する前に仮想IPを付与する様に設定を行う。~
groupの定義において、仮想IP・BINDの順番にて記述することで...
~
【例】group vip bind
ページ名: