SlideShare a Scribd company logo
MongoDB on AWS
Advance
2017年7⽉1⽇
菊池修治
2⾃⼰紹介
菊池 修治
- クラスメソッド AWS事業部
- Solutions Architect
- AWS認定 5冠
- SIer → 製造業 → クラスメソッド
- 好きなAWSサービス
- S3、SystemsManager、DMS
- 好きなデータストア
- MongoDB
3Agenda
Introduction
MongoDB on AWS
- レプリカセット
- バックアップとリストア
- パフォーマンス
- マネージドサービス連携
まとめ
Introducton
5Introduction
セッションのテーマ
• MongoDBをAWSで最適に利⽤する
あまり話さないこと
• MongoDBとはなにか
• 他のデータベースとの⽐較
6Introduction
AWSでは多くのフルマネージドなDBを提供
MongoDBを使うならMongoDBが得意な領域に使う
• JSONドキュメントへのリッチなクエリ
• スキーマレスを活かせるか
DynamoDB ElastiCache RDS Redshift EMR
7Introduction
AWSで使うためにはEC2上に構築する必要がある
AWSの仕様・特性を理解し
最適な状態でMongoDBを使う
MongoDB on AWS
レプリカセット
10レプリカセット
• 3台以上のノードで構成しデータをレプリケーション
• WriteはPrimaryへ
• Readは負荷分散可能
11レプリカセットのパラメータ
• レプリケーションを設計する上で考慮すべきパラメータ
項⽬ 設定値 説明
priority 0 - 100
• プライマリ選出の優先度
• 値が⼤きいノードが優先でプライマリに選出
• 0の場合はプライマリには昇格しない
votes 0 or 1
• プライマリ選出における投票権
• 0の場合にはプライマリ選出に参加しない
• レプリカセットの合計を奇数にする
arbiterOnly true | false
• データを保持せずプライマリ選出にのみ参加するノー
ドに指定する
hidden true | false
• 指定することでクライアントから隠された状態になる
• hiddenノードはプライオリティを必ず0にする
tags string • ノードにKey:Valueのタグを付与する
12レプリカセット構成パターン
• AWSではMulti-AZが基本
• 障害時のスプリットブレイン回避を考慮し配置する
• 構成パターン
• Multi-AZ(3 AZリージョン)
• Multi-AZ(2 AZリージョン)
• Multi-AZ + 別拠点
• Multi-AZ + Arbiter
• Hiddenノードを含む構成
• 4ノード構成
13レプリカセット構成パターン
Multi-AZ(3 AZリージョン)
• ベーシックな構成
• AZレベルでの障害でもサービス継続
14レプリカセット構成パターン
Multi-AZ(2 AZリージョン)
• AZが2つのリージョンでの基本構成
• ⾼プライオリティのノードを⽚AZに集約
15レプリカセット構成パターン
Multi-AZ + 別拠点
• 遠隔レプリケーション構成
• 他拠点のノードはプライオリティ
を0にしてプライマリ昇格を抑⽌
16レプリカセット構成パターン
Multi-AZ + Arbiter
• データレプリカが2つで
⼗分な場合
• Arbiterは最⼩スペックで
問題ない
17レプリカセット構成パターン
Hiddenノードを含む構成
• フルロード処理やバックアップ取得をHiddenに対して実⾏
18レプリカセット構成パターン
4ノード構成
• Voteの合計が奇数であれば4ノード構成も可能
• 3ノードレプリカセットの冗⻑性を維持してHiddenも追加
19Write Concern
• 書き込むデータの⼀貫性レベルを指定
• 何台のノードに書き込まれた時点で応答を返すか
• 書き込みパフォーマンスとのトレードオフ
• デフォルトはw=1
• w=2以上にする場合は障害時の影響を考慮する
w値 動作
w = 0 応答を待たない
w = n n台のノードに書き込みが完了したら応答
w = majority 過半数のノードに書き込みが完了したら応答
w = <tag set> 指定のタグのノードに書き込みが完了したら応答
バックアップとリストア
21バックアップ⼿段
• Dumpの取得
• スナップショット
• CloudManager/OpsManager
22Dump取得
• mongodumpで取得
• データベース/コレクションを指定して取得可能
• 注意点
• ポイントインタイムリカバリは不可
• 取得するノードにI/Oが発⽣
• 取得したダンプファイルは安全な場所に保存する
23スナップショット
• EBSスナップショットを取得
• 取得時に負荷はかからない
• 差分バックアップなのでこまめに取得しても費⽤は
抑えられる
• 注意点
• ポイントインタイムリカバリは不可
• スナップショットからリストア時にはEBSのパフォーマ
ンスに注意
24EBSのプレウォーミング
• スナップショットから復元したEBSは初期化が必要
• EBS各ブロックの初回アクセス時にはレイテンシが増⼤
• dd/fioで全ブロックにアクセスすることで本来のパフォーマンスが
発揮可能に
• 新規に作成したEBSは初期化不要
25CloudManager/OpsManager
• OplogをCloudManager/OpsManagerで取得
• ポイントインタイムリカバリが可能
• 注意点
• CloudManagerは有償のクラウドサービス
• OpsManagerはサブスクリプション契約が必要
26バックアップからのリストア
いずれの⽅法もリストアに時間がかかることに注意
リストア⽅法 必要な作業
Dumpからのリストア • ダンプデータの転送
• ノードへのインポート
スナップショット復元 • EBSのプレウォーミング
CloudManager/
OpsManager
• データの出⼒/転送
• ノードへのインポート
27データ保護⼿段
レプリケーションを⼯夫しておくことも有効
• 災害対策:
• 他リージョンへの遠隔レプリケーション
• オペレーションミス対策:
• 遅延レプリケーション
パフォーマンス
29MongoDBのパフォーマンス
https://www.slideshare.net/tetsutarowatanabe/mongodb-70155001
これを読めばOK
• MongoDBの特性、調査⽅法、チューニングを詳細に解説
30MongoDBのパフォーマンスチューニング
基本はRDBと同じアプローチ
• I/Oの最⼩化
• ホットデータをメモリに乗せる
• Indexを使う
• I/Oの⾼速化
• ネットワークの最適化
• ストレージの最適化
31AWSでパフォーマンスを向上させるTips
• ストレージの最適化
• EBS
• インスタンスストレージ
• EC2パフォーマンス向上のオプション
• EBS最適化
• プレイスメントグループ
• 拡張ネットワーキング
32AWSでパフォーマンスを向上させるTips
• ストレージの最適化
• EBS
• インスタンスストレージ
• EC2パフォーマンス向上のオプション
• EBS最適化
• プレイスメントグループ
• 拡張ネットワーキング
33ストレージの最適化
GP2(汎⽤SSD)
• 1GBあたり 3 IOPSのIO性能が割り当て(ベースライン)
• 1TB未満ではクレジットを消費して3000 IOPSまでバースト
• クレジットが枯渇するとベースラインまで低下
• 1ボリューム最⼤10,000 IOPS
• 1インスタンス最⼤75,000 IOPS
MongoDBでは
• ホットデータに対し⼗分なメモリがある場合には問題ない
• フルスキャン時のクレジット枯渇に注意
• データのインポート/エクスポート、インデックス追加
34ストレージの最適化
IO1(プロビジョンドIOPS)
• $0.073/IOPSで必要性能を割り当て
• 50 IOPS/GBまでプロビジョニング可能
• 1ボリューム最⼤20,000 IOPS
• 1インスタンス最⼤75,000 IOPS
MongoDBでは
• 安定したIO性能が必要な場合の選択肢
35EBSの変更
• 2017年2⽉のアップデートでEBSのタイプ変更と容量追加が可能に
• GP2からIO1、IO1からGP2など
• 追加分の容量を利⽤するためにはファイルシステムの拡張が必要
• GP2では..
• 容量追加に伴うIO性能向上は⾃動で反映
• クレジット枯渇時に容量変更すると、クレジットが完全に回復
• ただし、1度変更すると次の変更は6時間後まで不可能
36ストレージ最適化インスタンス
• 2017年2⽉にI3インスタンスがGA
• NVMe SSDを搭載
• PCI Express直結のSSD
• 最⼤ 3,300,000 IOPS
• インスタンスストア(再起動でデータが失われる)
37ストレージ最適化インスタンス
インスタンス
サイズ
vCPU メモリ
I3インスタンス
ストレージ
I2インスタンス
ストレージ
I3料⾦ I2料⾦
large 2 15.25 1 x 475 NVMe SSD - $0.18 -
xlarge 4 30.5 1 x 950 NVMe SSD 1 x 800 SSD $0.37 $1.00
2xlarge 8 61 1 x 1900 NVMe SSD 2 x 800 SSD $0.73 $2.00
4xlarge 16 122 2 x 1900 NVMe SSD 4 x 800 SSD $1.46 $4.00
8xlarge 32 244 4 x 1900 NVMe SSD 8 x 800 SSD $2.93 $8.00
16xlarge 64 488 8 x 1900 NVMe SSD - $5.86 -
• I3が登場しストレージ最適化インスタンスが⼿頃に
38I3インスタンスを利⽤したMongoDB構成
役割によってインスタンスタイプ、
ストレージを使い分ける
• アクセスされるノードにI3/NVMe
SSDを使⽤
• HiddenノードはEBSを使いデータを
永続化
EBS
NVMe SSD NVMe SSD
Primary Secondary
Secondary
Hidden
App
Write/Read Read
39AWSでパフォーマンスを向上させるTips
• ストレージの最適化
• EBS
• インスタンスストレージ
• EC2パフォーマンス向上のオプション
• EBS最適化
• プレイスメントグループ
• 拡張ネットワーキング
40EBS最適化
• 通常のNWトラフィックと分離したEBS専⽤の帯域が確保される
• T2を除く現⾏の主要インスタンスタイプ(M4/C4/R4/I3)では
デフォルトで有効化
Network
EBS
Network
EBS
EBS最適化⾮対応インスタンス EBS最適化インスタンス
41EBS最適化
• インスタンスタイプによりIO性能の限界があることに注意
インスタンス
タイプ
最⼤スルー
プット
最⼤IOPS
(16KB)
c4.large 62.5 4,000
c4.xlarge 93.75 6,000
c4.2xlarge 125 8,000
c4.4xlarge 250 16,000
c4.8xlarge 500 32,000
i3.large 50 3,000
i3.xlarge 100 6,000
i3.2xlarge 200 12,000
i3.4xlarge 400 16,000
i3.8xlarge 850 32,500
i3.16xlarge 1,750 65,000
インスタンス
タイプ
最⼤スルー
プット
最⼤IOPS
(16KB)
m4.large 56.25 3,600
m4.xlarge 93.75 6,000
m4.2xlarge 125 8,000
m4.4xlarge 250 16,000
m4.10xlarge 500 32,000
m4.16xlarge 1,250 65,000
r4.large 54 3,000
r4.xlarge 109 6,000
r4.2xlarge 218 12,000
r4.4xlarge 437 18,750
r4.8xlarge 875 37,500
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSOptimized.html
42拡張ネットワーキングとプレイスメントグループ
拡張ネットワーキング
• 有効化することでPPS、レイテンシが最適化
• 対応インスタンスタイプ
• VF:C3、C4、D2、I2、R3、M4 (m4.16xlarge を除く)
• ENA:F1、I3、P2、R4、X1 および m4.16xlarge
• Amazon Linuxで対応インスタンスタイプの場合はデフォルトで有効
プレイスメントグループ
• インスタンスを論理グループ化しインスタンス間通信を最適化
• 同⼀AZに限る
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-groups.html
43拡張ネットワーキングとプレイスメントグループ
効果
• 同⼀AZ内のインスタンス間のPing 100回の結果
• インスタンスタイプ:c3.large
• OS:CentOS6
条件 最⼩(ms) 平均(ms) 最⼤(ms) 標準偏差
デフォルト 0.318 0.385 0.814 0.075
拡張ネットワーキング有効化 0.202 0.220 0.389 0.023
プレイスメントグループ有効化 0.239 0.301 0.410 0.034
拡張ネットワーキング +
プレイスメントグループ 0.130 0.157 0.172 0.018
http://dev.classmethod.jp/cloud/aws/ec2-placement-group/
マネージドサービス連携
45AWS Database Migration Service
データベースの移⾏を⽀援するサービス
• 異なるデータベースエンジン間の移⾏に対応
• AWS/オンプレのDBに対応
• フルロードとChange Data Captur(CDC)
• フルロード:⼀括で全データを移⾏
• CDC:変更差分を反映
46DMSを利⽤したレプリケーション
• SourceとしてMongoDBをサポート
(2017/4 Update!)
• CDCサポート
• Oplogを使⽤するためレプリカセット必須
• モデルの異なるデータストアに対し2つの
モードを⽤意
• テーブルモード
• ドキュメントモード
472つのマイグレーションモード
• テーブルモードとドキュメントモード
48テーブルモードでCDC利⽤時の制約
• コレクションの追加には⾮対応
• 初回フルロード時に未定義のキーを追加しても反映されない
フルロード
49テーブルモードでCDC利⽤時の制約
• コレクションの追加には⾮対応
• 初回フルロード時に未定義のキーを追加しても反映されない
インサート
50テーブルモードでCDC利⽤時の制約
• コレクションの追加には⾮対応
• 初回フルロード時に未定義のキーを追加しても反映されない
インサート
51テーブルモードでCDC利⽤時の制約
• コレクションの追加には⾮対応
• 初回フルロード時に未定義のキーを追加しても反映されない
CDC
フルロード時に未定義の
key4列は追加されない
52S3ターゲットの活⽤
• S3ターゲットにCSV出⼒
• 他のAWSサービスと柔軟に連携
• DynamoDB
• EMR
• Redshift/Redshift Spectrum
• Athena
53MongoDB Atlas
MongoDB の Database as a Service
• 従量課⾦でフルマネージドなMongoDBを利⽤可能
• AWSの全リージョンに対応
• AWSとの機能統合
• ⾃分のAWSアカウントのVPCとピアリング
• セキュリティグループ参照
• MongoDBのエコシステムと連携
• CloudManagerと統合
• 移⾏ツールmongomirror
まとめ
55まとめ
AWSでMongoDBを最適に使う
• AZを考慮したレプリカセット配置
• バックアップはリストア⽅法を考慮する
• EC2/EBSの特性を理解したチューニング
• マネージドサービスを利⽤して活⽤の幅を広げる
おまけ
Developers.IO 2017 MongoDB on AWS Advance
58MongoDB	World	2017
• 6⽉20、21⽇にシカゴで開催
• 主な発表
• MongoDB AtlasがGCP/Azureでもサポート(すでに利⽤可能)
• モバイル向けBaaS、MongoDB Stitch(ベータ提供)
• BIツール、Mongo Charts(MongoDB 3.6と共に年内提供予定)
Developers.IO 2017 MongoDB on AWS Advance

More Related Content

PDF
EC2+RDSを基本から #cmdevio2017
PDF
実案件で見る データ分析用AWS基盤の構築方法 - Developers.IO 2017 (20170701)
PPTX
Aurora新時代の幕開けとDynamoDBの進化
PPTX
歩みを止めないみんな大好きEC2
PDF
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
PDF
10分でできる!vpsサービスAmazon lightsailを使いこなす
PDF
データレイクを基盤としたAWS上での機械学習サービス構築
PDF
Re invent 2017 データベースサービス総復習!
EC2+RDSを基本から #cmdevio2017
実案件で見る データ分析用AWS基盤の構築方法 - Developers.IO 2017 (20170701)
Aurora新時代の幕開けとDynamoDBの進化
歩みを止めないみんな大好きEC2
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
10分でできる!vpsサービスAmazon lightsailを使いこなす
データレイクを基盤としたAWS上での機械学習サービス構築
Re invent 2017 データベースサービス総復習!

What's hot (20)

PPTX
負荷分散だけじゃないELBのメリット
PPT
AWSのEC2の複数インスタンスからファイルを共有する方法
PPTX
20161212 岩本
PPTX
AWSのcloudpack流フルマネージメント
PDF
ついに解禁!Amazon Aurora徹底検証!
PPTX
オンプレからAuroraへの移行とその効果
PDF
ECSの大型アップデートが来たよ!
PDF
クラウド上のデータ活用デザインパターン
PDF
AWS+でスケールアウト&スケールアップ
PDF
はじめてのアマゾンクラウド⑥ Amazon rdsでデータベースを起動
PDF
AWSのNoSQL入門
PDF
Using Amazon Aurora for Enterprise Workloads
PPTX
EC2 Deep Dive at CTO Night&Day 2016
PPTX
AWSでのバースト ― GP2 T2 ご紹介資料
PDF
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
PPTX
Oracle racからaurora my sqlへの移行
PDF
エンタープライズワークロードにおけるAmazon Auroraの活用
PDF
AWS Database Migration Serviceの紹介
PDF
20170210 jawsug横浜(AWSタグ)
PDF
AWS Black Belt Techシリーズ Amazon EBS
負荷分散だけじゃないELBのメリット
AWSのEC2の複数インスタンスからファイルを共有する方法
20161212 岩本
AWSのcloudpack流フルマネージメント
ついに解禁!Amazon Aurora徹底検証!
オンプレからAuroraへの移行とその効果
ECSの大型アップデートが来たよ!
クラウド上のデータ活用デザインパターン
AWS+でスケールアウト&スケールアップ
はじめてのアマゾンクラウド⑥ Amazon rdsでデータベースを起動
AWSのNoSQL入門
Using Amazon Aurora for Enterprise Workloads
EC2 Deep Dive at CTO Night&Day 2016
AWSでのバースト ― GP2 T2 ご紹介資料
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
Oracle racからaurora my sqlへの移行
エンタープライズワークロードにおけるAmazon Auroraの活用
AWS Database Migration Serviceの紹介
20170210 jawsug横浜(AWSタグ)
AWS Black Belt Techシリーズ Amazon EBS
Ad

Similar to Developers.IO 2017 MongoDB on AWS Advance (20)

PDF
[MongoDB勉強会 in 2017] MongoDB on AWS
PDF
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
PPTX
Applibot presents Smartphone Game on AWS
PDF
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
PDF
Snr005 レノボだから実現
PPTX
Scaling MongoDB on AWS
PDF
AWS サービスアップデートまとめ 2014年4月
PDF
Classmethod awsstudy ec2rds20160114
PDF
IBMクラウドデータベースの使いどころ
PDF
Ibm クラウドデータベースの使いどころ
PPTX
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
PDF
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
PDF
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
PDF
20190305_AWS-Blackbelt-EC2.pdf
PDF
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ②IBM資料
PDF
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
PDF
20190320 AWS Black Belt Online Seminar Amazon EBS
PDF
JAWS DAYS 2015
PDF
Reinvent2017 recap-overview-pdf
PDF
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
[MongoDB勉強会 in 2017] MongoDB on AWS
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
Applibot presents Smartphone Game on AWS
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
Snr005 レノボだから実現
Scaling MongoDB on AWS
AWS サービスアップデートまとめ 2014年4月
Classmethod awsstudy ec2rds20160114
IBMクラウドデータベースの使いどころ
Ibm クラウドデータベースの使いどころ
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20190305_AWS-Blackbelt-EC2.pdf
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ②IBM資料
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
20190320 AWS Black Belt Online Seminar Amazon EBS
JAWS DAYS 2015
Reinvent2017 recap-overview-pdf
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
Ad

More from Shuji Kikuchi (20)

PDF
re:Growth 2021 コンピュートサービスの進化を語る
PDF
re:Grouth 2020 : AWS Infrastrucuter Serviceの進化 2020
PDF
JAWS-UG 横浜 re:Invent re:Cap week1 EC2ストレージパフォーマンスの進化
PDF
AWS Outpostsセミナー オンプレミスネットワークとの接続
PDF
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
PDF
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
PDF
Developers.IO 2019 Tokyo re:inventの歩き方
PDF
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
PDF
re:Growth 2018 Tokyo:Amazon Global Networkが提供する新サービス
PDF
Developers.IO 2018 Tokyo AWSベストプラクティス
PDF
AKIBA.AWS #10 NLBを取り巻く環境のUPDATE
PDF
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
PDF
[AKIBA.AWS] VGWのルーティング仕様
PDF
[AKIBA.AWS] VPN接続とルーティングの基礎
PDF
[AKIBA.AWS] VPCをネットワーク図で理解してみる
PDF
[HIGOBASHI.AWS] AWS ネットワーク小ネタ祭り
PDF
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
PDF
[AKIBA.AWS] re:invent 2017アップデート:ついてこられるか?AWSネットワークの進化
re:Growth 2021 コンピュートサービスの進化を語る
re:Grouth 2020 : AWS Infrastrucuter Serviceの進化 2020
JAWS-UG 横浜 re:Invent re:Cap week1 EC2ストレージパフォーマンスの進化
AWS Outpostsセミナー オンプレミスネットワークとの接続
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
Developers.IO 2019 Tokyo re:inventの歩き方
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
re:Growth 2018 Tokyo:Amazon Global Networkが提供する新サービス
Developers.IO 2018 Tokyo AWSベストプラクティス
AKIBA.AWS #10 NLBを取り巻く環境のUPDATE
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] VGWのルーティング仕様
[AKIBA.AWS] VPN接続とルーティングの基礎
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[HIGOBASHI.AWS] AWS ネットワーク小ネタ祭り
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
[AKIBA.AWS] re:invent 2017アップデート:ついてこられるか?AWSネットワークの進化

Developers.IO 2017 MongoDB on AWS Advance