Hadoopのためには複数ノードが必要になるので、今後のためにもネットワークインストール環境を構築しておく。
ホストはCentOS 5.5(192.168.1.71)
インストール対象はCentOS 5.5(インストールOSはなんでも良い)
PXEブートはNICとBIOSが対応している必要があるが、最近のマシンならほぼ大丈夫。仮想マシンも対応している。
PXEの動き
1.クライアントはDHCPサーバにアドレスを問い合わせる。
2.DHCPサーバから、IPと合わせてブートサーバの情報を返す。
3.クライアントは貰ったIPをセットし、tftpでブートサーバへブートイメージと設定ファイルを取りに行く。
4.無事イメージが取得できれば、それを次のブートプロセスに渡す。
5.イメージと設定ファイルを読み込んで、設定に従い、NFSやHTTPサーバからOSのデータを取得し、ネットワークブートや、インストールを行う。
というわけで、必要なものはtftpと、dhcpサーバ、そしてインストールイメージを配布するNFSサーバになる。
1.tftpサーバの構築
サーバと動作確認用のクライアントをインストール
[root@centos55 ~]# yum install tftp*
[root@centos55 ~]# rpm -qa |grep tftp
tftp-server-0.49-2.el5.centos tftp-0.49-2.el5.centos
起動する(xinetd経由で起動される)
[root@centos55 ~]# chkconfig --list |grep tftp
tftp: off
[root@centos55 ~]# chkconfig tftp on
[root@centos55 ~]# chkconfig --list |grep tftp
tftp: on
テスト
[root@centos55 ~]# cp /etc/hosts /tftpboot/
[root@centos55 ~]# cd /tmp/
[root@centos55 tmp]# ls -l hosts
ls: hosts: そのようなファイルやディレクトリはありません
[root@centos55 tmp]# tftp 192.168.1.71 -c get hosts
[root@centos55 tmp]# ls -l hosts
-rw-r--r-- 1 root root 240 7月 21 22:05 hosts設定はこれだけ。
2.DHCPサーバの構築
これもyumからインストール。
[root@centos55 tmp]# yum install dhcp
ここでちょっと問題。我が家の環境はNECのAtermルータでDHCPを提供しており、iPhoneやPSPなんかは全部そっちを使っている。
同じセグメント内でDHCPサーバがかぶると、いろいろ厄介なので、CentOS側のDHCPは特定MACのマシンのみにDHCPを提供するように構成する。
まだ起動しない
[root@centos55 tmp]# chkconfig --list |grep dhcp
dhcpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off*複数インターフェースがあるマシンでは、DHCPが待ち受けるifを指定すること。そうしないと余計なセグメントにDHCPが流れてしまう。
設定サンプルから設定した方が早い。
[root@centos55 tmp]# cp -p /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
[root@centos55 tmp]# vi /etc/dhcp.conf
ddns-update-style interim; ignore client-updates; # --- MACでホスト名を割り当てる(後述のhostセグメント) use-host-decl-names on; subnet 192.168.1.0 netmask 255.255.255.0 { # --- default gateway option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "sol-net.jp"; option domain-name-servers 192.168.1.254; option time-offset -18000; # Eastern Standard Time default-lease-time 21600; max-lease-time 43200; # we want the nameserver to appear at a fixed address host hdp01 { next-server 192.168.1.71; hardware ethernet 12:34:56:78:AB:CD; fixed-address 192.168.1.81; filename "pxelinux.0"; } host hdp02 { next-server 192.168.1.71; hardware ethernet 12:34:56:78:AB:CD; fixed-address 192.168.1.82; filename "pxelinux.0"; } host hdp03 { next-server 192.168.1.71; hardware ethernet 12:34:56:78:AB:CD; fixed-address 192.168.1.83; filename "pxelinux.0"; } host hdp04 { next-server 192.168.1.71; hardware ethernet 12:34:56:78:AB:CD; fixed-address 192.168.1.84; filename "pxelinux.0"; } }この時点で、MACは調べてないので、適当な値を入れている。また、特定MAC以外へはアドレスを割り当てないように、rangeを設定していない。
設定ファイルチェック
[root@centos55 etc]# /etc/init.d/dhcpd configtest
Syntax: OK
起動する。
[root@centos55 etc]# /etc/init.d/dhcpd start
dhcpd を起動中: [ OK ]
この状態でインストール対象のマシンをネットワークブート仕様とすると、DHCPに問い合わせが来る。そこにMACが記述されるので、それを設定ファイルへ入れ込む。
MACを書いたら、DHCPデーモンを再起動
[root@centos55 ~]# /etc/init.d/dhcpd restart
dhcpd を停止中: [ OK ] dhcpd を起動中: [ OK ]これで、クライアントは起動時にMACごとにIPが振られ、pxeブートの最初のプロセスが起動する。
3.PXEブートファイルの準備
ブートローダーを引っ張ってきます。pxelinux.0はOSに依存しないブートローダで、Linux以外もブートできます。
[root@centos55 ~]# cp -p /usr/lib/syslinux/pxelinux.0 /tftpboot/
pxeの設定ファイルをおくディレクトリを作成する。
[root@centos55 ~]# mkdir /tftpboot/pxelinux.cfg
設定ファイルを作成する(ここでもMAC制限等がかけられるけど、ここではやらない)
[root@centos55 ~]# vi /tftpboot/pxelinux.cfg/default
default local prompt 1 timeout 1200 label centos5 kernel centos5/vmlinuz append initrd=centos5/initrd.img label local localboot 0これで起動時の問い合わせプロンプトで、60秒待つか、何も入力しないか、localと入力すると、ローカルドライブから起動してくる。centos5 と入力すると、centosのインストーラーが起動する。
vmlinuzとinitrdはFTPから持ってくる。
[root@centos55 ~]# mkdir /tftpboot/centos5
[root@centos55 ~]# cd /tftpboot/centos5/
[root@centos55 centos5]# wget ftp://ftp.iij.ad.jp/pub/linux/centos/5.5/os/i386/images/pxeboot/ini
trd.img
[root@centos55 centos5]# wget ftp://ftp.iij.ad.jp/pub/linux/centos/5.5/os/i386/images/pxeboot/vmlinuz
[root@centos55 centos5]# ll
合計 9176 -rw-r--r-- 1 root root 7500081 7月 21 22:52 initrd.img -rw-r--r-- 1 root root 1875796 7月 21 22:53 vmlinuz
これで、9割の準備が整ったので、マシンを起動してみる。こんな感じでboot:プロンプトが出ればOK。ここでcentos5と入力すると起動する。
これで、9割の準備が整ったので、マシンを起動してみる。
こんな感じでboot:プロンプトが出ればOK。ここでcentos5と入力すると起動する。
4.インストール媒体の提供
最後にインストール媒体をNFS上に準備してやる。これはインストールDVDをループバックマウントして、そのままshareするか、丸ごとコピーしたディレクトリをshareすればよい。
*このNFSサーバだけディスク容量の関係で、Solaris上に構築する。
root@sol10-u24 23:12:46> zfs create spool/pxeimages
root@sol10-u24 23:12:46> zfs set sharenfs='ro,root' spool/pxeimages
root@sol10-u24 23:14:16> lofiadm -a /spool/cifs01/OSimage/CentOS5.5/CentOS-5.5-i386-bin-DVD.iso
/dev/lofi/1
root@sol10-u24 23:14:38> mount -F hsfs -r /dev/lofi/1 /mnt/media01
root@sol10-u24 23:15:09> cp -Rp /mnt/media01/* /spool/pxeimages/centos5.5/
root@sol10-u24 23:16:57> umount /mnt/media01
root@sol10-u24 23:17:46> lofiadm -d /dev/lofi/1
これでOK。後は、インストールの途中で聞かれる、メディアパスに、このNFSサーバを指定すればよい。
これでhadoopの準備OK。まずは4台にインストールしておく(kickstartファイルを用意しておくことで、インストールまで完全自動化できる)
Hadoop 第2版
0 件のコメント:
コメントを投稿