Secondary Name Node はPrimaryのバックアップではなく、ジャーナル書き込み等を支援するノードのなるので注意。
そこで、Name ServerをRedHat標準のクラスタソフトであるRedHat Cluster Suiteと、Global File Systemを用いて可用性を保持させてみる。
GFSを使うメリットは全てのノードから等価にファイルシステムへアクセスできるため、RHCSで仮想IPの制御さえしてやれば、どのノードでもPrimary Name Nodeを起動できるようになる事。これはNFSでも実現できるが、細かなブロックアクセスが多い、Name NodeではGFSの方が性能を担保しやすい(と思う
■今回の環境は以下
・RHEL5.5 クラスタ管理 192.168.1.101
・RHEL5.5 Primary Name Node 192.168.1.102
・RHEL5.5 Backup Name Node 192.168.1.103
・RHEL5.5 Secondary Name Node 192.168.1.104
・Solaris10 共有ストレージ(iSCSI)、192.168.1.10
・NameNodeの仮想アドレス 192.168.1.105
・NameNodeの仮想アドレス 192.168.1.106
・NameNodeの仮想アドレス 192.168.1.107
*このクラスタ構成はCentOSでも使える。が、RHCSは他のクラスタソフトに比べ、様々な障害に対して対応できるように設計されているため、構造がやや複雑なので、本番で使う場合は正規のサブスクリプションのあるRHEL APを推奨。
*ここでは動かすことに注力するので、細かな障害対応設定は省いているので注意。
*本当はネットワークはクラスタ通信用と分離した方が良いが、今回は全て同居させている。
■名前解決 RHCSは参加する全てのノードでFQDNによる名前解決が必須なので、以下をhostsに記載しておく。 # RHEL Cluster 192.168.1.101 rhcs-master.sol-net.jp rhcs-master 192.168.1.102 rhcs-node1.sol-net.jp rhcs-node1 192.168.1.103 rhcs-node2.sol-net.jp rhcs-node2 192.168.1.104 rhcs-node3.sol-net.jp rhcs-node3 192.168.1.105 rhcs-vip01.sol-net.jp rhcs-vip05 192.168.1.106 rhcs-vip01.sol-net.jp rhcs-vip06 192.168.1.107 rhcs-vip01.sol-net.jp rhcs-vip07 ■必要パッケージのインストール クラスタの設定にはCongaプロジェクトのLuci&Ricciを使用する。 各ノードで以下のパッケージをメディアよりインストール。yumで行う場合、RHELだとAPサブスクリプションが必要。 ・クラスタ管理 上記に加えて、以下もインストールする。 rpm -ihv Server/tix-8.4.0-11.fc6.i386.rpm rpm -ihv Server/tkinter-2.4.3-27.el5.i386.rpm rpm -ihv Server/python-imaging-1.1.5-5.el5.i386.rpm rpm -ihv Cluster/luci-0.12.2-6.el5.i386.rpm ・クラスタノード rpm -ihv Server/perl-XML-LibXML-Common-0.13-8.2.2.i386.rpm rpm -ihv Server/perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm rpm -ihv Server/perl-XML-SAX-0.14-8.noarch.rpm rpm -ihv Server/perl-XML-LibXML-1.58-6.i386.rpm rpm -ihv Server/perl-Net-Telnet-3.03-5.noarch.rpm rpm -ihv Server/openais-0.80.6-16.el5.i386.rpm rpm -ihv Server/pexpect-2.3-3.el5.noarch.rpm rpm -ihv Server/cman-2.0.115-34.el5.i386.rpm rpm -ihv Server/oddjob-libs-0.27-9.el5.i386.rpm rpm -ihv Server/oddjob-libs-0.27-9.el5.i386.rpm Server/oddjob-0.27-9.el5.i386.rpm rpm -ihv Cluster/modcluster-0.12.1-2.el5.i386.rpm rpm -ihv Cluster/ricci-0.12.2-12.el5.i386.rpm rpm -ihv Server/sg3_utils-libs-1.25-4.el5.i386.rpm rpm -ihv Server/sg3_utils-1.25-4.el5.i386.rpm rpm -ihv Cluster/rgmanager-2.0.52-6.el5.i386.rpm rpm -ihv ClusterStorage/lvm2-cluster-2.02.56-7.el5.i386.rpm rpm -ihv ClusterStorage/cmirror-1.1.39-8.el5.i386.rpm rpm -ihv ClusterStorage/kmod-cmirror-0.1.22-3.el5.i686.rpm <-自分のカーネルにあったもの rpm -ihv ClusterStorage/kmod-gfs-0.1.34-12.el5.i686.rpm <-自分のカーネルにあったもの rpm -ihv Server/gfs2-utils-0.1.62-20.el5.i386.rpm rpm -ihv ClusterStorage/gfs-utils-0.1.20-7.el5.i386.rpm 各サーバでricciを起動し、サーバを再起動する。 # chkconfig ricci on # reboot ■クラスタ管理サーバでLuciを起動、管理WEBへアクセス # chkconfig luci on # luci_admin init → パスワード設定 → https://rhcs-master.sol-net.jp:8084 ■クラスタへ参加 参加後の状態 [root@rhcs-node1 ~]# clustat Cluster Status for cluster01 @ Thu Aug 12 17:34:19 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ rhcs-node1.sol-net.jp 1 Online, Local rhcs-node2.sol-net.jp 2 Online rhcs-node3.sol-net.jp 3 Online またクラスタへ参加することで、LVMのDLM(分散ロックマネージャが有効になる) cat /etc/lvm/lvm.conf ---------抜粋---------- # Type of locking to use. Defaults to local file-based locking (1). # Turn locking off by setting to 0 (dangerous: risks metadata corruption # if LVM2 commands get run concurrently). # Type 2 uses the external shared library locking_library. # Type 3 uses built-in clustered locking. # Type 4 uses read-only locking which forbids any operations that might # change metadata. locking_type = 3 ----------------------- ■グローバルファイルシステムの作成 (1)ZFSからiscsiの切り出し root@sol10-u24 17:42:52>zfs create -V 100GB spool/iscsi/gfs01 root@sol10-u24 17:43:25>zfs set shareiscsi=on spool/iscsi/gfs01 (2)各ノードからiSCSI領域を認識 root@rhcs-node1> iscsiadm -m discovery -t sendtargets -p 192.168.1.10 root@rhcs-node2> iscsiadm -m discovery -t sendtargets -p 192.168.1.10 root@rhcs-node3> iscsiadm -m discovery -t sendtargets -p 192.168.1.10 root@rhcs-node1> iscsiadm -m node -l root@rhcs-node2> iscsiadm -m node -l root@rhcs-node3> iscsiadm -m node -l root@rhcs-node1> fdisk /dev/sda root@rhcs-node1> partprobe /dev/sda root@rhcs-node2> partprobe /dev/sda root@rhcs-node3> partprobe /dev/sda (3)GFSの作成と各ノードからマウント root@rhcs-node1> gfs_mkfs -j 3 -p lock_dlm -t cluster01:gfs01 /dev/sda1 root@rhcs-node1> mount -t gfs /dev/sda1 /mnt/gfs01 root@rhcs-node2> mount -t gfs /dev/sda1 /mnt/gfs01 root@rhcs-node3> mount -t gfs /dev/sda1 /mnt/gfs01 ■フェイルオーバードメイン、リソース、サービスを作成 (1)hadoopという名前のフェイルオーバーグループの作成し、以下のパラメータで設定する。 名前:hadoop フェイルオーバーメンバ:rhcs-node1, rhcs-node2 フェイルオーバーパラメータ:プライオリティ、ドメイン内のでのフェイルオーバー (2)リソースの作成 GFS、IPアドレスと作成 (3)サービスの作成 作成したリソースをサービスに追加 名前:hadoop 自動起動ON フェイルオーバードメイン:hadoop サービス再起動ポリシー:Relocate 以上の作業で以下の状態になる。 # clustat Cluster Status for cluster01 @ Thu Aug 12 18:26:30 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ rhcs-node1.sol-net.jp 1 Online, Local, rgmanager rhcs-node2.sol-net.jp 2 Online, rgmanager rhcs-node3.sol-net.jp 3 Online, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:hadoop rhcs-node1.sol-net.jp started RHCSで割り当てられているIPアドレスはifconfigでは分からず、ip arrd listでないと確認できない。 # ip addr list 1: lo:mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 54:52:00:6d:97:56 brd ff:ff:ff:ff:ff:ff inet 192.168.1.102/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.105/24 scope global secondary eth0 inet6 fe80::5652:ff:fe6d:9756/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 54:52:00:62:27:65 brd ff:ff:ff:ff:ff:ff inet 10.0.254.102/24 brd 10.0.254.255 scope global eth1 inet6 fe80::5652:ff:fe62:2765/64 scope link valid_lft forever preferred_lft forever 4: sit0: mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 まずはここまで。続く
Hadoop 価格:4,830円(税込、送料別) |