Iconshock - http://www.iconshock.com |
トラブルは最短・最速で終わらせたい! @snicker_jp です。
もくじ
きっかけ
トラブルが起きて、 2TB 弱ほどの vmdk ファイルを転送する事になったので、その顛末です。
トラブルの経緯を簡潔に説明すると
容量拡張⇒残ディスクすくな⇒起動⇒あがんね・・・どうしよ・・・(´・ω・`)
デカイとこ転送だ!⇒12MB/s ⇒終わるの二日後かよ・・・(T^T)
↑担当者談
イメージ図:
※参考までに
12MB/s ⇒ 96Mbps
「JAWS DAYS」は役に立つ!
そこで、「JAWS DAYS 2013」のセッションで知った、「Obama for America」の リージョン間転送 にも使われた「Tsunami UDP Protocol」を検証がてら使ってみたら、すごいことになったのでご紹介します。
大事なこと
今回は「VMware ESXi」の「データストア」を使って起きたことですが、
大事なことなので前もって書いておきます。
データストアは総容量の最低20%は空けておくべし!(`・ω・́)ゝ
前提条件
- VMware ESXi 4.1 or 5.1
- Tsunami UDP Protocol
- Linux x86_64 (CentOS想定) ← tsunami-udpコンパイル用
作業の流れ
- Tsunami UDP Protocolのダウンロードとコンパイル
- ESXi へ バイナリを転送
- ESXi 5 の FireWall をいったんunload
- Tsunami UDP サーバーの起動
- Clientから受信
イメージ図:
Tsunami UDP Protocolのダウンロードとコンパイル
コンパイル用のLinux(x86_64)で
- Tsunami UDP Protocol 本家のリンクから、ソースのダウンロード
今回使ったソース:
tsunami-v1.1-cvsbuild42.tar.gz
suz-labさんの記事を参考にコンパイルです。
- suz-lab - blog: "Tsunami UDP"をインストールしてみた
http://blog.suz-lab.com/2011/06/tsunami-udp.html
- "aclocal/autoconf/automake" が必要なので、無ければ以下のコマンドでインストール
sudo yum install autoconf sudo yum install automake
(aclocalはautomakeの中に)
- ソースの解凍とmake
tar zxvf tsunami-v1.1-cvsbuild42.tar.gz cd tsunami-udp-v11-b42 make
- make中のメッセージ
[snicker_jp@devdev tsunami-udp-v11-b42]$ make sh ./recompile.sh Running aclocal... Running automake... Running autoconf... Configuring Tsunami version 9.2 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking for ranlib... ranlib checking for main in -lpthread... yes configure: creating ./config.status config.status: creating Makefile config.status: creating client/Makefile config.status: creating rtclient/Makefile config.status: creating common/Makefile config.status: creating include/Makefile config.status: creating server/Makefile config.status: creating rtserver/Makefile config.status: creating util/Makefile config.status: executing depfiles commands make[1]: ディレクトリ `/home/snicker_jp/tsunami-udp-v11-b42' に入ります Making clean in rtclient ~ 略 ~ make[2]: `all-am' に対して行うべき事はありません. make[2]: ディレクトリ `/home/snicker_jp/tsunami-udp-v11-b42' から出ます make[1]: ディレクトリ `/home/snicker_jp/tsunami-udp-v11-b42' から出ます You can do a 'sudo make install' to install binaries into /usr/bin [snicker_jp@devdev tsunami-udp-v11-b42]$
↑こんなメッセージなら成功のはずw
ESXi へ バイナリを転送
コンパイル用のLinux(x86_64)で
- tar で固める
tar zcvf tsunami-udp-v11-b42.tar.gz tsunami-udp-v11-b42
- 2台に転送
scp tsunami-udp-v11-b42.tar.gz [ESXiのIP]:.
ESXi で
- 解凍
tar zxvf tsunami-udp-v11-b42.tar.gz
- 確認
cd / ls -d tsunami-udp-v11-b42
存在確認出来ればとりあえずOK
ESXi 5 のFWをいったんunload
- ESXi 5 で
esxcli network firewall unload
これで、解放されます
(コラム)ちなみに、個別にFWにポートを開けるには
- ESXi 5 の F/W に穴を開ける
http://blog.cles.jp/item/4586
↑ここを参考に
/etc/vmware/firewall
にxmlを保存して「esxcli network firewall refresh」すれば出来るはずなんですが、なぜかうまくいかなかったので・・・。
いったん、「unload」しました。
Tsunami UDP サーバーの起動
- 送信元 ESXi で
cd /vmfs/volumes/[データストア名]/ cd [移行フォルダ] ※ Tsunamiのデーモン起動 /tsunami-udp-v11-b42/server/tsunamid *
Clientから受信
- 送信先 ESXi で
cd /vmfs/volumes/[データストア名]/ mkdir [保存フォルダ] cd [保存フォルダ]
- TsunamiのClient起動
/tsunami-udp-v11-b42/client/tsunami Tsunami Client for protocol rev 20061025 Revision: v1.1 devel cvsbuild 42 Compiled: Apr 24 2013 15:50:41 tsunami> connect [tsunamidを起動したサーバーIPなど] Connected. tsunami> get * Requesting all available files Server is sharing 14 files
↑うまくいけばこんな感じで、転送が始まります。 - 実際の転送状況
600Mbps越え!(」・ω・)」うー!(/・ω・)/にゃー!
※参考までに
600Mbps ⇒ 75MB/s
USB2.0規格最大速度
480Mbps ⇒ 60MB/s
USB2.0の規格最大速度より早いので、USB2.0の外付HDDに転送するより速いです!
忘れていたんで追加!
これって、どうやらServerの方は「Ctrl-C」やらしても切れないので・・・ps なりして、プロセスを直接切ります。
例:
kill -9 [tsunamid のプロセス番号]
これで、大丈夫だと思います!(^^;; ヒヤアセ
まとめ
- Tsunami UDP Protocol すげー SUGEEEEEE(゚Д゚)EEEEEEEEE!!
- ESXi 5 から FW有効になってるから気をつけよう!
- データストアの残容量に気を付ける
参考リンク
- suz-lab - blog: "Tsunami UDP"をインストールしてみた
http://blog.suz-lab.com/2011/06/tsunami-udp.html - suz-lab - blog: "Tsunami UDP"を使ってみた
http://blog.suz-lab.com/2011/06/tsunami-udp_02.html - 短期決戦プロジェクトの立ち上げ方:期間限定の巨大プロジェクト・米国大統領選の裏側をAWSの中の人に聞いた (2/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1304/01/news068.html - Amazon RDS Data Import Guide for Oracle : Articles & Tutorials : Amazon Web Services
http://aws.amazon.com/articles/4173109646282306 - CDP:Write Proxyパターン - AWS-CloudDesignPattern