More Related Content Similar to 実プロジェクトの経験から学ぶazureサービス適用パターン (20) More from Kuniteru Asami (11) 実プロジェクトの経験から学ぶazureサービス適用パターン2. ©2015 pnop, Inc.
© 2011 Microsoft Corporation
All Rights Reserved.
About me
kuniteru.asami
Find me
Database
Azure 2012~
Microsoft Azure
4. ©2015 pnop, Inc.
Microsoft Azure 自習書シリーズ
http://blogs.msdn.com/b/windowsazurej/archive/2014/06/02/blog-published-azure-self-learning-series.aspx
Azure msdn 自習書
検索
6. ©2015 pnop, Inc.
弊社が携わった Azure プロジェクト例
ゲーム ERP クレジット EC POS ヘルスケア 交通
地域 広告 書籍 天気 写真 CMS 占い
駐車場 イベント サイネージ IoT HPC パッケージ OSS
15. ©2015 pnop, Inc.
Web Apps
Web アプリケーションの場合はまずは Web Apps を検討すべき
言語は以下に含まれること
.NET, PHP, Java, Python, node.js あるいは 静的ファイル
言語の細かいバージョンにこだわらないこと
インストールが必要なミドルウェアやエージェントなどがないこと
WAF を必要としないこと
Barracuda WAF が Web Apps にも対応していますが、Web Apps だけでは実現できません
VPN や Azure 内部のネットワークからアクセスする必要がないこと
Active Directory に所属する必要がないこと
OS、Web サーバー、言語ランタイムのアップデートの管理が不要
アプリケーションの展開が簡単
素早いオートスケールが可能
16. ©2015 pnop, Inc.
クラウドサービス
OS、Web サーバー、.NET Framework のアップデートの管理が不要
.NET 以外の言語を利用する場合は、そのアップデートの管理が必要
多くのミドルウェアやアプリケーションを利用可能
オートスケールが容易
インスタンス内に保存したデータや設定は永続化されない
初期設定は可能ですが、後で変更するとメンテナンスや障害などによる再起
動時に初期化されます
データは Azure Storage や SQL Database などの外部データストアに保存します
アプリケーションの展開方法にややクセがある
Azure を利用し始めていきなりクラウドサービスは
難易度がやや高い
17. ©2015 pnop, Inc.
仮想マシン
普通の Windows Server、Linux Server として利用することができる
OS に対応しているアプリケーションであれば何でもインストールすることが
できる
クラウド向けのライセンスを確認すること
ローカルディスクに保存したデータが永続化される
Docker、Chef、Puppet などを利用可能
OS やインストールしたミドルウェアなどのアップデートの管理が必要
ロードバランスされている Web サーバーで
Windows Update が同時に動いていいのか?
OS やアプリケーションのアップデートを凍結しても、
ホスト OS のアップデートの影響を受ける
20. ©2015 pnop, Inc.
Azure で利用できる主なデータストア
RDBMS NoSQL BLOB Data on IaaS
SQL Database Table Storage DocumentDB BLOB Storage 仮想マシン
ClearDB Redis Cache
22. ©2015 pnop, Inc.
SQL Database
Microsoft SQL Server 互換の DBaaS
3 重化されており、Master の障害時には瞬時に Slave が自動で昇格
非同期ではあるがRead only replica の作成が可能 (同一DC / 異なるDC)
自動でバックアップが取得されており、PITR が可能
.NET ではライブラリにより Sharding が可能
データサイズの制限 (MAX 500GB)
TimeZone が UTC 固定
一部の関数やストアドプロシージャ、
SQL Server Agent / Job などサポートされない機能がある
スロットリングがある
24. ©2015 pnop, Inc.
DB on 仮想マシン
仮想マシン上にユーザー自身で任意の RDBMS を構築する
Microsoft SQL Server、Oracle Database、IBM DB2 が公式に対応を表明
SQL Server は、Azure に対応した機能を持つ
MySQL、PostgreSQL なども利用可能
Premium Storage を利用するのが定石
全ての Disk をPremium Storage にしなくてもよい
Azure のメンテナンスや障害による
仮想マシン再起動への対策として可用性の高い
構成が必要
インスタンスサイズによるがデータベースの
最大サイズは 64TB
※ トランザクションログ、バックアップ領域なども含む
(SQL Server は除く)
26. ©2015 pnop, Inc.
可用性セット
SQL Server AlwaysOn 可用性グループ
Worker ロール
(クラウドサービス)
Web ロール
(クラウドサービス)
仮想マシン
ILB
SQL Server
on 仮想マシン
SQL Server
on 仮想マシン
同期コミット
WSFC ノード AD DC AD DC
可用性セット
27. ©2015 pnop, Inc.
Oracle Database の高可用性構成
Oracle GoldenGate
双方向/マルチマスタ レプリケーション
Oracle Data Guard
REDO ログ転送によるミラーリング
Oracle RAC は構成できない
28. ©2015 pnop, Inc.
Oracle GoldenGate
Active - Active
双方向 / マルチマスタ レプリケーション
必要なデータのみをレプリケーション
Oracle Database Standard Edition でも利用可能
29. ©2015 pnop, Inc.
Oracle GoldenGate
GoldenGate GoldenGate
双方向同期
Oracle DB
on 仮想マシン
ILB
Worker ロール
Oracle DB
on 仮想マシン
Web ロール 仮想マシン
(クラウド サービス)
Web ロール 仮想マシンWorker ロール
CTF/TAF*CTF/TAF*CTF/TAF*
(クラウド サービス)
* CTF = Connection Time Failover, TAF = Transparent Application Failover
可用性セット
30. ©2015 pnop, Inc.
Oracle Data Guard
Active - Standby
ディザスタ リカバリを目的とした REDO ログ転送
によるミラーリング
ファスト・スタート・フェイルオーバーによる切
替
31. ©2015 pnop, Inc.
可用性セット
可用性セット
Oracle Active Data Guard
Data Guard Data Guard
REDOログ同期転送
Oracle DB EE
on 仮想マシン
Oracle DB EE
on 仮想マシン
Web ロール
(クラウドサービス)
仮想マシン
CTF/TAF*CTF/TAF*
Worker ロール
(クラウドサービス)
CTF/TAF*
オブザーバー オブザーバー
* CTF = Connection Time Failover, TAF = Transparent Application Failover
33. ©2015 pnop, Inc.
MySQL Cluster
MySQL 標準のクラスタ機能
NDB ストレージエンジン
通常の MySQL Server に加えて、クラスタをサポー
トするバイナリ、NDB ストレージ エンジン、NDB
ストレージ マネジメント サーバーが必要
35. ©2015 pnop, Inc.
MySQL Galera Cluster
マルチマスタ レプリケーション
InnoDB ストレージエンジン
Galera Cluster 対応の MySQL / MariaDB / PERCONA
Server と wsrep APIを利用
http://galeracluster.com/
36. ©2015 pnop, Inc.
可用性セット
MySQL Galera Cluster
wsrep API wsrep API
MySQL
on 仮想マシン
Worker ロール
MySQL
on 仮想マシン
Web ロール 仮想マシン
wsrep API
MySQL
on 仮想マシン
ILB
37. ©2015 pnop, Inc.
クラスタソフトの利用
市販されている / OSS のクラスタソフトを利用す
ることも可能
NEC CLUSTERPRO
SIOS LifeKeeper
Pacemaker + Corosync
etc…
Worker ロール
(クラウドサービス)
Web ロール
(クラウドサービス)
仮想マシン
ILB
仮想マシン 仮想マシン
レプリケーション
可用性セット
39. ©2015 pnop, Inc.
とあるゲームの初期計画構成イメージ
Apple Push
Notification Service
Google Cloud
Messaging
仮想マシン
管理サーバー
PHP
ロードバランサー
ロードバランサー
ロードバランサー
DocumentDB
ログ出力先
クラウドサービス
ゲームサーバー
node.js
Storage Queue
クラウドサービス
ミニゲームサーバー
node.js
Redis Cache
仮想マシン
通知サーバー
PHP
クラウドサービス
ロジックサーバー
C#.net
運用管理者
ユーザー
MySQL on 仮想マシン
ゲームDB
(Sharding & Read only replica)
40. ©2015 pnop, Inc.
とあるゲームの運用構成イメージ
Apple Push
Notification Service
Google Cloud
Messaging
Web App
管理サーバー
PHP
ロードバランサー
ロードバランサー
ロードバランサー
Storage Table
ログ出力先
クラウドサービス
ゲームサーバー
node.js
Service Bus Queue
Web App
ミニゲームサーバー
node.js
Redis Cache
Nortification Hubs
通知サーバー
クラウドサービス
ロジックサーバー
C#.net
運用管理者
ユーザー
SQL Database
ゲームDB
(Sharding and Active geo-replication)
41. JAZUGのご紹介
Japan Azure User Group
略称:JAZUG(じゃずゆーじー)
http://r.jazug.jp
コミュニティ活動概要:
「Microsoft Azureを通じて、技術、交流、実ビジネスを楽しむ。」
“ちょっと興味がある=ゆるふわな方” から “実ビジネスで使うんだよね” な方まで
大歓迎!ゆるふわコミュニティです。
JAZUGへの参加はFacebookで。
Japan Windows Azure User Group(Facebookページ)
https://www.facebook.com/jazug.jp
Japan Windows Azure User Group(Facebookグループ)
https://www.facebook.com/groups/jazug/
JAZUG女子部、札幌(きたあず)、青森、仙台、福島、静岡、名古屋(なごあず)、
信州(Azureしなの)、関西(関西Azure研究会)、福岡(ふくあず)、沖縄
Twitter: #jazug
一緒に運営してくれるメンバーを募集中です。
Editor's Notes 過去はOracleやオープンソースというフィールドで仕事をしていましたが、今はMicrosoft Azure、これに特化しています。
一つはpnop。こちらは主に、これからAzureを利用しようとしているお客様が、Azureのメリットを最大限に活かせるようにご支援させていただきます。
そしてCloudlive。こちらは24時間365日のAzureの運用監視ということで、お客様Azureを利用して、安心、安全にシステム、サービスを運用することをご支援させていただきます。
我々はAzureの技術について、特に日本においては、ダントツな知識、ノウハウを持っていると自信と自負と責任をもって、お客様にサービスを提供させていただいております。 目的を実現することができる
導入コストが低い
運用コストが低い
障害発生率が低い
障害時の復旧時間が短い
障害時の復旧が容易
エンジニアの確保が容易
学習コストが低い Oracle DatabaseでのHA構成として、2つの方法を紹介します。
一つはOracle GoldenGate。
もう一つは、Oracle Data Guardです。 スクリーン上部がMySQLですが、Galera Clusterでは、3台以上で構成することが推奨されています。
そしてアクセス元となるクライアントですが、スクリーン下、Azureのロードバランサーが接続先のデータベースを決めます。これは、Galera Clusterはマルチマスタなので、適当なサーバーを更新すれば、他のサーバーに伝搬してくれるということで、生きているサーバーに接続すればOKということです。
サーバーが落ちていた場合は、Azureのロードバランサーが正常なサーバーにつなぎに行ってくれます。
MySQLではこのような形で、HAの構成をとることができます。
以上、私からは、OracleデータベースとMySQLの冗長構成についてのお話しをさせていただきました。
ここで、多田さんにマイクを戻させていただきうます。
Oracle DatabaseでのHA構成として、2つの方法を紹介します。
一つはOracle GoldenGate。
もう一つは、Oracle Data Guardです。 まずはOracle GoldenGateからお話しします。
GoldenGateはもしかしたら皆さんには、あまりなじみのないものかもしれません。
GoldenGateは、Oracle Fusion Middleware製品群の中の一つの製品です。
これはマルチマスタでのレプリケーションとなりまして、2台のデータベースサーバーがActive – Activeとなります。
どちらのデータベースサーバーで読み書きしても、それがもう一方に反映されるということですね。 構成例をお見せしましょう。
スクリーン上部のブルーで囲まれた部分、こちらでOracleの仮想マシンです。
そして、画面下側、こちらはデータベースに対するクライアントです。もしかしたらWebサーバーかもしれませんし、バッチサーバーなどかもしれませんが、Azure上のインスタンスであることを想定しています。
HAの構成にするには、いくつかの重要な要素があります。
一つは、データを複数のサーバーで持つシェアードナッシングの場合は、そのサーバー間のデータの同期、
そして、複数のサーバーがある中で、どれがアクセスすべきデータベースサーバーなのかを選択することです。
この構成では、データの同期をGoldenGateが担います。
そしてアクセス元となるクライアントですが、2つの接続パターンが考えられます。
まず一つはスクリーン左下、Azureのロードバランサーが接続先のデータベースを決める方法。これは、GoldenGateはActive-Activeのマルチマスタなので、どちらのデータベースに接続して、データの参照、更新をしてもかまわないということで、Azureのロードバランサーに任せることができます。
どちらかのサーバーが落ちていた場合は、Azureのロードバランサーが正常なサーバーにつなぎに行ってくれます。
あるいはスクリーン右下、Oracleクライアントの機能で、CTFやTAFとよばれるものがあります。これは、クライアント側に接続先データベースを複数設定しプライマリとした優先順位の高いものから、接続できるサーバーにアクセスするというものです。
ですので、プライマリのデータベースが落ちていた場合は、優先順位が次のサーバーに接続しに行ってくれるということですね。
TAFだと、接続中のサーバーが落ちてしまった場合も、セッションも生きているサーバーに振ってくれたりもします。
GoldenGateではこのような形で、HAを実現できます。 続いて、Oracle Data Guardによる構成です。
GoldenGateよりはData Guardの方がみなさんにもなじみがあるのではないでしょうか?
Data Guardは、Oracle Database Enterprise Editionの機能です。
Data Guardはもともと、ディザスタリカバリを目的とした機能で、プライマリとなる1台がアクティブとなり、他のデータベースはスタンバイとなりアクセスできなくなります。
アクティブなデータベースに対する更新が、スタンバイのデータベースサーバーに反映される形となります。 Data Guardの構成例です。
スクリーン上部の左側のブルーで囲われた部分が、Oracleの仮想マシンです。
この絵では、左がActive、右がStandbyになっています。
スクリーン上部の右側のオブザーバーと書かれているのが、Oracleインスタンスの死活状態を監視し、Active側にアクセスできなくなった時に、StandbyをActiveに昇格させる、Data Guardのオブザーバーです。
画面下のクライアントは、Active側に接続するよう、CTF/TAFで接続先を決定します。
Oracle DatabaseでのHA構成はこのような感じです。 MySQLでのHA構成として、2つの方法を紹介します。
一つはMySQL Cluster
もうひとつは、Galera clusterです。 MySQL Clusterは、MySQL標準のクラスタ機能で、MySQLを使っていて可用性を考えると、必ず話題にあがる機能かと思います。
しかし、MySQLでは、ストレージエンジンという話題が出てきます。
MySQLをご存じない方のために少しだけお話ししますと、MySQLでは、いくつかあるストレージエンジンから、要件にあったものを選ぶことができます。
ISAMなものだったり、トランザクションや外部結合が得意なものだったり、全文検索用のものや、あるいはクラスタを実現するためのものなど。
ストレージエンジンが違うと、データベース製品が違うと言っても言い過ぎじゃないかもしれない程度には違うものになってしまいます。
それで一般的には、トランザクション機能があり、外部結合などもできる、InnoDBというストレージエンジンが選択されることがほとんどです。
しかし、MySQL Clusterは、NDBストレージエンジンという、MySQL Cluster専用のクラスタ対応のストレージエンジンです。
これが理由の一つで、MySQL Clusterの事例はまだあまり多くないんじゃないかなと思っています。 構成例をお見せしましょう。
ブルーで囲われているところの左から、SQLノードという、Webサーバーなどデータベースのクライアントからアクセスする、クライアントからMySQLに見えるサーバー、上に行ってDataノードというデータが保管されるサーバー、そして右下に、各サーバーの状態を管理するサーバーがあります。
そしてアクセス元となるクライアントですが、スクリーン左下、Azureのロードバランサーが接続先のデータベースを決めます。これは、MySQL Clusterでは適当なSQLノードに接続すれば、あとはよしなにデータを扱ってくれるということで、生きているSQLノードに接続すればOKということです。
どちらかのSQLノードが落ちていた場合は、Azureのロードバランサーが正常なサーバーにつなぎに行ってくれます。
Galera Clusterは、サードパーティのHAの仕組みです。
これはマルチマスタでのレプリケーションとなりまして、複数のデータベースサーバーがActive – Activeとなります。
どちらのデータベースサーバーで読み書きしても、それがもう別のサーバーに反映されるということですね。
そして、MySQL Clusterでは課題となっていたストレージエンジンが、一般的なものであるInnoDBです。
みなさんとしても扱いやすいくなっていると思います。
MySQLは、オープンソースの世界観の理由があって、MySQLから派生したMariaDBやPERCONA Serverといったものもあります。
Galera Clusterは、MariaDBやPERCONAでの実績が多いようですね。 スクリーン上部がMySQLですが、Galera Clusterでは、3台以上で構成することが推奨されています。
そしてアクセス元となるクライアントですが、スクリーン下、Azureのロードバランサーが接続先のデータベースを決めます。これは、Galera Clusterはマルチマスタなので、適当なサーバーを更新すれば、他のサーバーに伝搬してくれるということで、生きているサーバーに接続すればOKということです。
サーバーが落ちていた場合は、Azureのロードバランサーが正常なサーバーにつなぎに行ってくれます。
MySQLではこのような形で、HAの構成をとることができます。
以上、私からは、OracleデータベースとMySQLの冗長構成についてのお話しをさせていただきました。
ここで、多田さんにマイクを戻させていただきうます。