オープンソース

一覧へ

3. インストール

ILUKAのインストールは 設定概要 で示したように以下の手順で行います。

  • ソフトウェアの入手と展開
  • ILUKAの環境設定
  • keepalivedの初期設定
  • keepalived設定ファイルのテンプレート設定
  • ロック用ディレクトリの設定
  • sudoの設定
  • ウェブサーバの設定

3.1. ソフトウェアの入手と展開

ILUKAは、postLDAPadminのフレームワークを使用して動作します。
postLDAPadminは、postLDAPadminプロジェクトのダウンロードページから入手することができます。

https://osdn.jp/projects/postldapadmin/

上記URLから以下のファイルをダウンロードしてください。

  • postLDAPadmin_frame-VERSION.tar.gz
  • postLDAPadmin_admin-VERSION.tar.gz
  • postLDAPadmin_lib-VERSION.tar.gz

ILUKAは、ILUKAプロジェクトのダウンロードページから入手することができます。 https://osdn.jp/projects/iluka/

上記URLから以下のファイルをダウンロードしてください。

  • iluka-VERSION.tar.gz

ILUKAをインストールする前に、postLDAPadminのインストールが必要です。

次に以下に従ってインストールを実行してください。

postLDAPadminのインストール実行例
# tar xzf postLDAPadmin_frame-VERSION.tar.gz -C /usr/local
# tar xzf postLDAPadmin_admin-VERSION.tar.gz -C /usr/local/postldapadmin/htdocs/admin
# tar xzf postLDAPadmin_lib-VERSION.tar.gz -C /usr/local/postldapadmin/lib
ILUKAのインストール実行例
# tar xzf iluka-VERSION.tar.gz -C /usr/local/postldapadmin

上記のように展開した場合、展開後のディレクトリ構成は以下の表のようになります。

表:ILUKAのディレクトリ構成
ディレクトリ/ファイル名 解説
/usr/local/postldapadmin/htdocs/admin/iluka/ ILUKAを格納するディレクトリ
/usr/local/postldapadmin/lib/dglibiluka ILUKA専用ライブラリ
/usr/local/postldapadmin/tmpl/ テンプレート(ILUKA用のテンプレートが追加されます)
/usr/local/postldapadmin/tmpl/iluka/ keepalived設定テンプレート
/usr/local/postldapadmin/etc/msg_file.ILUKAsample ILUKA用メッセージファイル
/usr/local/postldapadmin/etc/tab.conf.ILUKAsample ILUKA用タブファイル
/usr/local/postldapadmin/etc/web.conf.ILUKAsample ILUKA用設定ファイル

3.2. ILUKAの環境設定

ILUKAを使用するために下記の4つの設定ファイルを作成します。

3.2.1. web.confの作成

web.confの作成例
# cd /usr/local/postldapadmin/etc
# mkdir iluka
# chown apache:apache iluka
# cd iluka
# cat ../web.conf.sample ../web.conf.ILUKAsample > web.conf
# chown apache:apache web.conf
web.confの設定例
[global]
TitleName=ILUKA
ReferrerUrl=http://
AdminName=admin
AdminPasswd=21232f297a57a5a743894a0e4a801fc3
LogFile=syslog
SyslogFacility=local1
SessionTimeout=900
MaxPasswordLength=8
MinPasswordLength=3
PasswordEncrypt=CRYPT

[iluka]
KeepalivedReloadScript=sudo /usr/local/postldapadmin/bin/reload_keepalived
LocalPartRFCCheck=0
KeepalivedBaseDir=/etc/keepalived/
LockFile=/var/iluka/iluka.lock

Note

web.confの中にある[postldapadmin]セクションは不要ですので削除してください。

3.2.2. tab.confの作成

tab.confの作成例
# cd /usr/local/postldapadmin/etc/iluka
# cat ../tab.conf.sample ../tab.conf.ILUKAsample > tab.conf
tab.confの設定例
iluka/global:グローバル設定
iluka/lb:ロードバランサ設定
postldapadmin/adminpass:管理者アカウント管理

Note

tab.confの中にあるpostldapadmin/user... と postldapadmin/ml... は不要ですので削除してください。

3.2.3. msg_fileの作成

msg_fileの作成例
# cd /usr/local/postldapadmin/etc/iluka
# cat ../msg_file.sample ../msg_file.ILUKAsample > msg_file

3.2.4. admin.keyの作成

admin.keyの作成例
# cd /usr/local/postldapadmin/etc/iluka
# cat /dev/urandom | base64 | head -n1 | cut -c1-8 > admin.key

3.3. keepalived.confの初期設定

ILUKAはkeepalivedの設定ファイルをapacheユーザ権限で更新します。 keepalived設定ファイルを配置するディレクトリにapacheユーザでの書き込み権を与える必要があります。

keepalibed設定ファイルの初期設定例
# mv /etc/keepalived{,.ORG} ← 既存のkeepalived設定ディレクトリを退避

# mkdir /etc/keepalived
# cat > /etc/keepalived/keepalived.conf
global_defs {
notification_email {
    iluka@localhost.localdomain
}
notification_email_from iluka@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 60
}
<CTRL+D>
# touch /etc/keepalived/virtual_server.conf
# mkdir /etc/keepalived/virtual_server
# chown -R apache:apache /etc/keepalived

Note

<CTRL+D>は CTRLキー + Dキー の入力を示しています。

3.4. keepalived設定ファイルのテンプレート設定

ILUKAでは、keepalivedが読み込む設定ファイル keepalived.conf をテンプレートファイルから生成します。
ILUKAは、テンプレートを読み込んで特定の文字列(タグ)を置換してkeepalivedの設定ファイルを生成します。そのため、テンプレートにタグ情報を正しく設定すれば柔軟に設定内容をカスタマイズすることができます。

keepalived設定ファイルのテンプレートは、以下のディレクトリに配置されています。

[展開ディレクトリ]/tmpl/iluka/

keepalived設定ファイルテンプレートは 設定ファイル名.default をいう名前で展開されます。 設定ファイル名.default を参考にして、各keepalived設定ファイルを作成してください。

表:keepalived設定ファイルテンプレート一覧
テンプレートファイル名 展開される設定ファイル
keepalived.conf.tmpl keepalived.conf
virtual_server.conf.tmpl virtual_server/(vip)_(vport)_(vproto).conf
real_server.conf.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf
http_get.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
ssl_get.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
tcp_check.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
smtp_check.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
misc_check.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
udp_check.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
dns_check.tmpl virtual_server/(vip)_(vport)_(vproto)/(rip)_(rport).conf の一部
  • (vip)→ バーチャルサーバのIPアドレス
  • (vport)→ バーチャルサーバのポート番号
  • (vptoto)→ バーチャルサーバのプロトコル(0:TCP, 1:UDP)
  • (rip)→ リアルサーバのIPアドレス
  • (rport)→リアルサーバのポート番号

3.4.1. keepalived設定ファイルテンプレート (keepalived.conf.tmpl)

表:keepalived設定ファイルテンプレートのタグ
タグ名 置き換えられる値
<<NOTITICATION_EMAIL>>
notification_email {
通知先メールアドレス1
通知先メールアドレス2
:
:
}
<<NOTITICATION_EMAIL_FROM>> notification_email_from 送信元メールアドレス
<<SMTP_SERVER>> smtp_server SMTPサーバ
<<SMTP_CONNECT_TIMEOUT>> smtp_connect_timeout SMTP接続タイムアウト
keepalived.conf.tmplの設定例
global_defs {
    <<NOTITICATION_EMAIL>>
    <<NOTITICATION_EMAIL_FROM>>
    <<SMTP_SERVER>>
    <<SMTP_CONNECT_TIMEOUT>>
    router_id localhost.localdomain
}

    vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.1.220/24 dev eth0
    }
}

include ./virtual_server.conf

Note

keepalived.confは上記のテンプレートから生成されます。タグ以外の基本的な設定はこのテンプレートに反映してください。 特にrouter_id,interface,virtual_ipaddress等は動作環境に合わせて変更が必要になります。

3.4.2. バーチャルサーバ設定ファイルテンプレート (virtual_server.conf.tmpl)

表:バーチャルサーバ設定ファイルテンプレートのタグ
タグ名 置き換えられる値
<<IP_ADDRESS>> バーチャルサーバのIPアドレス
<<PORT>> バーチャルサーバのポート
<<PROTOCOL>> protocol プロトコル(TCP/UDP)
<<DELAY_LOOP>> delay_loop 監視間隔
<<LB_ALGO>> lb_algo 分散アルゴリズム
<<LB_KIND>> lb_kind 転送方法
<<PERSISTENCE TIMEOUT>> persistence_timeout タイムアウト
<<VIRTUALHOST>> virtualhost バーチャルホスト
<<SORRY_SERVER>> virtualhost SorryサーバIPアドレス Sorryサーバポート番号
virtual_server.conf.tmplの設定例
virtual_server <<IP_ADDRESS>> <<PORT>> {
  <<PROTOCOL>>
  <<DELAY_LOOP>>
  <<LB_ALGO>>
  <<LB_KIND>>
  <<PERSISTENCE TIMEOUT>>
  <<VIRTUALHOST>>
  <<SORRY_SERVER>>

  include <<IP_ADDRESS>>_<<PORT>>/real_server.conf
}

3.4.3. リアルサーバ設定ファイルテンプレート (real_server.conf.tmpl)

リアルサーバ設定テンプレートは、real_server セクションを設定するテンプレート (real_server.conf.tmpl)と、
real_serverセクション内に設定するヘルスチェック毎のテンプレート(http_get.tmpl, ssl_get.tmpl, tcp_check.tmpl, smtp_check.tmpl, misc_check.tmpl, udp_check.tmpl, dns_check.tmpl)で構成されます。

3.4.3.1. real_serverセクションテンプレート(real_server.conf.tmpl)

表:real_serverセクションテンプレートのタグ
タグ名 置き換えられる値
<<IP_ADDRESS>> リアルサーバのIPアドレス
<<PORT>> リアルサーバのポート番号
<<WEIGHT>> weight 重み付け
<<HEALTH_CHECK>> ヘルスチェック毎テンプレートの展開内容
real_server.conf.tmplの設定例
real_server <<IP_ADDRESS>> <<PORT>> {
    <<WEIGHT>>
<<HEALTH_CHECK>>
}

3.4.3.2. ヘルスチェックテンプレート(http_get.tmpl)のタグ

表:ヘルスチェックテンプレート(http_get.tmpl)のタグ
タグ名 置き換えられる値
<<PATH>> path パス
<<DIGEST>> digest ダイジェスト
<<STATUS_CODE>> status_codeステータス
<<NB_GET_RETRY>> nb_get_retry リトライ数
<<DELAY_BEFORE_RETRY>> delay_before_retry リトライ間隔
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<CONNECT_TIMEOUT>> connect_timeout 接続タイムアウト
http_get.tmpl の設定例
HTTP_GET {
    url {
        <<PATH>>
        <<DIGEST>>
        <<STATUS_CODE>>
    }
    <<NB_GET_RETRY>>
    <<DELAY_BEFORE_RETRY>>
    <<CONNECT_IP>>
    <<CONNECT_PORT>>
    <<BINDTO>>
    <<BIND_PORT>>
    <<CONNECT_TIMEOUT>>
}

3.4.3.3. ヘルスチェックテンプレート(ssl_get.tmpl)のタグ

表:ヘルスチェックテンプレート(ssl_get.tmpl)
タグ名 置き換えられる値
<<PATH>> path パス
<<DIGEST>> digest ダイジェスト
<<STATUS_CODE>> status_codeステータス
<<NB_GET_RETRY>> nb_get_retry リトライ数
<<DELAY_BEFORE_RETRY>> delay_before_retry リトライ間隔
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<CONNECT_TIMEOUT>> connect_timeout 接続タイムアウト
ssl_get.tmplの設定例
SSL_GET {
    url {
        <<PATH>>
        <<DIGEST>>
        <<STATUS_CODE>>
    }
    <<NB_GET_RETRY>>
    <<DELAY_BEFORE_RETRY>>
    <<CONNECT_IP>>
    <<CONNECT_PORT>>
    <<BINDTO>>
    <<BIND_PORT>>
    <<CONNECT_TIMEOUT>>
}

3.4.3.4. ヘルスチェックテンプレート(tcp_check.tmpl)のタグ

表:ヘルスチェックテンプレート(tcp_check.tmpl)のタグ
タグ名 置き換えられる値
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<CONNECT_TIMEOUT>> connect_timeout 接続タイムアウト
tcp_check.tmplの設定例
TCP_CHECK {
    <<CONNECT_IP>>
    <<CONNECT_PORT>>
    <<BINDTO>>
    <<BIND_PORT>>
    <<CONNECT_TIMEOUT>>
}

3.4.3.5. ヘルスチェックテンプレート(smtp_check.tmpl)のタグ

表:ヘルスチェックテンプレート(smtp_check.tmpl)のタグ
タグ名 置き換えられる値
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<RETRY>> retry リトライ回数
<<DELAY_BEFORE_RETRY>> delay_before_retry リトライ間隔
<<HELO_NAME>> helo_name HELOリクエスト
smtp_check.tmplの設定例
SMTP_CHECK {
    host {
        <<CONNECT_IP>>
        <<CONNECT_PORT>>
        <<BINDTO>>
        <<BIND_PORT>>
        <<CONNECT_TIMEOUT>>
    }
    <<RETRY>>
    <<DELAY_BEFORE_RETRY>>
    <<HELO_NAME>>
}

3.4.3.6. ヘルスチェックテンプレート(misc_check.tmpl)のタグ

表:ヘルスチェックテンプレート(misc_check.tmpl)のタグ
タグ名 置き換えられる値
<<MISC_PATH>> misc_path スクリプトパス
<<MISC_TIMEOUT>> misc_timeout タイムアウト
misc_check.tmplの設定例
MISC_CHECK {
    <<MISC_PATH>>
    <<MISC_TIMEOUT>>
}

3.4.3.7. ヘルスチェックテンプレート(udp_check.tmpl)のタグ

表:ヘルスチェックテンプレート(udp_check.tmpl)のタグ
タグ名 置き換えられる値
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<CONNECT_TIMEOUT>> connect_timeout 接続タイムアウト
<<REQUIRE_REPLY>> reauire_reply リプライパケットのチェック有無
udp_check.tmplの設定例
UDP_CHECK {
    <<CONNECT_IP>>
    <<CONNECT_PORT>>
    <<BINDTO>>
    <<BIND_PORT>>
    <<CONNECT_TIMEOUT>>
    <<REQUIRE_REPLY>>
}

3.4.3.8. ヘルスチェックテンプレート(dns_check.tmpl)のタグ

表:ヘルスチェックテンプレート(dns_check.tmpl)のタグ
タグ名 置き換えられる値
<<CONNECT_IP>> connect_ip 接続先IPアドレス
<<CONNECT_PORT>> connect_port 接続先ポート番号
<<BINDTO>> bindto ダイジェスト
<<BIND_PORT>> bind_port 接続元ポート番号
<<CONNECT_TIMEOUT>> connect_timeout 接続タイムアウト
<<DNS_TYPE>> type 接続確認を行うDNSタイプ
<<DNS_NAME>> name 接続確認を行うDNSレコード名
dns_check.tmplの設定例
DNS_CHECK {
    <<CONNECT_IP>>
    <<CONNECT_PORT>>
    <<BINDTO>>
    <<BIND_PORT>>
    <<CONNECT_TIMEOUT>>
    <<DNS_TYPE>>
    <<DNS_NAME>>
}

3.5. ロック用ディレクトリの設定

ILUKAがロックファイルを作成するためのディレクトリを作成します。

visudoの実行例
# mkdir /var/iluka
# chown apache:apache /var/iluka
# chmod 750 /var/iluka

3.6. sudoの設定

ILUKAは、apacheユーザ権限でkeepalivedをリロードできるよう許可する必要があります。そのためにsudoの設定を追加します。
visudoコマンドを実行し、以下のように設定を追加してください。
visudoの実行例
# visudo
sudoの設定例
# Defaults requiretty

apache ALL=(ALL) NOPASSWD: /usr/local/postldapadmin/bin/reload_keepalived

3.7. ウェブサーバの設定

ILUKAのウェブインタフェースを使用するための設定を行います。

Apache設定ファイル /etc/httpd/conf.d/iluka.conf の設定例
Alias /iluka/ /usr/local/postldapadmin/htdocs/

<Directory "/usr/local/postldapadmin/htdocs">
    DirectoryIndex index.php
    require all granted
    AddDefaultCharset EUC-JP

    <IfModule mod_php5.c>
    PHP_value include_path ".:/usr/local/postldapadmin/"
    </IfModule>
    <IfModule !mod_php5.c>
        # for php-fpm
        SetEnv PHP_VALUE "include_path=.:/usr/local/postldapadmin/"
    </IfModule>
</Directory>

<Location /iluka/>
    SetEnv LOGNAME iluka
    SetEnv DOMAIN iluka

    RewriteEngine On
    RewriteRule admin/images/logo.png$ /iluka/admin/images/logo_iluka.png [L]
</Location>
一覧へ