11/01/2012

AWSでGlusterを動かす


AWSでGlusterを動かしてみます。EBSだと高くつくので、Instance Storeで。まずは、Amazon Linux(ami-5a6cd35b)にInstance Store Volumesを2つくっつけて起動します。

●なにはともあれ、yumアップデート。
[[email protected] ~]$ sudo yum update

●Glusterのソースをダウンロード。

[[email protected] ~]$ wget
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/glusterfs-3.3.1.tar.gz
--2012-10-29 03:05:13--
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/glusterfs-3.3.1.tar.gz
Resolving download.gluster.org... 50.57.69.89
Connecting to download.gluster.org|50.57.69.89|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2636698 (2.5M) [application/x-gzip]
Saving to: “glusterfs-3.3.1.tar.gz”

100%[======================================>] 2,636,698   1.13M/s   in 2.2s

2012-10-29 03:05:16 (1.13 MB/s) - “glusterfs-3.3.1.tar.gz” saved
[2636698/2636698]

●Glusterのコンパイルに必要なパッケージをインストール。
[[email protected] ~]$ sudo yum install make gcc flex bison
openssl-static readline-static

●Glusterをコンパイルしてインストール
[[email protected] ~]$ tar zxvf glusterfs-3.3.1.tar.gz
[[email protected] ~]$ cd glusterfs-3.3.1
[[email protected] glusterfs-3.3.1]$ ./configure
(略)
GlusterFS configure summary
===========================
FUSE client        : yes
Infiniband verbs   : no
epoll IO multiplex : yes
argp-standalone    : no
fusermount         : no
readline           : yes
georeplication     : yes
Linux-AIO          : no

[[email protected] glusterfs-3.3.1]$ make
(略)
[[email protected] glusterfs-3.3.1]$ sudo make install
(略)

●起動スクリプトをコピーして、使えるか確認。
[[email protected] glusterfs-3.3.1]$ sudo cp
extras/init.d/glusterd-Redhat /etc/init.d/glusterd
[[email protected] glusterfs-3.3.1]$ sudo chmod a+x
/etc/init.d/glusterd
[[email protected] glusterfs-3.3.1]$ sudo /sbin/service glusterd
start
Starting glusterd:                                         [  OK  ]
[[email protected] glusterfs-3.3.1]$ sudo /sbin/service glusterd
restart
Stopping glusterd:                                         [  OK  ]
Starting glusterd:                                         [  OK  ]
[[email protected] glusterfs-3.3.1]$ sudo /sbin/service glusterd stop
Stopping glusterd:                                         [  OK  ]

●ここまでで一旦、AMIを作る
※scpなどでX.509証明書と秘密鍵を転送する必要あり。

[[email protected] ~]$ sudo su -
[[email protected] ~]# ec2-bundle-vol -d /media/ephemeral0 --privatekey
~ec2-user/PrivateKey.pem --cert ~ec2-user/X509Certificate.pem --user
XXXX-XXXX-XXXX --fstab /etc/fstab
Please specify a value for arch [x86_64]:
(略)
[[email protected] ~]# ec2-upload-bundle -r ap-northeast-1 --bucket
My_Bucket/Gluster_Node_Base --manifest /media/ephemeral0/image.manifest.xml
--access-key XXXXXXXXXXXXXXXXXXXX --secret-key
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(略)
[[email protected] ~]# ec2-register --region ap-northeast-1
--aws-access-key XXXXXXXXXXXXXXXXXXXX --aws-secret-key
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --name gluster_node_base
My_Bucket/Gluster_Node_Base/image.manifest.xml
IMAGE   ami-xxxxxxxx


●作成したAMIからインスタンスを作って3台起動。
1台目(ap-northeast-1a)
ec2-46-51-226-247.ap-northeast-1.compute.amazonaws.com

2台目(ap-northeast-1b)
ec2-176-32-64-146.ap-northeast-1.compute.amazonaws.com

3台目(ap-northeast-1c)
ec2-54-248-159-67.ap-northeast-1.compute.amazonaws.com

1台目と2台目のglusterのuuidを変えておく。
[[email protected] ~]$ cd /var/lib/glusterd/
[[email protected] glusterd]$ sudo cp -p glusterd.info
glusterd.info.back
[[email protected] glusterd]$ sudo vi glusterd.info
UUID=48a21eef-7789-45db-8f59-c5214297fbd2
[[email protected] ~]$ sudo /sbin/service glusterd restart
Stopping glusterd:                                         [  OK  ]
Starting glusterd:                                         [  OK  ]


この時点での各インスタンスのGlusterのUuidは、
1: UUID=48a21eef-7789-45db-8f59-c5214297fbd1
2: UUID=48a21eef-7789-45db-8f59-c5214297fbd2
3: UUID=48a21eef-7789-45db-8f59-c5214297fbd3

にしておいた。

●Glusterにノードを追加(Trusted Storage Poolを作る)
[[email protected] ~]$ sudo /usr/local/sbin/gluster
gluster> peer probe ec2-176-32-64-146.ap-northeast-1.compute.amazonaws.com
Probe successful
State: Peer in Cluster (Connected)
gluster> peer probe ec2-54-248-159-67.ap-northeast-1.compute.amazonaws.com
Probe successful
gluster> peer status
Number of Peers: 2

Hostname: ec2-176-32-64-146.ap-northeast-1.compute.amazonaws.com
Uuid: 48a21eef-7789-45db-8f59-c5214297fbd2
State: Peer in Cluster (Connected)

Hostname: ec2-54-248-159-67.ap-northeast-1.compute.amazonaws.com
Uuid: 48a21eef-7789-45db-8f59-c5214297fbd3
State: Peer in Cluster (Connected)


1台目のノードは、他のノードから追加してあげる。
[[email protected] ~]$ sudo /usr/local/sbin/gluster
gluster> peer probe ec2-46-51-226-247.ap-northeast-1.compute.amazonaws.com
Probe successful


●3つのレプリカを持つクラスタボリュームを作成して起動する。
gluster> volume create test-volume replica 3 transport tcp
ec2-46-51-226-247.ap-northeast-1.compute.amazonaws.com:/media/ephemeral0
ec2-176-32-64-146.ap-northeast-1.compute.amazonaws.com:/media/ephemeral0
ec2-54-248-159-67.ap-northeast-1.compute.amazonaws.com:/media/ephemeral0
Creation of volume test-volume has been successful. Please start the volume
to access data.
gluster> volume start test-volume
Starting volume test-volume has been successful


●マウントしてみる
[[email protected] ~]$ sudo mkdir /media/gluster0
[[email protected] ~]$ sudo mount -t glusterfs
ec2-46-51-226-247.ap-northeast-1.compute.amazonaws.com:/test-volume
/media/gluster0
[[email protected] ~]$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1            10321208   1349420   8447500  14% /
tmpfs                   848480         0    848480   0% /dev/shm
/dev/xvdb            153899044    192084 145889336   1% /media/ephemeral0
ec2-46-51-226-247.ap-northeast-1.compute.amazonaws.com:/test-volume
                    153899008    192128 145889280   1% /media/gluster0


●テスト
[[email protected] ~]$ sudo cp -rp ./* /media/gluster0/
[[email protected] ~]$ sudo du -a /media/ephemeral0 | wc -l
2346

これで、東京にあるAWSの3つのリージョンをまたぐ分散ファイルシステムの完成。容量は140GB。

ひとまず。

10/10/2012

隠れた能力を見つけよう!

最近ハマったというか、面白かったと思うのはこれですね↓


去年やったハーマンモデルを思い出しました。ハーマンモデルは右脳 or 左脳と、大脳新皮質 or 辺縁皮質をマトリックスにして4象限で「利き脳」をわかるように分類するものです。一方、この本に載っている方法は、偉い人にインタビューをしつつアンケートを採った結果に基づいている、とのこと。これがですね、結構当たるんですよ。

本を買うと「ストレングスファインダー」というWebの強み発見ツールが使えるパスコードがくっついていて、それを使ってポチポチやるだけで180個の34個の資質の中から5つの強みを出してくれます。チームでこれをやって、お互いの特性を一目で認識できるようにしておいて合宿とかすると面白いかもしれませんね。

ちなみに僕は、活発性、学習欲、目標志向、着想、親密性、でした。一緒の順番の人いるのかな?33,390,720通りあるので、地球上に180人ぐらい一緒な人がいますね。

9/17/2012

NASにあるiPhotoライブラリが開けなくなった

嫁さんのMacのローカルドライブがカツカツだったので、特に大きな写真たちをTime Capsuleへ移動して、とりあえずの容量を稼ぐことにしました。その容量、なんと90GB以上。いやぁ、スマホってやっぱデータ生産装置なんですよね。 恒久的には、写真はAdobe Revelなんぞに移行しますが、この話はまた機会があれば。

で、しばらくTime CapsuleにあるiPhotoライブラリを使ってましたが、さきほど我が家のチビがMacの電源長押しする事故があって、iPhotoを開けなくなりました。iPhotoを開くとこんなメッセージが出ます。


警告
iPhoto ライブラリがロックされているか、ロックされたディスク上にあるか、変更する権限がユーザにありません。

なにやら楽しそうなメッセージですね。電源プッチンされたために、ロックファイルか何かが残っちゃったんでしょう。まずはiPhotoを閉じて、と。

$ cd /Volumes/Time\ Capsule/iPhoto\ Library/
$ ls -la | grep -E '(l|L)ock'
-rwxrwxrwx  1 user  staff          1 Sep 17 15:10 iPhotoLock.data


あったね。誰が開いてるのか、一応チェック。

$ lsof -f -- ./iPhotoLock.data
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
iPhoto  515 user   10u   REG   46,3        1 264951 ./iPhotoLock.data

ん。間違いない。ではさようなら。

$ mv ./iPhotoLock.data ./iPhotoLock.data.back

無事、起動できましたー。これを書き終わっても、まだサムネールキャッシュを再構築してますね。


7/21/2012

port upgrade に失敗する

とある機会があって、久々にmac portsを触ってみたら、なんかエラーがでるようになっていた。
$ sudo port upgrade installed
---> Fetching ncurses
---> Attempting to fetch ncurses-5.9.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/ncurses
---> Attempting to fetch ncurses-5.9.tar.gz from http://ykf.ca.distfiles.macports.org/MacPorts/mpdistfiles/ncurses
---> Verifying checksum(s) for ncurses
---> Extracting ncurses
---> Applying patches to ncurses
---> Configuring ncurses
Error: Target org.macports.configure returned: configure failure: shell command failed (see log for details)
Log for ncurses is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_ncurses/main.log
Error: Unable to upgrade port: 1
To report a bug, see <http://guide.macports.org/#project.tickets>
で、早速ログ(上のなかのmain.logね)を見てみると、
:info:configure checking for C compiler default output... configure: error: C compiler cannot create executables
なんでそんなことに・・・。
google先生に訊いてみると、ちゃんとXcodeがインストールされてるか確認せよ、とのこと。

https://trac.macports.org/wiki/FAQ#missingxcode

I get the error "C compiler cannot create executables" or "can't read "build.cmd": Failed to locate 'make' in path" when I try to install a port. Why?
You need to install Xcode. Ensure you include both System Tools and Unix Development. As of Xcode 4.3, you also need to install the separate Command Line Tools package.


なんかそういわれると自信なくなってきた。早速Xcodeを起動してみると、Version 3.2.4が入っていることが確認できた。古いなぁ・・・。とても昔にAppleのDeveloperサイトからダウンロードして入れた記憶があるんだけど、果たしてSystem ToolsやUnix Developmentを入れたかと言われると、とてつもなく自信がない。
よっさ、この際バージョンアップするべ。
ということで、App StoreへGo!

ところで、Command Line Toolsとやらはどこにあるのだろう?と探していたら、なんとPreferences > Downloads からインストールできるようになっていることを発見!あら簡単!
しかし、しばらく見ない間に、Xcodeのインタフェースが変わりましたね。なんかもう、何がどこにあるのやらよくわからんような状態。とかいってたら、Time Machineのバックアップが始まってしまった。ということで続きはまた後日。