第8回 なぜクラスタリングにSELinuxを使わないのか!


面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2008/4/16


 Heartbeatで実現するクラスタリング

 Linuxでオープンソースソフトウェアを用いて簡単にクラスタリングを実現するソフトとしては、「Heartbeat」があります。Heartbeatのインストール方法については@ITの記事「Heartbeatでかんたんクラスタリング」の第2回の手順に従い設定を行いましたので、詳しい導入方法に関しては、そちらを参照してください。

 今回の環境では、CentOSのextraパッケージからCentOS 5.1用のパッケージ

heartbeat-2.1.3-3.el5.centos.i386.rpm
heartbeat-devel-2.1.3-3.el5.centos.i386.rpm
heartbeat-gui-2.1.3-3.el5.centos.i386.rpm
heartbeat-pils-2.1.3-3.el5.centos.i386.rpm
heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm

をインストールしました。また、/etc/ha.d/ha.cfファイルは上記の記事と同じ設定にしています。

 /var/lib/heartbeat/crm/cib.xmlファイルはリスト2のものを使用しました。

<cib generated="true" admin_epoch="0" epoch="1" num_updates="1" have_quorum="true" ignore_dtd="false" num_peers="2" ccm_transition="2" cib_feature_revision="2.0" cib-last-written="Fri Mar 28 00:58:19 2008">
   <configuration>
     <crm_config>
       <cluster_property_set id="cib-bootstrap-options">
         <attributes>
           <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="2.1.3-node: 552305612591183b1628baa5bc6e903e0f1e26a3"/>
         </attributes>
       </cluster_property_set>
     </crm_config>
     <nodes>
       <node id="1d19af62-ee33-490a-91e3-5353cdd0d5c3" uname="secondary" type="normal"/>
       <node id="2d343f83-10fa-4ae9-8b6a-90907164cc37" uname="primary" type="normal"/>
     </nodes>
     <resources>
       <group id="group_apache">
         <primitive id="ipaddr" class="ocf" type="IPaddr" provider="heartbeat">
           <instance_attributes id="ia_ipaddr">
             <attributes>
               <nvpair id="ia_ipaddr_ip" name="ip" value="192.168.135.100"/>
               <nvpair id="ia_ipaddr_nic" name="nic" value="eth0"/>
               <nvpair id="ia_ipaddr_netmask" name="netmask" value="24"/>
             </attributes>
           </instance_attributes>
         </primitive>
       <primitive class="ocf" provider="heartbeat" type="Filesystem" id="fs0">
         <meta_attributes id="ma-fs0">
           <attributes/>
         </meta_attributes>
           <instance_attributes id="ia-fs0">
             <attributes>
               <nvpair id="ia-fs0-1" name="fstype" value="ext3"/>
               <nvpair id="ia-fs0-2" name="directory" value="/var/www/html/testdir"/>
               <nvpair id="ia-fs0-3" name="device" value="/dev/sdb1"/>
             </attributes>
           </instance_attributes>
          </primitive>
          <primitive id="apache" class="lsb" type="httpd">
            <instance_attributes id="ia_apache">
             <attributes>
               <nvpair id="ia_apache_configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
             </attributes>
           </instance_attributes>
         </primitive>
       </group>
     </resources>
     <constraints/>
   </configuration>
</cib>
リスト2 /var/lib/heartbeat/crm/cib.xmlの内容

 リソースは、システムでHeartbeatにより提供される順に、

  • バーチャルIP:192.168.135.100
  • 共有ディスク:/dev/sdb1(/var/www/html/testdirにマウント)
  • Apache:CentOS 5.1標準を使用

となっています。Apacheの設定は、上記記事に従った内容にしています。これらの設定ファイルは、プライマリ/セカンダリの両方で行います。

 SELinuxの設定はほぼデフォルトで

 SELinuxの設定は、CentOSのデフォルトのものを、特にカスタマイズせずに使用しています。デフォルトのポリシーのままですと、Heartbeat関連のプロセスは、

# ps axZ | grep heartbeat

の結果を見て分かるとおり、initrc_tドメインで動作しています(リスト3)。

[root@primary ~]# ps axZ | grep heartbeat
root:system_r:initrc_t    2621 ?    SLs 0:00 heartbeat: master control process
root:system_r:initrc_t    2624 ?    SL 0:00 heartbeat: FIFO reader
root:system_r:initrc_t    2625 ?    SL 0:00 heartbeat: write: bcast eth1
root:system_r:initrc_t    2626 ?    SL 0:00 heartbeat: read: bcast eth1
root:system_r:initrc_t    2629 ?    S 0:00 /usr/lib/heartbeat/ccm
root:system_r:initrc_t    2630 ?    S 0:00 /usr/lib/heartbeat/cib
root:system_r:initrc_t    2631 ?    S 0:00 /usr/lib/heartbeat/lrmd -r
root:system_r:initrc_t    2632 ?    SL 0:00 /usr/lib/heartbeat/stonithd
root:system_r:initrc_t    2633 ?    S 0:00 /usr/lib/heartbeat/attrd
root:system_r:initrc_t    2634 ?    S 0:00 /usr/lib/heartbeat/crmd
root:system_r:initrc_t    2635 ?    S 0:00 /usr/lib/heartbeat/mgmtd -v
root:system_r:initrc_t    2636 ?    S 0:00 /usr/lib/heartbeat/pingd -m 10 -d 5s -a default_ping_set
リスト3 SELinux上でのHeartbeat関連プロセスの動作

 また、/var/www/html/testdir以下のタイプはリスト4のように、httpd_sys_content_tになっています。

[root@secondary html]# ls -lZ /var/www/html
-rw-r--r-- root root root:object_r:httpd_sys_content_t index.html
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t testdir

[root@secondary html]# ls -lZ /var/www/html/testdir
-rw-r--r-- root root system_u:object_r:httpd_sys_content_t index.html
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t LIDS-JP
drwx------ root root system_u:object_r:httpd_sys_content_t lost+found
リスト4 testdirのタイプはhttpd_sys_content_tとなっている

2/3

Index
なぜクラスタリングにSELinuxを使わないのか!
  Page1
クラスタリングとSELinux、相性はバッチリ……?
クラスタリング・Powered by SELinuxの検証環境
VMWare Serverを用いた共有ディスクの実現
Page2
Heartbeatで実現するクラスタリング
SELinuxの設定はほぼデフォルトで
  Page3
クラスタリングの動作を確認する
静的コンテンツでは問題なし!


スイッチ・オン! SELinux 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間