SlideShare a Scribd company logo
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
~ Commercial Presentation ~
クラウドでの大規模Moodleの
構築方法とモデルケース
10th Conference for Moodle Teachers and Developers
Moodle moot japan 2018
Microsoft Azureを利用した
複数台Moodleの構成紹介(40分)
Time: 2018.2.23 10:10-10:50 Room: 1405
株式会社テクノウォーカー 山岡 茂治
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
発表内容 –Agenda- (40分)
• Microsoft Azureを利用した複数台Moodleの構成紹介
1. はじめに
• ごあいさつ、本日のテーマ
2. 中~大規模環境構築に必要なこと(今回の想定環境)
• Azure(クラウド)側とMoodleサーバー(仮想マシン)側の構成
3. Microsoft Azure(クラウドサービス)の構成例
• 各種リソースの作成、仮想マシン、ロードバランサーの設定
4. Moodle(Linux上のミドルウェア)の構成例
• データベースとファイルのクラスタの構成とMoodleのインストール
5. ロードバランサーとクラスタリングの動作確認
• ロードバランサーやクラスタの動きを確認します
6. おわりに
• まとめ、ごあいさつ、質疑応答
Page. 2
2 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■ごあいさつ
弊社「テクノウォーカー」はシステム開発・構築+教育の会社です。
⇒ SE教育や本の執筆をしており、その過程でLMS=Moodleに触れました
クラウドでの大規模Moodleの構築方法とモデルケース
1. はじめに
3 / 41 ページ
■本日のテーマ
Microsoft Azureを利用した複数台Moodleの構成紹介
● Microsoft Azure の構成例
● Moodle(ミドルウェア)の構成例
● 実際の運用ケース
×
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
中~大規模環境構築に必要なこと
4 / 41 ページ
■求められる要件
可用性(かようせい、英:Availability; アベイラビリティ)は、
システムが継続して稼働できる能力のこと。 可用性に信頼性・
保守性を含めたものをRAS、更に保全性・安全性を含めたものを
RASISという。(wikipediaより)
利用者が多くても、データが増えても
遅くならない・ 止まらないというシステム
(特に学校の場合、テスト中はクリティカルです)
1台のサーバーでは限界があるので、複数のサーバーで
運用するのが一般的。Moodleではどうなる???
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
今回の想定環境(シンプルに書くと…)
■今回作成する構成
5 / 41 ページ
Microsoft Azure クラウド
ロードバランサー
(振り分け)
この部分を同期します
利用者
Moodleサーバー1
Moodle本体
(Apache)
DBデータ
(MariaDB)
MoodleData
(ファイル)
Moodleサーバー2
Moodle本体
(Apache)
DBデータ
(MariaDB)
MoodleData
(ファイル)
ファイアウォール
(セキュリティ)
管理者
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
今回の想定環境(もう少し細かく)
■今回作成する構成
6 / 41 ページ
Moodle本体
(Apache 2.4)
DBデータ
Microsoft Azure クラウド(東日本リージョン)
Azure
Load Balancer
ネットワーク
セキュリティグループ
Azure Storage
(管理ディスク)
moot2018-demo
.southeastasia.cloudapp
.azure.com へアクセス
利用者
※デモでは東南アジアにて構築しています
http・https
のみ通過
サーバーの応答によって
クライアントIPごとに振り分け 仮想のHDD
SSD(冗長化済)
Moodle
Data
Moodle本体
(Apache 2.4)
DBデータ
Moodle
Data
Moodleサーバー1(CentOS 7.4)
Moodleサーバー2(CentOS 7.4)
分散型のクラスタ構成
MoodleData(ファイル) ⇒ Gluster FS
DBデータ ⇒ MariaDB Galera Cluster
仮想マシン
仮想マシン
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
Moodleの構成要素と必要な要件
■Moodleの構成要素と更新頻度・同期の必要性
7 / 41 ページ
構成要素 更新頻度 同期の必要性
Moodle本体
(PHPプログラム etc)
プラグインの導入やバージョン
アップ以外は基本発生しない
必要な時のみ同期すれば良い
(手動でもできなくはない)
DB内のデータ
(DBシステムに格納)
Moodleの様々な情報を常に更新
している、参照も当然多い
常に同期を取る必要がある
MoodleData
(ファイルシステム)
アップロードされたファイルや
各種キャッシュなどを必要に
応じて更新
常に同期を取る必要がある
(一部除く)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■DB内のデータの同期方法
MariaDB Galera Cluster
・MariaDB(MySQLから派生したオープンソースのDB)の1つの形態
・他のDB製品に比べクラスタの構成が簡単
・全てマスターとして動作する(特定のDBにUPDATEが必要ない)
8 / 41 ページ
wsrep
MariaDB
wsrep
MariaDB
wsrep
MariaDB
Moodle
(サーバー1)
Moodle
(サーバー2)
Moodle
(サーバー3)
① 書き込み
(SQL)
② 情報を
同期(SQL)
② 情報を
同期(SQL)
Galera レプリケーション
(同期の仕組み)
2.中~大規模環境構築に必要なこと(今回の想定環境)
Moodleのデータ同期方法1
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
Moodleのデータ同期方法2
■MoodleDataの同期方法
GlusterFS (今回はレプリカ構成を使用)
・RedHat社から提供される分散ファイルシステム
・他の分散ファイルシステムに比べ構成が簡単で分かりやすい
・ブリック上に用意されたボリュームをマウントして利用する
9 / 41 ページ
Moodle
(サーバー1)
① 書き込み
(ファイルなど)
マウント
(接続)
Moodle
(サーバー2)
GlusterFS(複数台で構成)
Brick ブリック
(サーバー1ディスク内)
Brick ブリック
(サーバー2ディスク内)
ボリューム
② 情報を同期
(ファイルコピー)
ボリューム
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
2.中~大規模環境構築に必要なこと(今回の想定環境)
今回の環境を作成するための流れ
10 / 41 ページ
■Azure(クラウド・インフラ)側での構成
①リソースグループ(グループ化と配置地域)の用意
②可用性セット(障害時の切り替えグループ)の用意
③仮想ネットワーク(IPアドレス、仮想NIC)の用意
④仮想マシン用のディスクの用意
⑤Moodleサーバー用の仮想マシンを用意
⑥ロードバランサーを用意
■Moodleサーバー(仮想マシン)側での構成
① レポジトリの整理、最新アップデート
② Apache(2.4)、PHP(7.1)のインストールと構成
③ MariaDB Galera Cluster のインストールと構成
④ GlusterFS のインストールと構成
⑤ Moodleの最新版のダウンロードと設定、DB作成
⑥ Webブラウザ経由にてMoodleのインストール
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
Microsoft Azureについて
■そもそも Azure って?
https://azure.microsoft.com/ja-jp/
Microsoft社が提供するクラウドサービス。課金単位が細かい(時間単位)
モバイルファースト+クラウドファーストのためのプラットフォーム
(補足)AWS(Amazon Web Service)は構築事例も多いため、
今回はMicrosoft Azureに絞って紹介いたします。
11 / 41 ページ
管理ポータル
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
①リソースグループ(グループ化と配置地域)の用意
12 / 41 ページ
■リソースグループ
・1つのサーバーやアプリケーションを構成する要素を集めたグループ
・配置する場所(世界のデータセンター・リージョン)も指定する
世界中にデータセンターがある
(日本だと東日本と西日本)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■可用性セット
・障害ドメイン(物理グループ)と更新ドメイン(アップデートグループ)
・複数のサーバーが同時にダウンしたりアップデートしないように分割する
・構成を変更するのが大変なことが多いので、最初に定義しておくことが重要
3. Microsoft Azure(クラウドサービス)の構成例
②可用性セット(障害時の切り替えグループ)の用意
13 / 41 ページ
これ以降は、①で作成した
リソースグループを常に指定する
障害ドメインと更新ドメインの
分割数は自由にできるが、
仮想マシンなどの関連付けは
作成時しかできない
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■仮想ネットワーク
・クラウド上にプライベートなネットワークやサブネットを定義できる
・仮想マシンなどを配置する場所になる
・後でネットワークやサブネットの範囲は変更できないので、最初の設計が重要
3. Microsoft Azure(クラウドサービス)の構成例
③仮想ネットワーク(IPアドレス、仮想NIC)の用意
14 / 41 ページ
アドレス空間には、10.0.0.0/8や
172.16.0.0/12などのネットワーク範囲を指定する
仮想マシンでNICを2枚利用する場合は
少なくともサブネットが2つ必要
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■ネットワークセキュリティグループ
・ネットワークセキュリティグループ=ファイアウォール(アクセス遮断)
・不要なポートは開かない(今回の例ではHTTP、HTTPS、SSHのみ)
15 / 41 ページ
3. Microsoft Azure(クラウドサービス)の構成例
③仮想ネットワーク(IPアドレス、仮想NIC)の用意
受信規則(外からのアクセス)と
送信規則(外へのアクセス)を定義する
SSHを許可する設定
(上記はあまり推奨されない)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■IPアドレス、仮想NIC(ネットワークカード)
・インターネット用のIPアドレス(グローバルIP)は定義が必要
・仮想マシンに接続する仮想のネットワークカードも構成要素の1つ
3. Microsoft Azure(クラウドサービス)の構成例
③仮想ネットワーク(IPアドレス、仮想NIC)の用意
16 / 41 ページ
パグリックIPアドレスは
動的にすると無料で利用できる
仮想マシンではIPアドレスの設定はしない
Azure側でIPアドレスを定義し、仮想マシンでは
Azure提供のDHCPにてIPアドレスを設定する
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■ストレージアカウント、管理ディスク
・ストレージアカウントは仮想HDDやファイルなどを置くための場所
・管理ディスクは細かな設定や管理が不要な仮想HDD
17 / 41 ページ
管理ディスクは磁気ディスク(HDD)とSSDから選択できる。
ディスクサイズが大きくなるほど、IOPSがUPする。
ストレージアカウントは、仮想HDDを置く以外にも
起動や診断ログとしても必要となる場合がある。
(情報収集の保存先として利用される)
3. Microsoft Azure(クラウドサービス)の構成例
④仮想マシン用のディスクの用意
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
⑤Moodleサーバー用の仮想マシンを用意
■作成する仮想マシンの種類
・あらかじめ用意されたイメージ(テンプレート)から、目当てのOSを探す
・今回はCentOSで検索し、OpenLogicのCentOS 7.4を利用
18 / 41 ページ
該当のイメージを選択したら、次に進むWindowsOS(Windows Server や開発・
検証用のWindows10)やLinux(CentOS、
RHEL、Ubuntuなど「)が用意されている。
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
⑤Moodleサーバー用の仮想マシンを用意
■仮想マシンの基本構成とサイズの選択
・仮想マシンの名前やアカウントを決める(後から名前の変更は困難)
・サイズは1ヵ月(1日24時間×30日)利用の場合の費用。
(料金は料金計算ツールなどであらかじめ計算しておくとよいです)
19 / 41 ページ
サーバーのサイズは極少~極大まである
(間違って選択しないように注意)
仮想マシンの基本設定
(ここで指定したユーザー名がSSHのログイン名になる)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■可用性とディスク、ネットワークの設定
・ここで可用性セットを指定することが必須(あとから設定できません)
また、GUIではディスクやネットワークの細かな指定ができない
3. Microsoft Azure(クラウドサービス)の構成例
⑤Moodleサーバー用の仮想マシンを用意
20 / 41 ページ
ここで設定したOSディスクは自動的に名前がセットされる。仮想NICも同様
⇒ その為、テンプレートを使った作成方法をお勧めします
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
⑤Moodleサーバー用の仮想マシンを用意
■仮想マシン作成後のリソースとテンプレート
・GUIで作るとリソース名は適当に名前がつけられてしまう
・名前なども意図したものを利用したい場合は、テンプレートを活用
21 / 41 ページ
テンプレートを使って仮想マシンを
素早く作成する方法が良い
リソースの名前(OSディスクやネットワークインターフェイス)は
独自の名前が付与されてしまう
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
⑥ロードバランサーを用意
■ロードバランサーを用意
・ロードバランサーに設定したパブリックIPアドレス=MoodleサイトのURLになる
・バックエンドプール(振り分け先)には、ここまでで作成した仮想マシンを指定
22 / 41 ページ
可用性セットに含めた仮想マシン同士で
振り分けをおこなうことができる
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
⑥ロードバランサーを用意
■ロードバランサーを用意
・正常性プローブ(監視方法)の設定は、Moodleの場合HTTPではうまくいかない
ので、TCP 80で指定する
・負荷分散規則はHTTP(80)、HTTPS(443)を設定する
23 / 41 ページ
間隔5秒、しきい値2
⇒ 5秒間に1回チェック、2回連続でエラーになったら
そのサーバーは使えないと判断(つまり10秒)
負荷分散規則: 振り分けるサーバーの指定が無い場合
NAT: ポートごとに振り分けるサーバーを固定する場合
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
3. Microsoft Azure(クラウドサービス)の構成例
リソース一覧(参考)
24 / 41 ページ
名前 種類 補足
moot2018-rs 可用性セット
moot2018disk ストレージアカウント 動作ログなどを記録するため
moot2018-ip パブリックIPアドレス 固定(有料、IP変更せず)
moot2018-nlb ロードバランサー
moot2018-nsg ネットワークセキュリティグループ
moot2018-sv1 仮想マシン1
moot2018-sv1-ip 仮想マシン1のグローバルIPアドレス 動的(無料、再起動でIP変更)
moot2018-sv1-nic1 仮想マシン1のNICカード1枚目 172.16.1.11
moot2018-sv1-nic2 仮想マシン1のNICカード2枚目 172.16.2.11
moot2018-sv1-osdisk 仮想マシン1のディスク 今回はディスク1つ(OS)のみ
moot2018-sv2 仮想マシン2
moot2018-sv2-ip 仮想マシン2のグローバルIPアドレス 動的(無料、再起動でIP変更)
moot2018-sv2-nic1 仮想マシン2のNICカード1枚目 172.16.1.12
moot2018-sv2-nic2 仮想マシン2のNICカード2枚目 172.16.2.12
moot2018-sv2-osdisk 仮想マシン2のディスク 今回はディスク1つ(OS)のみ
moot2018-vnet 仮想ネットワーク サブネット defaultとdefault2
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
Azure構成後のMoodleサーバーでの作業
■Moodleサーバーへのアクセス方法
各サーバーに設定したグローバルIPアドレス(とDNS名)に対して
SSHで接続する(TeraTermなど)
25 / 41 ページ
仮想マシンに関連づいたグローバルIPアドレス
(または、設定した名前)に対してSSHでアクセスする
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
① レポジトリの整理、最新アップデート
■Yumのレポジトリ整備と最新化
2018/2/21時点でのCentOS 7.4ではPHPやMariaDBのバージョンが5など
構成が古い(安定板)ため、レポジトリを最新化する
[コマンド例]
PHP関連を含めたレポジトリを追加する
sudo yum install epel-release
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
MariaDBの独自のレポジトリを追加する
sudo vi /etc/yum.repos.d/mariadb.repo
# MariaDB 10.1 CentOS repository list - created 2016-01-06 10:34 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1
パッケージを最新化
sudo yum update
26 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
② Apache(2.4)、PHP(7.1)のインストールと構成
■ApacheとPHPのインストール
Apacheは2.4とPHPは7.1をインストールする
Moodleで必要なPHPの拡張機能も同時にインストールする
[コマンド例]
ApacheとSSL、PHPモジュールのインストール
sudo yum install --enablerepo=remi-php71,epel httpd httpd-devel mod_ssl mod_php
PHPの拡張機能(Moodleで利用)のインストール
sudo yum install --enablerepo=remi-php71,epell php71 php71-devel php71-pdo
php71-mysqli php71-xml php71-intl php71-ldap php71-gd php71-mbstring
php71-xmlrpc php71-soap php71-opcache php71-zip php71-pear php71-process
Apacheを自動起動に設定し、起動
sudo systemctl enable httpd.service
sudo systemctl start httpd
SELinuxの無効化(詳細な設定をする場合は、無効化の必要はありません)
sudo vi /etc/selinux/config
⇒ SELINUX=enforcing を SELINUX=permissive に変更
sudo setenforce 0
27 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
■MariaDB Galera Cluster のインストールと構成
MariaDBのレポジトリを用意しMariaDB Galera Cluster をインストール
インストール後に/etc/my.cnf.d/server.cnf を修正しクラスタの設定をおこなう
[コマンド例]
MariaDB Galera Cluster のインストール
sudo yum install MariaDB-server MariaDB-client
MariaDB Galera Cluster の設定
vi /etc/my.cnf.d/server.cnf
4. Moodle(Linux上のミドルウェア)の構成例
③ MariaDB Galera Cluster のインストールと構成1
28 / 41 ページ
[設定箇所]
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
[galera]
wsrep_on=ON
binlog_format=row
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://
# wsrep_cluster_address=gcomm://172.16.2.11,172.16.2.12
wsrep_sst_method=rsync
wsrep_node_address=172.16.2.11
log-error=error.log
~ポイント~
初回の起動(最初の1台)の場合は
「wsrep_cluster_address=gcomm://」と記載
2台目(または最初の1台であっても、他のサーバーが
稼働している場合)は「wsrep_cluster_address=
gcomm://172.16.2.11,172.16.2.12」
(IPアドレスは稼働させるサーバーのものをカンマで区切る)
と記載する
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
③ MariaDB Galera Cluster のインストールと構成2
■MariaDB Galera Cluster の起動
最初に起動する際にクラスタを生成する指示を与え、
それ以降・他サーバーは通常のMySQL(MariaDB)の起動と同じ
[コマンド例]
自動起動の設定
sudo systemctl enable mariadb.service
新しくクラスタを作成
sudo service mysql start --wsrep-new-cluster
2台目以降の起動
sudo service mysql start
全サーバーダウンの後などで1台目を立ち上げる場合
sudo service mysql start --wsrep-cluster-address='gcomm://'
29 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
④ GlusterFS のインストールと構成
■ GlusterFS のインストールと構成
GlusterFS のベース(CentOS版)をインストールしてから
最新のGlusterFsをインストールする
[コマンド例]
GlusterFsをインストールする
sudo yum install centos-release-gluster
sudo yum install glusterfs-server
自動起動の設定と起動
sudo systemctl enable glusterd.service
sudo systemctl start glusterd.service
共有先のディレクトリを作っておく(本来は別ディスクを用意し、パーティションをルートと分ける)
sudo mkdir /data
sudo mkdir /data/brick1
sudo mkdir /data/moodle
30 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
④ GlusterFS のインストールと構成
■ GlusterFS の構成
共有するサーバーを登録し、またファイルを共有するためのボリュームを作成します。
ボリュームを開始したら、ネットワークディスクと同じようにマウントします。
[コマンド例]
別のサーバーと信頼関係を結ぶ(どちらから実施してもOK、相手側も起動が必要)
sudo gluster peer probe 172.16.2.11
sudo gluster peer probe 172.16.2.12
ボリュームを作成し、開始する
sudo gluster volume create moodle replica 2
172.16.2.11:/data/brick1/moodle 172.16.2.12:/data/brick1/moodle force
sudo gluster volume start moodle
ボリュームをマウントする
sudo mount -t glusterfs localhost:moodle /data/moodle
マウントした場所に、MoodleData用のフォルダを作る
sudo mkdir /data/moodle/moodledata/moot2018/
sudo chown apache:apache /data/moodle/moot2018/moodledata
sudo chmod 777 /data/moodle/moot2018/moodledata
31 / 41 ページ
~ポイント~
replica 2 というのは2台のサーバーで
ミラーリング構成という意味になります。
後から addコマンドでサーバー追加も可能
※GlusterFSは通常 OSのパーティションに
共有を作ることを推奨していないため、
force オプションを指定しています
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
⑤ Moodleの最新版のダウンロードと設定、DB作成
■ Moodle用データベースの作成
ここからは通常のMoodleインストールです。
[コマンド例]
Moodle用DBの作成
mysql –u root –p
>create database moot2018_db character set utf8mb4;
> grant all privileges on moot2018_db.* to moot2018_user@localhost
identified by 'password’;
> flush privileges;
>q
Moodleプログラム本体のダウンロード
cd
wget https://download.moodle.org/download.php/direct/stable34/moodle-latest-34.tgz
tar xfz moodle-latest-34.tgz
sudo cp -r ./moodle/* /var/www/html/
32 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
⑤ Moodleの最新版のダウンロードと設定、DB作成
■ Moodle用データベースの作成
ここからは通常のMoodleインストールです。
[コマンド例]
コンフィグファイルの設定
sudo cp /var/www/html/config-dist.php /var/www/html/config.php
sudo vi /var/www/html/config.php
33 / 41 ページ
[設定箇所]
$CFG->dbtype = 'mariadb’;
$CFG->dbhost = 'localhost‘;
$CFG->dbname = ‘moot2018_db‘;
$CFG->dbuser = ‘moot2018_user';
$CFG->dbpass = ‘password’;
$CFG->wwwroot = 'http://moot2018-demo.southeastasia.cloudapp.azure.com‘;
$CFG->dataroot = '/data/moodle/moot2018/moodledata';
~ポイント~
データベースは各サーバー(localhost)の
MariaDB Galera Cluster を指定する
(特定のサーバーの指定が不要)
wwwRootは、ロードバランサーのグローバル
IPアドレスの場所、dataRootはGlusterFS
で用意した場所(マウントした場所)を指定
する
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
4. Moodle(Linux上のミドルウェア)の構成例
⑥ Webブラウザ経由にてMoodleのインストール
■ Webブラウザでのインストール作業
ロードバランサーのIPアドレスにWebブラウザでアクセスしインストール
34 / 41 ページ
クラスタ環境では
セットアップは推奨されて
いないようだが、問題なく
インストールできる
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
5.ロードバランサーとクラスタリングの動作確認
ロードバランサーの振り分け確認1
■ Moodleサーバーをテーマを修正して区別
/theme/boost/template/header.mustache をサーバー別に修正
目印のタグを記載する(アップロードも別々に)
35 / 41 ページ
Moodle サーバー1 Moodle サーバー2
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
5.ロードバランサーとクラスタリングの動作確認
ロードバランサーの振り分け確認2
■ Webブラウザでアクセスして確認
ロードバランサーのIPアドレス(moot2018-demo…)にアクセスして
どちらのサーバーに接続されているかを確認、サーバーを止めて
さらに別のサーバーに接続されることを確認
36 / 41 ページ
サーバー1が見えている。サーバー1のApacheを停止
sudo systemctl stop httpd
サーバー1が停止すると、サーバー2に振り分けられる
(2台とも停止すると、ページが表示されなくなる)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
5.ロードバランサーとクラスタリングの動作確認
MariaDB Galera ClusterとGlusterFS の動作確認
■ コンソールでデータベースを作成して確認
MySQLコマンドでデータベースを作成して確認
37/ 41 ページ
Moodle サーバー1 Moodle サーバー2
●現在のサーバー数の確認の方法
MariaDB > SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size’;
⇒ wsrep_cluster_size が 2 と表示される
※ show status like ‘wsrep_%‘; で関連する情報を表示
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
5.ロードバランサーとクラスタリングの動作確認
MariaDB Galera ClusterとGlusterFS の動作確認
■ コンソールでファイルを作成して確認
MySQLコマンドでデータベースを作成して確認
38 / 41 ページ
Moodle サーバー1 Moodle サーバー2
●現在のサーバーの状態、同期状況の確認方法
sudo gluster peer status
sudo gluster pool list
⇒ サーバー間の接続状況の表示
sudo gluster volume info
sudo gluster volume status moodle
⇒ ボリュームの状態を表示
サーバー2でファイルを作ると
サーバー1にファイルが複製
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
● 今回は仮想マシンを手動で作成したが、ディスクの内容を
コピーするなどして、より簡単に複製ができ、運用しやすい。
(仮想マシンのスケールセットなども今後は検証したい)
● MariaDB Galera Clusterは運用実績も多く安定している。
障害時(全部のサーバーがダウンしたときなど)の対応は十分な検証が必要。
(AzureではMariaDBのPaaSもあるので、そちらを検討したい)
● GlusterFSでMoodleDataを扱うことはできるが、キャッシュ系の
データは大量の細かなファイルを生成しているため、場合により適さない?
障害時の対応の検証が必要(特にSplit-Brainの場合)
■Microsoft Azureを利用した複数台Moodleについて
クラウドでの大規模Moodleの構築方法とモデルケース
6.おわりに
39 / 41 ページ
今回の構築例は、いくつかあるパターンの1つです。
参考として紹介させて頂いた方法を実運用される際は
十分な検証をおこなってから、ご利用ください。
×
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
moot期間中は展示ブース&達人コーナーにおります。
お気軽にお声をおかけください。
Raspberry Pi を使ったMoodleのデモも
用意しています。ご興味があればお立ち寄り下さい。
ご清聴ありがとうございました
●本件に関するお問い合わせ●
株式会社テクノウォーカー
http://www.twalker.co.jp
問い合わせ先: sol@twalker.co.jp 03-5155-1830(東京)
システム企画部
担当:山岡 茂治 s-yamaoka@twalker.co.jp
10th Conference for Moodle Teachers and Developers
Moodle moot japan 2018
40 / 41 ページ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
10th Conference for Moodle Teachers and Developers
10th Conference for Moodle Teachers and Developers
Moodle moot japan 2018
■参考出典元・著作物利用
● Moodle.org(Moodle公式サイト)http://moodle.org/
ロゴの利用。
● 日本マイクロソフト株式会社様 http://www.microsoft.com/ja-jp/
ロゴ、Azureアイコン(無料ダウンロード)の利用。
https://www.microsoft.com/en-us/download/details.aspx?id=41937
● MariaDB Foundation 様 https://mariadb.org/
製品の紹介とロゴの利用。
● Red Hat, Inc.様 https://www.gluster.org/
製品の紹介とロゴの利用。
● いらすとや様(かわいいフリー素材集) http://www.irasutoya.com/
スカイツリー、東京駅、その他かわいいイラストをお借りしました。
※記載されている会社名、製品名、ロゴ等は各社の登録商標または商標です。
41 / 41 ページ

More Related Content

What's hot

PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
NTT DATA OSS Professional Services
 
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオActive Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
junichi anno
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
Yuya Rin
 
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディCisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
シスコシステムズ合同会社
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
 
大昔のMMU
大昔のMMU大昔のMMU
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
shunki fujiwara
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
Narichika Kajihara
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
uchan_nos
 
Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Etsuji Nakai
 
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
Kuniharu(州晴) AKAHANE(赤羽根)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
Etsuji Nakai
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
Hideki Takase
 

What's hot (20)

PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオActive Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
 
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディCisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
Cisco Connect Japan 2014:高密度環境におけるシスコ無線デザイン ケース スタディ
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
大昔のMMU
大昔のMMU大昔のMMU
大昔のMMU
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0
 
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 

Similar to クラウドでの大規模Moodleの構築方法とモデルケース

【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
日本マイクロソフト株式会社
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
Yoshitaka Seo
 
How to walk_on_windows_azure_platform
How to walk_on_windows_azure_platformHow to walk_on_windows_azure_platform
How to walk_on_windows_azure_platform
Yoshida Yuri
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita
 
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
オラクルエンジニア通信
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
Tsukasa Kato
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source Conference
Microsoft
 
20130604 tf vdi-osamut
20130604 tf vdi-osamut20130604 tf vdi-osamut
20130604 tf vdi-osamut
datestar200x
 
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
日本マイクロソフト株式会社
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
Preferred Networks
 
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio KumazawaInsight Technology, Inc.
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
GoAzure
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developersfumios
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプ
Tech Summit 2016
 
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
Shigeharu Yamaoka
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
ShuheiUda
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tipsMasayuki Ozawa
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Masayuki Ozawa
 
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
Insight Technology, Inc.
 

Similar to クラウドでの大規模Moodleの構築方法とモデルケース (20)

【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
How to walk_on_windows_azure_platform
How to walk_on_windows_azure_platformHow to walk_on_windows_azure_platform
How to walk_on_windows_azure_platform
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
 
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
Cloudera World Tokyo 2015 Oracleセッション資料 「ビッグデータ/IoTの最新事例とHadoop活用の勘所」
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source Conference
 
20130604 tf vdi-osamut
20130604 tf vdi-osamut20130604 tf vdi-osamut
20130604 tf vdi-osamut
 
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
【de:code 2020】 IT インフラをモダナイズ?今、検討すべきクラウドの活用方法
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
PHP on Windows Azure Training
PHP on Windows Azure TrainingPHP on Windows Azure Training
PHP on Windows Azure Training
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプ
 
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tips
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
 
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
 

クラウドでの大規模Moodleの構築方法とモデルケース

  • 1. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ~ Commercial Presentation ~ クラウドでの大規模Moodleの 構築方法とモデルケース 10th Conference for Moodle Teachers and Developers Moodle moot japan 2018 Microsoft Azureを利用した 複数台Moodleの構成紹介(40分) Time: 2018.2.23 10:10-10:50 Room: 1405 株式会社テクノウォーカー 山岡 茂治
  • 2. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 発表内容 –Agenda- (40分) • Microsoft Azureを利用した複数台Moodleの構成紹介 1. はじめに • ごあいさつ、本日のテーマ 2. 中~大規模環境構築に必要なこと(今回の想定環境) • Azure(クラウド)側とMoodleサーバー(仮想マシン)側の構成 3. Microsoft Azure(クラウドサービス)の構成例 • 各種リソースの作成、仮想マシン、ロードバランサーの設定 4. Moodle(Linux上のミドルウェア)の構成例 • データベースとファイルのクラスタの構成とMoodleのインストール 5. ロードバランサーとクラスタリングの動作確認 • ロードバランサーやクラスタの動きを確認します 6. おわりに • まとめ、ごあいさつ、質疑応答 Page. 2 2 / 41 ページ
  • 3. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■ごあいさつ 弊社「テクノウォーカー」はシステム開発・構築+教育の会社です。 ⇒ SE教育や本の執筆をしており、その過程でLMS=Moodleに触れました クラウドでの大規模Moodleの構築方法とモデルケース 1. はじめに 3 / 41 ページ ■本日のテーマ Microsoft Azureを利用した複数台Moodleの構成紹介 ● Microsoft Azure の構成例 ● Moodle(ミドルウェア)の構成例 ● 実際の運用ケース ×
  • 4. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) 中~大規模環境構築に必要なこと 4 / 41 ページ ■求められる要件 可用性(かようせい、英:Availability; アベイラビリティ)は、 システムが継続して稼働できる能力のこと。 可用性に信頼性・ 保守性を含めたものをRAS、更に保全性・安全性を含めたものを RASISという。(wikipediaより) 利用者が多くても、データが増えても 遅くならない・ 止まらないというシステム (特に学校の場合、テスト中はクリティカルです) 1台のサーバーでは限界があるので、複数のサーバーで 運用するのが一般的。Moodleではどうなる???
  • 5. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) 今回の想定環境(シンプルに書くと…) ■今回作成する構成 5 / 41 ページ Microsoft Azure クラウド ロードバランサー (振り分け) この部分を同期します 利用者 Moodleサーバー1 Moodle本体 (Apache) DBデータ (MariaDB) MoodleData (ファイル) Moodleサーバー2 Moodle本体 (Apache) DBデータ (MariaDB) MoodleData (ファイル) ファイアウォール (セキュリティ) 管理者
  • 6. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) 今回の想定環境(もう少し細かく) ■今回作成する構成 6 / 41 ページ Moodle本体 (Apache 2.4) DBデータ Microsoft Azure クラウド(東日本リージョン) Azure Load Balancer ネットワーク セキュリティグループ Azure Storage (管理ディスク) moot2018-demo .southeastasia.cloudapp .azure.com へアクセス 利用者 ※デモでは東南アジアにて構築しています http・https のみ通過 サーバーの応答によって クライアントIPごとに振り分け 仮想のHDD SSD(冗長化済) Moodle Data Moodle本体 (Apache 2.4) DBデータ Moodle Data Moodleサーバー1(CentOS 7.4) Moodleサーバー2(CentOS 7.4) 分散型のクラスタ構成 MoodleData(ファイル) ⇒ Gluster FS DBデータ ⇒ MariaDB Galera Cluster 仮想マシン 仮想マシン
  • 7. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) Moodleの構成要素と必要な要件 ■Moodleの構成要素と更新頻度・同期の必要性 7 / 41 ページ 構成要素 更新頻度 同期の必要性 Moodle本体 (PHPプログラム etc) プラグインの導入やバージョン アップ以外は基本発生しない 必要な時のみ同期すれば良い (手動でもできなくはない) DB内のデータ (DBシステムに格納) Moodleの様々な情報を常に更新 している、参照も当然多い 常に同期を取る必要がある MoodleData (ファイルシステム) アップロードされたファイルや 各種キャッシュなどを必要に 応じて更新 常に同期を取る必要がある (一部除く)
  • 8. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■DB内のデータの同期方法 MariaDB Galera Cluster ・MariaDB(MySQLから派生したオープンソースのDB)の1つの形態 ・他のDB製品に比べクラスタの構成が簡単 ・全てマスターとして動作する(特定のDBにUPDATEが必要ない) 8 / 41 ページ wsrep MariaDB wsrep MariaDB wsrep MariaDB Moodle (サーバー1) Moodle (サーバー2) Moodle (サーバー3) ① 書き込み (SQL) ② 情報を 同期(SQL) ② 情報を 同期(SQL) Galera レプリケーション (同期の仕組み) 2.中~大規模環境構築に必要なこと(今回の想定環境) Moodleのデータ同期方法1
  • 9. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) Moodleのデータ同期方法2 ■MoodleDataの同期方法 GlusterFS (今回はレプリカ構成を使用) ・RedHat社から提供される分散ファイルシステム ・他の分散ファイルシステムに比べ構成が簡単で分かりやすい ・ブリック上に用意されたボリュームをマウントして利用する 9 / 41 ページ Moodle (サーバー1) ① 書き込み (ファイルなど) マウント (接続) Moodle (サーバー2) GlusterFS(複数台で構成) Brick ブリック (サーバー1ディスク内) Brick ブリック (サーバー2ディスク内) ボリューム ② 情報を同期 (ファイルコピー) ボリューム
  • 10. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 2.中~大規模環境構築に必要なこと(今回の想定環境) 今回の環境を作成するための流れ 10 / 41 ページ ■Azure(クラウド・インフラ)側での構成 ①リソースグループ(グループ化と配置地域)の用意 ②可用性セット(障害時の切り替えグループ)の用意 ③仮想ネットワーク(IPアドレス、仮想NIC)の用意 ④仮想マシン用のディスクの用意 ⑤Moodleサーバー用の仮想マシンを用意 ⑥ロードバランサーを用意 ■Moodleサーバー(仮想マシン)側での構成 ① レポジトリの整理、最新アップデート ② Apache(2.4)、PHP(7.1)のインストールと構成 ③ MariaDB Galera Cluster のインストールと構成 ④ GlusterFS のインストールと構成 ⑤ Moodleの最新版のダウンロードと設定、DB作成 ⑥ Webブラウザ経由にてMoodleのインストール
  • 11. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 Microsoft Azureについて ■そもそも Azure って? https://azure.microsoft.com/ja-jp/ Microsoft社が提供するクラウドサービス。課金単位が細かい(時間単位) モバイルファースト+クラウドファーストのためのプラットフォーム (補足)AWS(Amazon Web Service)は構築事例も多いため、 今回はMicrosoft Azureに絞って紹介いたします。 11 / 41 ページ 管理ポータル
  • 12. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ①リソースグループ(グループ化と配置地域)の用意 12 / 41 ページ ■リソースグループ ・1つのサーバーやアプリケーションを構成する要素を集めたグループ ・配置する場所(世界のデータセンター・リージョン)も指定する 世界中にデータセンターがある (日本だと東日本と西日本)
  • 13. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■可用性セット ・障害ドメイン(物理グループ)と更新ドメイン(アップデートグループ) ・複数のサーバーが同時にダウンしたりアップデートしないように分割する ・構成を変更するのが大変なことが多いので、最初に定義しておくことが重要 3. Microsoft Azure(クラウドサービス)の構成例 ②可用性セット(障害時の切り替えグループ)の用意 13 / 41 ページ これ以降は、①で作成した リソースグループを常に指定する 障害ドメインと更新ドメインの 分割数は自由にできるが、 仮想マシンなどの関連付けは 作成時しかできない
  • 14. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■仮想ネットワーク ・クラウド上にプライベートなネットワークやサブネットを定義できる ・仮想マシンなどを配置する場所になる ・後でネットワークやサブネットの範囲は変更できないので、最初の設計が重要 3. Microsoft Azure(クラウドサービス)の構成例 ③仮想ネットワーク(IPアドレス、仮想NIC)の用意 14 / 41 ページ アドレス空間には、10.0.0.0/8や 172.16.0.0/12などのネットワーク範囲を指定する 仮想マシンでNICを2枚利用する場合は 少なくともサブネットが2つ必要
  • 15. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■ネットワークセキュリティグループ ・ネットワークセキュリティグループ=ファイアウォール(アクセス遮断) ・不要なポートは開かない(今回の例ではHTTP、HTTPS、SSHのみ) 15 / 41 ページ 3. Microsoft Azure(クラウドサービス)の構成例 ③仮想ネットワーク(IPアドレス、仮想NIC)の用意 受信規則(外からのアクセス)と 送信規則(外へのアクセス)を定義する SSHを許可する設定 (上記はあまり推奨されない)
  • 16. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■IPアドレス、仮想NIC(ネットワークカード) ・インターネット用のIPアドレス(グローバルIP)は定義が必要 ・仮想マシンに接続する仮想のネットワークカードも構成要素の1つ 3. Microsoft Azure(クラウドサービス)の構成例 ③仮想ネットワーク(IPアドレス、仮想NIC)の用意 16 / 41 ページ パグリックIPアドレスは 動的にすると無料で利用できる 仮想マシンではIPアドレスの設定はしない Azure側でIPアドレスを定義し、仮想マシンでは Azure提供のDHCPにてIPアドレスを設定する
  • 17. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■ストレージアカウント、管理ディスク ・ストレージアカウントは仮想HDDやファイルなどを置くための場所 ・管理ディスクは細かな設定や管理が不要な仮想HDD 17 / 41 ページ 管理ディスクは磁気ディスク(HDD)とSSDから選択できる。 ディスクサイズが大きくなるほど、IOPSがUPする。 ストレージアカウントは、仮想HDDを置く以外にも 起動や診断ログとしても必要となる場合がある。 (情報収集の保存先として利用される) 3. Microsoft Azure(クラウドサービス)の構成例 ④仮想マシン用のディスクの用意
  • 18. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ⑤Moodleサーバー用の仮想マシンを用意 ■作成する仮想マシンの種類 ・あらかじめ用意されたイメージ(テンプレート)から、目当てのOSを探す ・今回はCentOSで検索し、OpenLogicのCentOS 7.4を利用 18 / 41 ページ 該当のイメージを選択したら、次に進むWindowsOS(Windows Server や開発・ 検証用のWindows10)やLinux(CentOS、 RHEL、Ubuntuなど「)が用意されている。
  • 19. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ⑤Moodleサーバー用の仮想マシンを用意 ■仮想マシンの基本構成とサイズの選択 ・仮想マシンの名前やアカウントを決める(後から名前の変更は困難) ・サイズは1ヵ月(1日24時間×30日)利用の場合の費用。 (料金は料金計算ツールなどであらかじめ計算しておくとよいです) 19 / 41 ページ サーバーのサイズは極少~極大まである (間違って選択しないように注意) 仮想マシンの基本設定 (ここで指定したユーザー名がSSHのログイン名になる)
  • 20. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■可用性とディスク、ネットワークの設定 ・ここで可用性セットを指定することが必須(あとから設定できません) また、GUIではディスクやネットワークの細かな指定ができない 3. Microsoft Azure(クラウドサービス)の構成例 ⑤Moodleサーバー用の仮想マシンを用意 20 / 41 ページ ここで設定したOSディスクは自動的に名前がセットされる。仮想NICも同様 ⇒ その為、テンプレートを使った作成方法をお勧めします
  • 21. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ⑤Moodleサーバー用の仮想マシンを用意 ■仮想マシン作成後のリソースとテンプレート ・GUIで作るとリソース名は適当に名前がつけられてしまう ・名前なども意図したものを利用したい場合は、テンプレートを活用 21 / 41 ページ テンプレートを使って仮想マシンを 素早く作成する方法が良い リソースの名前(OSディスクやネットワークインターフェイス)は 独自の名前が付与されてしまう
  • 22. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ⑥ロードバランサーを用意 ■ロードバランサーを用意 ・ロードバランサーに設定したパブリックIPアドレス=MoodleサイトのURLになる ・バックエンドプール(振り分け先)には、ここまでで作成した仮想マシンを指定 22 / 41 ページ 可用性セットに含めた仮想マシン同士で 振り分けをおこなうことができる
  • 23. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 ⑥ロードバランサーを用意 ■ロードバランサーを用意 ・正常性プローブ(監視方法)の設定は、Moodleの場合HTTPではうまくいかない ので、TCP 80で指定する ・負荷分散規則はHTTP(80)、HTTPS(443)を設定する 23 / 41 ページ 間隔5秒、しきい値2 ⇒ 5秒間に1回チェック、2回連続でエラーになったら そのサーバーは使えないと判断(つまり10秒) 負荷分散規則: 振り分けるサーバーの指定が無い場合 NAT: ポートごとに振り分けるサーバーを固定する場合
  • 24. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 3. Microsoft Azure(クラウドサービス)の構成例 リソース一覧(参考) 24 / 41 ページ 名前 種類 補足 moot2018-rs 可用性セット moot2018disk ストレージアカウント 動作ログなどを記録するため moot2018-ip パブリックIPアドレス 固定(有料、IP変更せず) moot2018-nlb ロードバランサー moot2018-nsg ネットワークセキュリティグループ moot2018-sv1 仮想マシン1 moot2018-sv1-ip 仮想マシン1のグローバルIPアドレス 動的(無料、再起動でIP変更) moot2018-sv1-nic1 仮想マシン1のNICカード1枚目 172.16.1.11 moot2018-sv1-nic2 仮想マシン1のNICカード2枚目 172.16.2.11 moot2018-sv1-osdisk 仮想マシン1のディスク 今回はディスク1つ(OS)のみ moot2018-sv2 仮想マシン2 moot2018-sv2-ip 仮想マシン2のグローバルIPアドレス 動的(無料、再起動でIP変更) moot2018-sv2-nic1 仮想マシン2のNICカード1枚目 172.16.1.12 moot2018-sv2-nic2 仮想マシン2のNICカード2枚目 172.16.2.12 moot2018-sv2-osdisk 仮想マシン2のディスク 今回はディスク1つ(OS)のみ moot2018-vnet 仮想ネットワーク サブネット defaultとdefault2
  • 25. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 Azure構成後のMoodleサーバーでの作業 ■Moodleサーバーへのアクセス方法 各サーバーに設定したグローバルIPアドレス(とDNS名)に対して SSHで接続する(TeraTermなど) 25 / 41 ページ 仮想マシンに関連づいたグローバルIPアドレス (または、設定した名前)に対してSSHでアクセスする
  • 26. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ① レポジトリの整理、最新アップデート ■Yumのレポジトリ整備と最新化 2018/2/21時点でのCentOS 7.4ではPHPやMariaDBのバージョンが5など 構成が古い(安定板)ため、レポジトリを最新化する [コマンド例] PHP関連を含めたレポジトリを追加する sudo yum install epel-release sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm MariaDBの独自のレポジトリを追加する sudo vi /etc/yum.repos.d/mariadb.repo # MariaDB 10.1 CentOS repository list - created 2016-01-06 10:34 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=1 パッケージを最新化 sudo yum update 26 / 41 ページ
  • 27. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ② Apache(2.4)、PHP(7.1)のインストールと構成 ■ApacheとPHPのインストール Apacheは2.4とPHPは7.1をインストールする Moodleで必要なPHPの拡張機能も同時にインストールする [コマンド例] ApacheとSSL、PHPモジュールのインストール sudo yum install --enablerepo=remi-php71,epel httpd httpd-devel mod_ssl mod_php PHPの拡張機能(Moodleで利用)のインストール sudo yum install --enablerepo=remi-php71,epell php71 php71-devel php71-pdo php71-mysqli php71-xml php71-intl php71-ldap php71-gd php71-mbstring php71-xmlrpc php71-soap php71-opcache php71-zip php71-pear php71-process Apacheを自動起動に設定し、起動 sudo systemctl enable httpd.service sudo systemctl start httpd SELinuxの無効化(詳細な設定をする場合は、無効化の必要はありません) sudo vi /etc/selinux/config ⇒ SELINUX=enforcing を SELINUX=permissive に変更 sudo setenforce 0 27 / 41 ページ
  • 28. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ■MariaDB Galera Cluster のインストールと構成 MariaDBのレポジトリを用意しMariaDB Galera Cluster をインストール インストール後に/etc/my.cnf.d/server.cnf を修正しクラスタの設定をおこなう [コマンド例] MariaDB Galera Cluster のインストール sudo yum install MariaDB-server MariaDB-client MariaDB Galera Cluster の設定 vi /etc/my.cnf.d/server.cnf 4. Moodle(Linux上のミドルウェア)の構成例 ③ MariaDB Galera Cluster のインストールと構成1 28 / 41 ページ [設定箇所] [mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci skip-character-set-client-handshake [galera] wsrep_on=ON binlog_format=row wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm:// # wsrep_cluster_address=gcomm://172.16.2.11,172.16.2.12 wsrep_sst_method=rsync wsrep_node_address=172.16.2.11 log-error=error.log ~ポイント~ 初回の起動(最初の1台)の場合は 「wsrep_cluster_address=gcomm://」と記載 2台目(または最初の1台であっても、他のサーバーが 稼働している場合)は「wsrep_cluster_address= gcomm://172.16.2.11,172.16.2.12」 (IPアドレスは稼働させるサーバーのものをカンマで区切る) と記載する
  • 29. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ③ MariaDB Galera Cluster のインストールと構成2 ■MariaDB Galera Cluster の起動 最初に起動する際にクラスタを生成する指示を与え、 それ以降・他サーバーは通常のMySQL(MariaDB)の起動と同じ [コマンド例] 自動起動の設定 sudo systemctl enable mariadb.service 新しくクラスタを作成 sudo service mysql start --wsrep-new-cluster 2台目以降の起動 sudo service mysql start 全サーバーダウンの後などで1台目を立ち上げる場合 sudo service mysql start --wsrep-cluster-address='gcomm://' 29 / 41 ページ
  • 30. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ④ GlusterFS のインストールと構成 ■ GlusterFS のインストールと構成 GlusterFS のベース(CentOS版)をインストールしてから 最新のGlusterFsをインストールする [コマンド例] GlusterFsをインストールする sudo yum install centos-release-gluster sudo yum install glusterfs-server 自動起動の設定と起動 sudo systemctl enable glusterd.service sudo systemctl start glusterd.service 共有先のディレクトリを作っておく(本来は別ディスクを用意し、パーティションをルートと分ける) sudo mkdir /data sudo mkdir /data/brick1 sudo mkdir /data/moodle 30 / 41 ページ
  • 31. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ④ GlusterFS のインストールと構成 ■ GlusterFS の構成 共有するサーバーを登録し、またファイルを共有するためのボリュームを作成します。 ボリュームを開始したら、ネットワークディスクと同じようにマウントします。 [コマンド例] 別のサーバーと信頼関係を結ぶ(どちらから実施してもOK、相手側も起動が必要) sudo gluster peer probe 172.16.2.11 sudo gluster peer probe 172.16.2.12 ボリュームを作成し、開始する sudo gluster volume create moodle replica 2 172.16.2.11:/data/brick1/moodle 172.16.2.12:/data/brick1/moodle force sudo gluster volume start moodle ボリュームをマウントする sudo mount -t glusterfs localhost:moodle /data/moodle マウントした場所に、MoodleData用のフォルダを作る sudo mkdir /data/moodle/moodledata/moot2018/ sudo chown apache:apache /data/moodle/moot2018/moodledata sudo chmod 777 /data/moodle/moot2018/moodledata 31 / 41 ページ ~ポイント~ replica 2 というのは2台のサーバーで ミラーリング構成という意味になります。 後から addコマンドでサーバー追加も可能 ※GlusterFSは通常 OSのパーティションに 共有を作ることを推奨していないため、 force オプションを指定しています
  • 32. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ⑤ Moodleの最新版のダウンロードと設定、DB作成 ■ Moodle用データベースの作成 ここからは通常のMoodleインストールです。 [コマンド例] Moodle用DBの作成 mysql –u root –p >create database moot2018_db character set utf8mb4; > grant all privileges on moot2018_db.* to moot2018_user@localhost identified by 'password’; > flush privileges; >q Moodleプログラム本体のダウンロード cd wget https://download.moodle.org/download.php/direct/stable34/moodle-latest-34.tgz tar xfz moodle-latest-34.tgz sudo cp -r ./moodle/* /var/www/html/ 32 / 41 ページ
  • 33. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ⑤ Moodleの最新版のダウンロードと設定、DB作成 ■ Moodle用データベースの作成 ここからは通常のMoodleインストールです。 [コマンド例] コンフィグファイルの設定 sudo cp /var/www/html/config-dist.php /var/www/html/config.php sudo vi /var/www/html/config.php 33 / 41 ページ [設定箇所] $CFG->dbtype = 'mariadb’; $CFG->dbhost = 'localhost‘; $CFG->dbname = ‘moot2018_db‘; $CFG->dbuser = ‘moot2018_user'; $CFG->dbpass = ‘password’; $CFG->wwwroot = 'http://moot2018-demo.southeastasia.cloudapp.azure.com‘; $CFG->dataroot = '/data/moodle/moot2018/moodledata'; ~ポイント~ データベースは各サーバー(localhost)の MariaDB Galera Cluster を指定する (特定のサーバーの指定が不要) wwwRootは、ロードバランサーのグローバル IPアドレスの場所、dataRootはGlusterFS で用意した場所(マウントした場所)を指定 する
  • 34. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 4. Moodle(Linux上のミドルウェア)の構成例 ⑥ Webブラウザ経由にてMoodleのインストール ■ Webブラウザでのインストール作業 ロードバランサーのIPアドレスにWebブラウザでアクセスしインストール 34 / 41 ページ クラスタ環境では セットアップは推奨されて いないようだが、問題なく インストールできる
  • 35. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 5.ロードバランサーとクラスタリングの動作確認 ロードバランサーの振り分け確認1 ■ Moodleサーバーをテーマを修正して区別 /theme/boost/template/header.mustache をサーバー別に修正 目印のタグを記載する(アップロードも別々に) 35 / 41 ページ Moodle サーバー1 Moodle サーバー2
  • 36. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 5.ロードバランサーとクラスタリングの動作確認 ロードバランサーの振り分け確認2 ■ Webブラウザでアクセスして確認 ロードバランサーのIPアドレス(moot2018-demo…)にアクセスして どちらのサーバーに接続されているかを確認、サーバーを止めて さらに別のサーバーに接続されることを確認 36 / 41 ページ サーバー1が見えている。サーバー1のApacheを停止 sudo systemctl stop httpd サーバー1が停止すると、サーバー2に振り分けられる (2台とも停止すると、ページが表示されなくなる)
  • 37. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 5.ロードバランサーとクラスタリングの動作確認 MariaDB Galera ClusterとGlusterFS の動作確認 ■ コンソールでデータベースを作成して確認 MySQLコマンドでデータベースを作成して確認 37/ 41 ページ Moodle サーバー1 Moodle サーバー2 ●現在のサーバー数の確認の方法 MariaDB > SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size’; ⇒ wsrep_cluster_size が 2 と表示される ※ show status like ‘wsrep_%‘; で関連する情報を表示
  • 38. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 5.ロードバランサーとクラスタリングの動作確認 MariaDB Galera ClusterとGlusterFS の動作確認 ■ コンソールでファイルを作成して確認 MySQLコマンドでデータベースを作成して確認 38 / 41 ページ Moodle サーバー1 Moodle サーバー2 ●現在のサーバーの状態、同期状況の確認方法 sudo gluster peer status sudo gluster pool list ⇒ サーバー間の接続状況の表示 sudo gluster volume info sudo gluster volume status moodle ⇒ ボリュームの状態を表示 サーバー2でファイルを作ると サーバー1にファイルが複製
  • 39. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers ● 今回は仮想マシンを手動で作成したが、ディスクの内容を コピーするなどして、より簡単に複製ができ、運用しやすい。 (仮想マシンのスケールセットなども今後は検証したい) ● MariaDB Galera Clusterは運用実績も多く安定している。 障害時(全部のサーバーがダウンしたときなど)の対応は十分な検証が必要。 (AzureではMariaDBのPaaSもあるので、そちらを検討したい) ● GlusterFSでMoodleDataを扱うことはできるが、キャッシュ系の データは大量の細かなファイルを生成しているため、場合により適さない? 障害時の対応の検証が必要(特にSplit-Brainの場合) ■Microsoft Azureを利用した複数台Moodleについて クラウドでの大規模Moodleの構築方法とモデルケース 6.おわりに 39 / 41 ページ 今回の構築例は、いくつかあるパターンの1つです。 参考として紹介させて頂いた方法を実運用される際は 十分な検証をおこなってから、ご利用ください。 ×
  • 40. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers moot期間中は展示ブース&達人コーナーにおります。 お気軽にお声をおかけください。 Raspberry Pi を使ったMoodleのデモも 用意しています。ご興味があればお立ち寄り下さい。 ご清聴ありがとうございました ●本件に関するお問い合わせ● 株式会社テクノウォーカー http://www.twalker.co.jp 問い合わせ先: sol@twalker.co.jp 03-5155-1830(東京) システム企画部 担当:山岡 茂治 s-yamaoka@twalker.co.jp 10th Conference for Moodle Teachers and Developers Moodle moot japan 2018 40 / 41 ページ
  • 41. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 10th Conference for Moodle Teachers and Developers 10th Conference for Moodle Teachers and Developers Moodle moot japan 2018 ■参考出典元・著作物利用 ● Moodle.org(Moodle公式サイト)http://moodle.org/ ロゴの利用。 ● 日本マイクロソフト株式会社様 http://www.microsoft.com/ja-jp/ ロゴ、Azureアイコン(無料ダウンロード)の利用。 https://www.microsoft.com/en-us/download/details.aspx?id=41937 ● MariaDB Foundation 様 https://mariadb.org/ 製品の紹介とロゴの利用。 ● Red Hat, Inc.様 https://www.gluster.org/ 製品の紹介とロゴの利用。 ● いらすとや様(かわいいフリー素材集) http://www.irasutoya.com/ スカイツリー、東京駅、その他かわいいイラストをお借りしました。 ※記載されている会社名、製品名、ロゴ等は各社の登録商標または商標です。 41 / 41 ページ