本連載では第4回ではレプリケーション,第5回ではシャーディングについて説明してきましたが,今回はレプリケーションとシャーディングを組み合わせた構成について紹介します。この構成を取ることにより,データを冗長化させつつも,分割して配置することができるため,可用性と読み取り性能を両方向上させることができます。前回のシャーディングの構成では,単一のmongodをシャーディングサーバに割り当てていましたので,その1つのmongodが障害になると,シャーディングの機能が停止してしまうという問題がありました(図1参照⁠)⁠。図1これを解決するために,シャーディングサーバに単一のmongodではなくレプリカセットを割り当てます。これによりレプリカセット内のmongodに障害が発生してもシャーディングの機能が停止しない構成にすることができます(図2参照⁠)⁠。図2さらに信頼性を高めたい場合は,configサーバを冗長化することができます。configサーバの冗長化は,レプリカセットの非同期レプリケーションとは違い,2フェーズコミットによる同期レプリケーションになります。詳しくはdocs.mongodb.org/manual/administration/sharded-clusters/#config-servers>公式マニュアルを参照ください。続いて,実際にレプリケーションとシャーディングを組み合わせた構成を作っていきます。今回は4台のサーバを使ってレプリカセットとシャーディングを組み合わせた構成を作ります。具体的には,3つのレプリカセットrs0,rs1,rs2をシャードサーバに割り当て,シャーディングを行います。レプリカセットを構成するmongodはそれぞれ別のサーバ(サーバA,サーバB,サーバC)上で動作させます。サーバごとにプライマリが1つになるようにします。configサーバとmongosサーバはフロントサーバ上で動作させます。configサーバの冗長化は行いません。今回は4つのサーバを用います。図34つのサーバが用意できない場合は,1つのサーバで作ることも可能です。全てポートが分かれているためです。その場合,各サーバのIPアドレスを設定する箇所を変更してください。準備まず全てのサーバに同じバージョンのMongoDBをダウンロードし展開しておきます。dataディレクトリとlogディレクトリを作成します。最初に,レプリカセットrs0を作ります。各サーバで以下のコマンドを実行し,mongodを起動してください。ポイントは--replSetオプションでレプリカセットを指定する点です。--fork[注意]1つのmongodでジャーナルファイルに3G程度のディスク容量が必要です。試しに使うだけでディスク容量を節約したい場合は,ジャーナルは必要ないので,--nojournalオプションを追加してジャーナルの機能を止めてください。次にサーバAにてレプリケーションの設定を行います。サーバAにて設定を行うのはサーバAをプライマリにするためです。時間がたつとサーバAがプライマリになります[注意]IPアドレスは,1つのレプリカセット内でループバックインターフェース(localhostや127.0.0.1)とネットワークインターフェースを混在させることはできません。(サーバAのIP)の部分は,サーバAのネットワークインターフェースのIPアドレスにしてください。[参考]うまくいかないときは,サーバAのmongoシェルで,サーバBやサーバCのmongodに接続できるか確認してみましょう。ネットワークの疎通ができているかの確認になります。設定をやり直すためにmongodを停止する場合は,killallコマンドが便利です。続いて,レプリカセットrs1を同様に作成していきます。mongodを起動します。--fork続いてレプリケーションを設定しますが,今度はサーバBをプライマリにするためサーバBのmongoシェルで作業します。時間がたつとサーバBがプライマリになります最後に,レプリカセットrs2を同様に作成していきます。mongodを起動します。--fork続いてレプリケーションを設定を行いますが,今度はサーバCにて作業を実施します。OpenStandia所属。オープンソースのR&Dとセミナー講師を担当。Debian,Ubuntu,Liferayのコミュニティで活動した後,MongoDBの翻訳に関わり,丸の内MongoDB勉強会を始める。実家がお寺で,住職の資格を所持する坊主系エンジニア。OpenStandia所属。オープンソースを使ったSIやサポートの業務に従事。藤崎と共同で丸の内MongoDB勉強会を始める。好きなものはLinuxとRuby。OpenStandia所属。オープンソースを使ったSIや製品開発業務に従事。丸の内MongoDB勉強会では広報兼雑用係を務める。趣味はレザークラフト,ダイビング,スキー,キャンプ,ジェットスキー,カメラ等々。作って滑って撮って潜れるエンジニア。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。