MongoDBのReplica Setを設定するMongoDB, how to set up “Replica Set”

パリのワインサロンに参加して、大量にワインを購入しました。松浦です。
ワインサロンとは1,000に迫る数の生産者が集結し、広い会場で試飲をしまくって、生産者からお手頃な値段で直接ワインを買うというイベントです。フラ ンス人は随分適当で事務処理とか窓口対応の酷さでは定評がありますが、ワインサロンでは所狭しと並んだカウンターに皆が効率よく並び、買い手売り手共に素 晴らしく統率が取れていました。フランス人(好きなことは)こんなにちゃんと出来るのかと驚いた次第です。

今日はMongoDBの話題です。昔はちょっとしたアプリのプロトタイピングではSQLiteを使っていました。が、今ではMongoDBを使うと、この手の事をやるときは殆ど何もしなくても十分に使える環境が手に入るので、重宝しています。

ここではMongoDBのReplica Setの設定方法を紹介します。VMWare上に作成した1台のlinuxにmongodを3つ立ち上げて、その中で動作確認をするというものです。

0. テスト環境と事前準備

下記の環境でReplica Setの動作確認を行いました。

後でMongoDB用の仮想マシンを複数台つかったテストの予定があったので、雛形(各種設定とMongoDBのインストールまで終了したもの)を 用意し、そこからコピーして作成しておきました。ここから発展して色々と試したい方は雛形の作成をお勧めします。またMongoDBは相当ディスク容量を 消費するので、VMWareデフォルトの20GBは避けた方が良いです(一瞬で埋まります)。環境が許す範囲で、台数と検討の上、多めに割り当てた方が無 難です。

VMWare fusionで仮想マシンを作成したら、次はネットワークの設定です。ローカルで完結しかつ何度も実験を繰り返すのであれば、下記の様に名前を付けて固定 IPアドレスを振っておくと何かと便利です。取りあえず、3台分の固定アドレスを振った様子を示します。この作業は全てMac上です。仮想マシンのMAC アドレスを調べた後、下記の様に2つのファイルの末尾に追記するだけです。

後は個別の仮想マシンにログインして、/etc/hostnameを上記に合わせて例えば’mngVM01′の様に設定しておけば完了です。一度全 ての仮想マシンを終了し、VMWare fusion事態を立ち上げ直せば、固定のアドレスが振られますし、もちろん’ssh mng01.vm’の様な事が出来るようになります。

1. Replica Setを作成する

ここではmng01.vmにログインしているとして、Replica Setの作成方法を説明します。また既にMongoDB事態のインストールは終わっているとします。インストール自体は10genのレポジトリを利用してapt-getでインストールするのが簡単です。

3つのmongodが立ち上がった状態です。だたし、このままではお互いの存在を知らずレプリケーション等は出来ません。replica setを動作させるためにはprimary候補のmongodに対してrs.initiateを行う必要があります。

上記の設定を施すことでreplica setが動作します。下記のようにrs.status()で確認できます。この状態でデータの書き込みや読み込みを行い、その後に mng01.vm:27018(プライマリ)に対応するプロセスをkillしてみて下さい。mng01.vm:27019に対応するmongodがセカン ダリからプライマリに役割を変え、データの読み書きを継続する様子が確認できると思います。もう一度mng01.vm:27018に対応するmongod を立ち上げると今度はセカンダリとなります。

2. おわりに

動作確認が終わったり、もう一度最初からやりたい場合は、mongodのプロセスをkillし、該当フォルダ(/data/mongo/)を削除し て上記のステップを繰り返すだけです。また何度も実験を繰り返す場合は各種設定やダミーデータを書き込むスクリプト等を作成しておくことをお勧めします。 MongoDBは主要言語のドライバーが用意されているので、プログラムを書くのは非常に簡単です。

ここでは、簡単のために1つの仮想マシン上でReplica Setのテストをしました。他にも仮想マシンを幾つか立ち上げて、同様のテストを行ったり、Shardingも併せて動かしてみるなど、環境を発展させてみて下さい。

Replica Setを利用する事で障害時にもデータの読み書きが継続可能になるという観点はもちろん大事です。もう一つReplica Setの効果は読み込み性能に現れます。プライマリ、セカンダリから読み込みを可能としておくことでデータ読み込みのクエリーを分散させることが出来ま す。大量のデータを扱うためにMongoDBのクラスタを生成する必要があるならば、読み込み性能はReplica Setの台数を増やして対応し、書き込み性能はShardingの台数を増やして対応すると押さえておくと良いと思います。なぜShardingが書き込 み性能に効果があるか知らなければ、調べておく価値はあります。

参考文献

・Replica Set
http://www.mongodb.org/display/DOCSJP/Replica+Sets
・Replica Set Tutorial
http://www.mongodb.org/display/DOCSJP/Replica+Set+Tutorial
・スケーリング MongoDB
http://www.oreilly.co.jp/books/9784873115221/
・Install MongoDB on Ubuntu
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
・VMware Fusion 4のネットワーク構成の変更
http://d.hatena.ne.jp/chocoring/20111218/p2

by MATSUURA Satoshi

SC12 参加レポートReport of SC12 Participation

11月中旬にアメリカのソルトレイクシティで行われた学会SC12 (Super Computing 2012)に参加しましたのでその報告です.

SCはハイパフォーマンスコンピューティング系の学会であり,高速演算や並列演算,分散処理などが学会の主なトピックです.また,SCでは研究のプ レゼン発表の会場と併設して,企業や大学がブースを設けて研究や製品を紹介する展示会が行われます.私はこの展示ブースのスタッフとしてSCに参加しまし た.

企業ブースではIntelやNVIDIA,Amazon,Microsoftなど名だたる企業が最新のCPUやGPUの紹介や,高機能クラウドサービスの説明,アプリケーション応用例のデモなどを行なっていました.
説明を受けた中で特に印象に残ったものは,Amazonが提供しているAWS(Amazon Web Services)中のサービスです.AWSでは「17024コアを有しベンチマークで240.09 TeraFLOPSを達成したクラスタ」という目を疑いたくなる数字を誇る環境を提供しているらしいです(詳しくはWebで).1時間うん十万円とするよ うですがこれだけの環境をお手軽に使用できるようになったのはすごい事ですよね.

私たちのブースではセンサデータを配送するためのPublish/Subscribe Systemや4K映像配信のデモやポスター,学内計算機環境などを展示しました.興味津々で話を聞いてくれるお客さんや予想外の質問を投げかけてくるお 客さんまで様々な方が私たちの展示に興味を持って下さり,1日立ち続けで英語で説明を行う状況で体も頭もフル回転で大変ではありましたが刺激的な経験とな りました.また,100枚弱持っていったパンフレットを無事全て配る事ができ,ちょっとした達成感も味わうことができました.私たちのブースでは緑茶を提 供していたのですが,すごく欲しがる人と要らない人ではっきりと分かれていたのが興味深かったです.

sc1

SCで紹介されるような高性能計算機環境の向上は私たちの生活への影響も大きいですのでこの分野の更なる発展を願うとともに,私たちも貢献していきたいものですよね.

by Tatsuya

SECCON-CTF奈良大会SECCON-CTF in Nara

MWSCup2012に続き、11月3日と4日の2日間、SECCON-CTF奈良大会が本学情報科学研究科にて開催されました。今回、私たちが取り組ん でいるセキュリティ人材育成活動の1つのアクティビティとして、関係者の協力の下、私も実行委員として活動させていただきました。

続きを読む

作業効率化ができるかもしれない!?Cheat Sheetまとめ Cheat sheet tips

津田です。

一日がだんだんと短くなり、気温も下がりはじめたので、ホットコーヒーが美味しい季節ですね。

「いちいちググるくらいなオフラインも活用して、作業効率を上げませんか」

といったテーマでブログの記事を書いてみます。

続きを読む

CSS 2012 / MWS 2012参加報告CSS 2012 / MWS 2012 Participation Report

10/30(火) – 11/1(木)の期間、島根県のくにびきメッセでCSS 2012 / MWS 2012が開催されました。

情報基盤システム学研究室からは学生5名が参加してきたので報告したいと思います。

CSS 2012

ラボから見えるキャンパスの景色もすっかり秋色に染まり,冬の足音も近づいて参りました.M2の石井です.

先日,コンピュータセキュリティシンポジウム (CSS) 2012に参加し,論文発表を行ってきたので,その報告を致します.
又,同時開催されたマルウェア対策研究人材育成ワークショップ (MWS) 2012にてM1のチームに紛れ込み,MWS Cupに参戦しました.その様子はこの後紹介して頂きます.

CSSでは主に,コンピュータセキュリティに関するテーマの論文発表,デモ(ポスター)発表が行われ,研究分野のキーワードを挙げると,暗号理論, 暗号実装,暗号プロトコル,ネットワーク・ユビキタスセキュリティ,秘密分散,プライバシ保護,情報セキュリティ教育,心理学とトラストなど様々に渡りま す.
私は暗号実装のセッションで発表しました.今回取り組んだことは,IDベース暗号やその応用技術で用いられるペアリングという函数のGPU並列実装と,そのペアリングの構成についてです.ペアリングや暗号の話については,別にこのブログで紹介できたらと考えています.

css2012_by_inomata800x600

css2012by_y-tsuda_800wid

このペアリングの研究については,割とマイナーな研究分野だと思うのですが,発表は沢山の方々に聴いて頂き,コメントも頂き大変ありがたく,ために なりました.特に,今後の課題でもある,ペアリングの計算で必要になる拡大体の構成や演算については,興味深い示唆を頂き研究に活かしていきたいところで す.

他の研究者の方々の発表として,基本的に私は暗号技術に関する研究発表を聴いて回りました.感じたのは暗号化函数の合成が可能であるような,即ち可 換暗号という技術を用い,プライバシ保護などに応用する研究が多かったことです.今は完全準同型暗号も流行っており,代数を使っているということで,自分 としても大変興味があり今後ぜひ研究してみたいところです.

ポスターセッションではとくに拡大体の乗算(CVMAアルゴリズム)に関する,岡山大学 野上先生らの研究を特にお話を聞かせていただきました.FPGA実装されたそのハードそのものも見せて頂きましたが,並列化にも親和性があるということ で,この後にもアルゴリズムと数学の部分を学習したいと思います.又,野上先生には自身の論文発表後にコメントを頂き感謝しています.

島根県,松江市は地元から割と近いこともあり何度か訪れていますが,良いところです.懇親会ではどじょうすくいの演舞を鑑賞するなどして,楽しませて頂きました.ナイトの方も大変活気があり実行委員会の方々には感謝しています.

# 論文発表の際は京都大学の津田さんに沢山の写真を取って頂きました.ありがとうございます.後輩や猪俣先生にも撮影して頂き,撮られてる感が半端なかったです^^

MWS 2012 -MWS Cup-

M1の寺本です.
石井さんに続き,こちらではMWS Cupの参加報告をさせていただきます.

今年度のCSS/MWSは私の故郷である松江で開催されました.
MWS Cupに参加した私は,「地の利を活かせる」という理由でチームの代表者に選ばれておりましたので,今回のMWS Cupについてもメンバーを代表して書きたいと思います.

MWS Cupは,マルウェア対策研究人材育成ワークショップ(MWS)の中で行われる競技形式の大会のことを指します.
MWS Cupではマルウェアに関わる様々な課題が出題され,チームで解析を行い,その結果を競います.
加えて,競技終了後に解析方法などについての発表を行い,その発表までが最終結果に含まれるのがこのMWS Cupの特徴です.

今回のMWS Cupでは,参加チームは12チームと過去最高の参加数だったようです.
我々は「IT Keys若手の会@NAIST」というチーム名で参加し,inet-labからは石井,金丸,寺本,畑中,村田の五名が参加しました.

MWS Cupでは,大枠として以下の4種類の課題が与えられます.

  1. インシデントレスポンス
    • ある組織の端末がマルウェアに感染した際のインシデントをフォレンジックやコード解析で詳細解析し、解答する課題
  2. drive-by-download攻撃解析
    • クライアント型ハニーポットの通信データ(pcap)をもとに攻撃コードなどを解析し、解答する課題
  3. 検体解析
    • 実際の検体を静的解析し、解答する課題
  4. Androidマルウェア解析
    • 2個(想定)のAndroidマルウェアを解析し、解答する課題

これらの課題に関して,チームで協力して解答していくのがMWS Cupです.
このうち課題1と課題3に関しては,事前課題として競技本番の1週間前にファイルが渡され,回答する問題がありました.

409192_391618507574574_516936778_n
#事前課題の解析中に取材も受けました!

そして,10月30日,MWS Cupの本番の日がやって来ました!

304336_382177365190913_929912678_n

本番では,それぞれの課題をメンバーで分担して解答していきました.
私は,HDDイメージのフォレンジックを行う課題1に取り組みました.
課題1で与えられたのはWindowsのシステムがインストールされたHDDイメージだったのですが,その中からマルウェアの場所と変更されたレジストリキーを特定し,タイムラインを作成し,どのような手段で感染したかを見つけ出し・・・と,手順の多い難しい課題でした.

kaito

mwscup2012-zentai1

事前の準備不足が響き結果は残すことができませんでしたが,多くの経験を得ることができ非常に実りのある大会となりました.
この後,我々はリベンジを誓いながら,11/3~11/4にNAISTで行われたSECCON2012に参加することになります.
その様子については,次回報告していただけると思います.

OpenFlow 1.2で遊んでみた。Play with OpenFlow 1.2

大平です。
最近何かと話題のOpenFlowについて、私もちょっと触ってみましたのでそのご報告を兼ねまして。

OpenFlowがどういうものなのか、導入前に何を考えるべきかなどは、Software Design 2012年11月号あたりをご参照ください。
本記事では、「とりあえずそのあたりはなんとなくわかった。じゃあ実際のところどういう風にコントローラを作りこんでいけばいいのか」といったところを書いてみようと思います。

続きを読む

情報セキュリティワークショップ in 越後湯沢2012Yuzawa Security Workshop 2012

情報セキュリティワークショップ in 越後湯沢2012から招待をいただきましたので参加してまいりました。
既に13回目?の開催ということらしく、大変歴史のあるワークショップで、いわゆるアカデミックよりの学会スタイルをとっておらず、セキュリティ業界の 方々が集まり徹底的に議論できる場を提供しており、なんと参加者も300名ほどの規模のWSでした。元々、警察関係の方々を中心に開催されていた経緯もあ り、様々な講演は直接現地でなければ聞くことでのきないスペシャルな講演ばかりでした(もちろんいくつかの講演はUstreamでの配信も行われていまし たが、オフレコ的なお話しも多数ありました)。
ちなみに今回は、私ごときを車座会議の座長として、新島学園短期大学の花田経子先生よりお招きいただきまして、セキュリティ人材育成についてのセッションを花田先生と担当させていただきました。今回開かれた車座は以下の通りです。

続きを読む

[Linux] GRUBシェルの使い方[Linux] How to use GRUB shell

朝晩はすっかり寒くなってしまいました、岡本です。
自転車に乗っているのですが、そろそろ防寒装備が必要だと感じています。

LinuxではブートローダとしてGNU GRUB を採用しているディストリビューションが多いです。昔Linuxのブートローダとしては LILO (LInux LOder) が使われていましたが、今ではマルチブート対応のGRUBが一般的になり、LinuxだけでなくSolarisなどの標準ブートローダとしても使われるよ うになりました。

さてLinuxサーバをメンテしていると、OSアップグレードなどに伴って起動しなくなることがあります。読み込むべきカーネルイメージを間違え る、GRUBのconfigファイルが壊れる、ファイルシステム破損など…。先日、ラボにあるUbuntuのサーバをアップグレード (do-release-upgrade) したらUbuntuが起動しなくなってしまいました。GRUBのOS選択画面が出てこなくなりました。その代わり、以下のようなプロンプトが出てきました。

続きを読む

Flotr2で描く動的なグラフHow to draw dynamic graphs with ‘Flotr2′

フランスは一気に暗く寒くなりました。。。松浦です。
朝の7時では真っ暗ですし、コートを羽織る人も随分増えてきました。この先が思いやられますが、オイスターやムール貝が美味しく食べられると期待して頑張っています。

今日はFlotr2を使った動的なグラフの描き方を紹介ます。Flotr2を使うとjavascriptで綺麗でかつ簡潔にグラフが描けます。
http://www.humblesoftware.com/flotr2/

ここではsinカーブ上を点が移動していくグラフの描き方を紹介します。

続きを読む