2010年9月17日金曜日

CentOS 5.5でiSCSI利用時のshutdown処理

CentOS 5.5でiSCSIイニシエーターとしてiSCSIを利用すると、
shutdown時に、
Synchronizing SCSI cache for disk
のメッセージが出力されて、その後に電源断にいたらない。

ネットワークが切れているのに、iSCSIデバイスに対するsyncを実行しようとするための模様。
対策については、こちらが詳しいようだ。
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html#cacheerronstdn

2010年9月10日金曜日

CentOS 5.5でGFS2を利用する

前回の記事で2台構成でクラスタサービスを起動しました。

今回は、iSCSIで提供されているディスクをGFSとして利用するための設定を行います。
iSCSIディスクの設定方法は、このあたりの記事を参照してください。

OSS EXPO - CentOS5.5でiscsi targetの設定
OSS EXPO - CentOS5.5でiscsi initiatorの設定

iSCSIディスクをgfs2形式にフォーマットします。

# /sbin/mkfs -t gfs2 -p lock_dlm -t samba:gfs01 -j 8 /dev/sda1
This will destroy any data on /dev/sda1.

Are you sure you want to proceed? [y/n] y
Device:                    /dev/sda1
Blocksize:                 4096
Device Size                29.53 GB (7741436 blocks)
Filesystem Size:           29.53 GB (7741436 blocks)
Journals:                  8
Resource Groups:           119
Locking Protocol:          "lock_dlm"
Lock Table:                "samba:gfs01"
UUID:                      6AE99ED2-B077-F77B-1CB3-6D9E55DD7E74


-pオプションはロック形式として、「lock_dlm」を指定します。
-tオプションはロックテーブル名として、「クラスタ名:ファイルシステム名」を指定します。クラスタ名は、cluster.confに指定したクラスタ名と一致しなければなりません。ファイルシステム名が16文字以内で他のファイルシステムと重複しない名前を指定します。
-jオプションはジャーナル数を指定し、クラスタを構成するサーバー数以上の数値を指定する必要があります。

ファイルシステムが作成されたら、mountします。
# mount /dev/sda1 /opt/gfs2

2台目のノードでも同様にマウントしますが、作成したパーティション(/dev/sda1)を認識していない場合は、いったん、iscsiサービスを再起動します。
# /sbin/service iscsi restart
# mount /dev/sda1 /opt/gfs2

両ノードの/etc/fstabに以下の設定でGFS2のデバイスを追記します。
/dev/sda1        /opt/gfs2        gfs2    _netdev    0 0

今回の環境では、ディスクとしてiscsiを利用しているため、ネットワーク起動後にマウントする必要があるため、「_netdev」を指定しています。

両ノードのgfs2サービスを起動します。
# /sbin/service gfs2 start
GFS2 ファイルシステムをマウント中:                         [  OK  ]

自動起動の設定として、cman、gfs2を有効にしておきます。
# /sbin/chkconfig cman on
# /sbin/chkconfig gfs2 on

以上でGFS2を利用する準備が完了です。

CentOS 5.5で2台構成のクラスタ(RHCS)

CTDBによるSambaクラスタ構成を試すために、まずは、CentOS5.5のRHCS + GFSによるクラスタ構成を構築します。
なお、運用環境でRHELを利用してRHCSのサポートを受けるためにはいろいろ前提条件があるようです。
Redhat - Red Hat Cluster Suiteで始めるフェイルオーバクラスタ

RHCSを利用する場合は3台以上のメンバーサーバーで構成することが推奨されていますが、今回はテスト環境なので2台で構成します。
 
サーバー1: samba351.lan.osstech.co.jp
サーバー2: samba352.lan.osstech.co.jp


今回は、system-config-clusterコマンドで設定してみました。
# system-config-cluster &

初めてコマンドを起動すると、次の画面が表示されますので、「Create New Configuration」をクリックします。

続いて、クラスタ名を入力します。クラスタ名は、ネットワーク内に同一の名前が存在しないようにします。今回は、「samba」にしました。
クラスタの設定を行います。
「Cluster Nodes」の「Add a Cluster Node」をクリックします。

1台目のノードをクラスタに追加します。

「Cluster Node Name」には、クラスタ監視のプライベートネットワークに割り当てたFQDNを指定します。
また、DNSが停止した場合にクラスタが停止することを避けるため、関係するFQDNは/etc/hostsに全て記載しておきます。
「Quorum Votes」は、障害時にどのノードが正常動作しているのか決定するための値に利用されます。

詳しくはこちらのサイトが参考になります。
eyes blog - RedHat ClusterとQuorum

1台目を登録したら、続けて2台目も登録します。

登録が完了すると、「Cluster node」に2台が登録されている状態になります。

次に「Fence Devices」を登録します。Fence Devicesとは、簡単にいうと、障害が起きたノードを強制的に電源OFFするための装置のことです。
 
なぜ「Fence Devices」が必要かは、こちらのブログが詳しいです。
eyes blog - Fencingについて

Fence Devicesを登録するために、「Fence Devices」を選択してから、「Add a Fence Device」をクリックします。

今回はテスト環境なので、デバイス一覧から「Manual Fencing」を選択し、適当な名前を設定します。

 作成したFence Deviceを各ノードに設定します。
「Cluster Node」のノード名を選択すると、右下に「Manage Fencing For This Node」のボタンが表示されますので、クリックします。

「Add a New Fence Level」ボタンをクリックします。


「Fence Level 1」が追加されますので、「Fence Level 1」を選択し、「Add a New Fence to this level」をクリックします。

Fence Deviceとして、先ほど作成したManual Fenceのデバイスが選択されていることを確認し、「OK」をクリックします。

Fence Deviceが登録されたことを確認し、2台目のノードも同じ作業を行います。


ここまでで、クラスタ構成に必要な最低限の設定は完了したので、メニューから設定を保存しておきます。設定内容は、/etc/cluster/cluster.confに保存されます。

作成したcluster.confは、2台目のノードにscpしておきます。

あとはクラスタを起動するだけですが、2台構成のクラスタの場合、1台目と2台目のcmanサービスをある一定期間内に起動する必要があります。

こちらのブログの説明が詳しいです。
eyes blog - Clusterを起動させましょう

なにはともあれ、1台目と2台目で次のコマンドを実行して、cmanサービスを起動します。

# /sbin/service cman start
 Starting cluster:
   Loading modules... done
   Mounting configfs... done
   Starting ccsd... done
   Starting cman... done
   Starting daemons... done
   Starting fencing... done
                                                           [  OK  ]

2台とも無事起動できたら、cman_toolsでクラスタの状態を確認しておきます。

# cman_tool status
Version: 6.2.0
Config Version: 2
Cluster Name: samba
Cluster Id: 3345
Cluster Member: Yes
Cluster Generation: 24
Membership state: Cluster-Member
Nodes: 2
Expected votes: 1
Total votes: 2
Quorum: 1
Active subsystems: 7
Flags: 2node Dirty
Ports Bound: 0
Node name: samba351.lan.osstech.co.jp
Node ID: 1
Multicast addresses: 239.192.13.30
Node addresses: 10.0.102.46

config-system-clusterの「Cluster Management」のタブに切り替えるとクラスタの動作状況を確認することも可能です。


CentOS 5.5でiscsi initiatorの設定

最初にiscsi-initiator-utilsパッケージをインストールします。 
 
# yum install iscsi-initiator-utils

iSCSIターゲットを実行しているサーバーを指定して、iSCSIディスクを探します。 
 
# iscsiadm -m discovery -t sendtargets -p 192.168.0.10
192.168.0.10:3260,1 iqn.2001-04.com.rhel6sv-iscsi-vol1


発見したiSCSIターゲット名を指定して、iSCSIターゲットに接続します。
 
# iscsiadm -m node -p 192.168.0.10 -T iqn.2001-04.com.rhel6sv-iscsi-vol1 -l
Logging in to [iface: default, target: iqn.2001-04.com.rhel6sv-iscsi-vol1, 
portal: 192.168.0.10,3260]
Login to [iface: default, target: iqn.2001-04.com.rhel6sv-iscsi-vol1, 
portal: 192.168.0.10,3260]: successful
  * -lオプションで指定したiSCSIターゲットにログイン
  * -uオプションで指定したiSCSIターゲットからログアウト
 
dmesgでカーネルのメッセージを確認すると、次のようにディスクとして
認識されていることが分かります。

 scsi1 : iSCSI Initiator over TCP/IP
  Vendor: IET       Model: Controller        Rev: 0001
  Type:   RAID                               ANSI SCSI revision: 05
scsi 1:0:0:0: Attached scsi generic sg0 type 12
  Vendor: IET       Model: VIRTUAL-DISK      Rev: 0001
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 61931520 512-byte hdwr sectors (31709 MB)
sda: Write Protect is off

今回の場合、/dev/sdaとして認識されていますので、あとは通常のディスクデバイスと
同じように利用します。