スケーラブルmoodle@moodle moot 2017jp
TRANSCRIPT
スケーラブル Moodle
1
プレゼンター• 株式会社イーラーニング
– 東京都港区芝 5-29-20 クロスオフィス三田 2F– Moodle パートナー
• Moodle 構築、ホスティング、テーマ作成、プラグイン開発 トレーニング、コンサルティング、コンテンツ作成– IT エンジニア向けコンテンツ
• CCNA, iOS プログラミング , LPIC
• 鈴木 重毅 (Atsutoshi Suzuki)– インフラ構築サポート担当– 資格など
• CompTIA CTT+• CompTIA Security+• 応用情報技術者• かつては MCT, MCAD なども
2
• サーバー台数の増強
スケールアップとスケールアウトスケールアップ スケールアウト
DB Web
• CPU 、メモリ、ストレージの性能向上2GHz x 116GiBRAID1
x N 台3
2GHz x 116GiBRAID1
4GHz x 464GiBRAID 5
2GHz x 116GiBRAID1
Moodle 3つのストレージ• moodle ディレクトリ
– プログラムファイル– プラグイン
• moodledata ディレクトリ– アップロードしたファイル
• コースデータ– 一時データ– セッション情報
• データベース保存も可能• データベース
– ユーザー情報• 学習状況、ログイン情報
– 各種モジュールで利活用4
traditionalserver
genericdatabase
AmazonRDS
AmazonEFS
オンプレミスの場合オンプレミス クラウド
会計区分 × 資産 〇経費初期投資 × 高額 〇低額(あるいは無し)運用コスト × 維持管理コストが高額 〇低額、かつ柔軟調達期間 × 日数がかかる 〇即座カスタマイズ
〇ほぼ自由 × 制限あり( IaaS は△)セキュリティ
〇組織内ポリシーに準拠 組織内での管理
△ 組織内ポリシーと SLA の調整が必要 組織外での管理
既存システムとの連携
〇自由度が高い △ インターネット接続が制限になることも →プライベート / ハイブリッドクラウド
障害対応 × 社内の担当者か、 社外から来てもらう
〇クラウド事業者が対応 インターネット越しに状況確認 / 変更
モバイル △ 別途に考慮 〇考慮済みロックイン 〇なし × プロバイダ変更は困難( IaaS は△)
5
オンプレミス構成users
Server
MariaDB
database
ColdStandby
VideoVideo URL
Active
Backupdevice
moodlemoodledata
EOPVideo
6
on-premises
https://FQDN/
SSL EL Video Server
スケーラブル・オンプレミス構成
https://FQDN/
backup
SSL
moodle
data
users
Servers2…N (Fix) Memcache
dor Redisor None
GlusterFS
VideoVideo URL
Galera
Load Balancin
g
on-premises
moodle
database
EOPVideo
Backupdevice
EL Video Server
7
moodle ディレクトリ• httpd サーバー上に配置
– 負荷分散装置により、アクセスを振り分け– GluterFS (後述)をマウントすることも可能
• 物理サーバーを分ける– 負荷に応じて物理サーバーの新規導入が必要
• 資産扱いのため、導入に時間が必要• 仮想 PC でテスト可能だが、目的は物理障害や負荷分散への対応
• 変更頻度は低い– rsync による同期で十分
• EOPVideo (e-learning On-Premises Video)– オリジナルモジュール– e-learning Video Server との間で認証を行う
8
分散ファイルシステム GlusterFS
• NAS ストレージのスケールアウト– 複数のディレクトリ( brick )を一つに見せる
• マスターレス– どのホストがダウンしても関係ない
• 導入が簡単• 3つのボリュームオプションを組み合わせ
– Distributed ファイル単位で分散– Replicated ファイルの複製を作成(ミラーリング)– Striped ファイルをブロック単位に分割して分散
• NFS, CIFS, Native でマウントして使用• パフォーマンス向上はあまりしない• スプリットブレイン対策
– quorum 設定により、過半数のノードを「正」とする9
moodledata ディレクトリ• 共有ファイルシステム上に構築
– NFS– GlusterFS– SAN
• キャッシュなしでも実用上は支障なし– 単純な構成にしたほうが問題は起きにくい– 必要なら Memcached か Redis ( Moodle 3.2以降)を使用
10
データベース• データベースクラスタ上に moodle DB
– MySQL/MariaDB 準同期レプリケーション• 復旧が大変!
– 2台構成におけるスプリットブレイン問題• 自動復旧は考えないが吉
– 早期復旧のため、双方向レプリケーションを行う– MariaDB Galera
• 3台以上で構成することで、スプリットブレイン問題を解消• データベースプロキシーで接続制御
– 各 httpd サーバー上に配置• MaxScale + MariaDB Replication Manager
• オートインクリメント値がとびとびになる– 動作に支障はない
• https://moodle.org/mod/forum/discuss.php?d=237573
11
クラウドの場合オンプレミス クラウド
会計区分 × 資産 〇経費初期投資 × 高額 〇低額(あるいは無し)運用コスト × 維持管理コストが高額 〇低額、かつ柔軟調達期間 × 日数がかかる 〇即座カスタマイズ
〇ほぼ自由 × 制限あり( IaaS は△)セキュリティ
〇組織内ポリシーに準拠 組織内での管理
△ 組織内ポリシーと SLA の調整が必要 組織外での管理
既存システムとの連携
〇自由度が高い △ インターネット接続が制限になることも →プライベート / ハイブリッドクラウド
障害対応 × 社内の担当者か、 社外から来てもらう
〇クラウド事業者が対応 インターネット越しに状況確認 / 変更
モバイル △ 別途に考慮 〇考慮済みロックイン 〇なし × プロバイダ変更は困難( IaaS は△)
12
クラウド構成
https://FQDN/
backup
SSL
users
AMI
Instance
CloudFrontVideoVideo URL
AmazonRDS
Amazon AWS
Amazon S3bucket
database region
SLA 99% を保証
moodlemoodledat
a
ACFVideo
13
スケーラブル・クラウド構成
https://FQDN/
backup
SSL
moodledata
users
AMI
OS Instance
2…NAuto Scaling group
AmazonElastiCac
heAmazonEFS
CloudFrontVideoVideo URL
AmazonRDS
AmazonElasticLoad
Balancing
Amazon AWS
Amazon S3bucket
moodleACFVideo
region
14
database
moodle ディレクトリ• AMI としてイメージを作成して複製
– オートスケーリングにより、負荷に応じて AMI からインスタンスを起動• 負荷分散は Elastic Load Balancing で設定
– オートスケーリングと連動• ACFVideo (Amazon CloudFront Video)
– オリジナルモジュール– 認証を必要とする
CloudFront高速なコンテンツ配信とストリーミングコンテンツ配信ネットワーク (CDN) サービス
AMI Amazon Machine Image
15
moodledata ディレクトリ• Amazon EFS 上に構築
– パフォーマンスが低い• ユーザー登録ページ表示に約 10秒
• ElastiCache とセットで構築– Memcached/Redis互換– NFS や GlusterFS を使用した場合と遜色なし
• ユーザー登録ページ表示に数秒
Amazon ElastiCacheメモリ内分散キャッシュ環境 Amazon EFSシンプルでスケーラブルなファイルストレージシステム高い可用性と耐久性を実現するよう設計16
データベース• Amazon RDS (Relational Database Service)
– 高可用性( Multi-AZ )機能• 異なるロケーションにスタンバイサーバーを配置
– データベースではスケールアップが有効• クラウドなのでスケールアップは容易
– オートインクリメントは連番• 余計な心配の必要がない 17
Availability Zone #1
RDS DB instance
RDS DB instance standby (Multi-AZ)Availability Zone
#2
Amazon RDS
Availability Zone可用性の観点で独立したロケーション
18
まとめ• スケールアップとスケールアウトを使い分ける• オンプレミス・スケーラブル構成
– moodle 物理サーバー追加によるスケールアウト– moodledata GlusterFS– moodle DB MariaDB Galera + MaxScale– 別途に負荷分散装置を用意
• クラウド・スケーラブル構成( Amazon AWS の場合)– moodle AMI をベースにした Auto Scalable Group– moodledata Amazon EFS + Amazon ElastiCache– moodle DB Amazon RDS (Multi-AZ)– 負荷分散は Elastic Load Blancing を使用
• Scalable Group と連動
Any Questions?
19
ありがとうございました• 株式会社イーラーニング • [email protected]
20人と人を繋ぐ e ラーニング