alibabacloudでの、実践的なwebアプリケーションの構築方法...
TRANSCRIPT
Alibaba Cloudで 、実践的なWebアプリケーション 構築方法ー クラウド上で可用性と安全性 高い設計をする ー
SBクラウド株式会社プロダクト技術部
2017年7月6日(2017/08/24 Updated)
Who are you?
名前:森 真也
所属:SBクラウド プロダクト技術部
ロール:クラウドアーキテクト。
Alibaba Cloud 技術検証やセミナー開催など。
近:
料理インスタグラマー、
技術的なことだとTerraformとかDevOpsツールに興味
じめに
本資料 、WordPress構築を題材に、Alibaba Cloud上で 実践
的なWebアプリケーションを構築する際 重要なプラクティスを紹
介するも です。
デモンストレーションしながら解説していきます。
また、本資料 考え方 WordPressだけでなく、他 アプリケー
ションにおいても適応することができるも です。
VPC(192.168.0.0/16)
VSwitch
Elastic IP(グローバル IP)
ECS(Webサーバ)
Alibaba Cloud Japan Region
192.168.1.0/24ECS(踏み台/NAT)
SLBServer Load Balancer
http:80
AutoScaling
・・・
RDS(MySQL)
OSSObject Strage Service
完成図
セキュリティグループB
セキュリティグループA
ECS
仮想サーバーサービス
迅速に、より安全・安定したサーバ環境を提供
Elastic Computing ServiceOSS
オブジェクトストレージ
大容量ストレージ、高可用性、高信頼性、低コストが特長
Object Storage ServiceVPC
仮想プライベートクラウド
Alibaba Cloud上に分離されたネットワーク環境を構成
Virtual Private Cloud
SLB
負荷分散装置
トラフィックを負荷分散するサービス
Server Load BalancerApsaraDB for RDS
大容量ストレージ、高可用性、高信頼性が特長
リレーショナルデータベースサービス
Elastic IP
ECSに紐付けできるグローバル IPアドレス
グローバルIPサービス
主に利用するプロダクト
設計プラクティス
1. SLBを使ってWebサーバ 負荷分散をする
2. RDSを使ってDBサーバ 可用性を高める
3. OSSを使って共有データを扱う
4. VPCを使ってセキュアなネットワーク環境を作る
5. セキュリティグループを設定する
6. EIPを利用してグローバルIPを固定する
7. AutoScalingを使って動的にサーバをスケールする
8. マルチゾーンを利用して障害に強くする
1. SLBを使ってWebサーバ 負荷分散をする
ECS(Webサーバ)
SLBServer Load Balancer
VPC
● Webサーバ 負荷分散、可用性を高めるた
めに SLB 利用がおすすめです。○ ロードバランサー 負荷分散だけでなく、 Webサー
バ 可用性を高めることも同時にできます
○ 例え 、1台 Webサーバがダウンしてもサイト全
体を継続させることができる。
● SLB マネージドサービスになっているた
め、ロードバランサ 冗長化 気にしなくてよ
いです。
● しかも、SLB インスタンス費用 たった
月700円程度。
冗長化済み
負荷分散と可用性確保 両方を実現
2. RDSを使ってDBサーバ 可用性を確保する
● RDS フルマネージド データベースサービスです。データ
ベース レプリケーションやフェイルオーバー 機能を備え
ます。
● レプリケーションなど 設定をする必要なく、可用性を高め
ることができます。
RDS
マスターDB スレーブDB
ECSから見るとRDS 2つで1つ。すでに冗長構成となっている。
同期
比較項目 オンプレ ECS上で 構築 RDS
ハードウェア調達 要 不要 不要
ファシリティ 要 不要 不要
サーバOS運用 要 不要 不要
OSインストール 要 不要 不要
DBインストール 要 要 不要
DBバックアップ 要 要 不要
DB冗長化設定 要 要 不要
DBスケーリング 要 要 不要
DBチューニング 要 要 要
3. OSSを利用してサーバ間でファイルを共有する
● OSSを利用することで、複数台 サーバで構成している際も、共通 スト
レージを利用することができます。
● OSSにイメージ画像などを保存することでサーバ間 画像ファイル 同期
が必要なくなります。
OSSObject Strage
画像データ 同期が必要
画像データを共有
プラグインをインストール
こ ケース 場合例え rsyncで 同期などがある。
4. VPCを使ってセキュアなネットワーク環境を作る
● 各ECSインスタンスにグローバルIPを付与する 、セキュリティ面からあまりよく
ありません。可能な限り、インターネットから直接アクセスできるサーバを少なくす
ることをおすすめします。
● グローバルIP アドレスを持たないサーバ 、踏み台サーバを経由してインターネッ
トにアクセスできるようにするといいです。
ECS(Webサーバ)
ECS(踏み台)
VPCインターネット
4. VPCを使ってセキュアなネットワーク環境を作る
VPC(192.168.0.0/16)
VSwitch
Elastic IP(グローバル IP)
ECS(Webサーバ)
192.168.1.0/24ECS(踏み台)
RDS(MySQL)
インターネットから直接アクセスできる箇所を絞ることでセキュアなネットワーク環境を実現する
グローバルIPを持たないサーバへアクセスする手段として、
踏み台サーバ 用意しましょう。
4. VPCを使ってセキュアなネットワーク環境を作る
VPC
Elastic IP(グローバル IP)
ECS(Webサーバ)
ECS(NAT)
ルータエントリー0.0.0.0/0 踏み台
グローバル IPを持たないサーバ 踏み台サーバを経由してインターネットにアクセスするようにする。
グローバルIPを持たないサーバ 、
NATサーバを経由してインターネットに出れるようにしよう。
VRouter
5. セキュリティグループを設定する
● セキュリティグループ 、ECSサーバ
に適応できるファイアウォール機能で
す。
● セキュリティグループに所属する、
サーバすべてに対して通信設定を反
映することができます。
● ポートやプロトコル、IPアドレスなどで
通信 制限をすることができます。
● サーバ 役割ごとに1つ セキュリ
ティグループを作成するとよいです。
VPC
ECS(踏み台/NAT)
http:80
セキュリティグループB
セキュリティグループA
ECS(Webサーバ)
ssh
同じグループ内 サーバ群 グループに追加することで簡単に設定を共有
インターネットと直接アクセスするサーバ群セキュリティグループ 制限を強化しておくといいです
ssh
6. EIPを利用してグローバルIPを固定する
● EIP ECSに付与できるグローバルIPサー
ビスです。
● EIPを利用するとグローバルIPアドレスを変
更することなくECSインスタンス 変更が可
能になります。○ メンテナンスで バックアップ機へ 切り替え
○ スケールアップ
低スペックサーバ
高スペックサーバ
http://fumidai.xxxx.jp
EIPを使え 、同じアドレスを他 サーバへ付け替えられる。
7. AutoScalingを利用してサーバをスケールさせる
AutoScaling 、トラフィック他により変動するシステム 負荷要求や、時間帯ごとに変
化する処理能力 要求に対応するために、ECS 台数を自動的に増減するサービス。
数量
スペック
高
低
多少
スケールアップ・ダウン
スケールイン・アウトAuto Scaling 対応範囲
7. AutoScalingを利用してサーバをスケールさせる
● AutoScalingを活用するサーバ ステートレスにすることを推
奨。永続化されるべきデータ 、サーバ上で保持しないようす
る。○ 例え セッション情報
○ ログ情報
○ ユーザ アップロードしたファイル
● 複数 サーバ間でデータを同期する仕組みも回避すべき。
8. マルチゾーンを利用して障害に強くする
AZ1 AZ2AZ1
AZ2 AZ3
リージョンA リージョンB
リージョンとアベイラビリティゾーン 違いを理解しましょう。
AZ 送電元とネットワークが互いに分離された物理的な領域(データセンタ)です。片方
、データセンタが停止してもシステムが継続的に動作するように設計可能です。(※複
数 ゾーンがあるリージョンで み利用可能です。)
物理的に離れ、分離されたデータセンター
VPC
ECS(Webサーバ)
リージョン
SLB
RDS(MySQL)
AZ1 AZ2
マルチゾーン設定
マスター スレーブ
マスター スレーブ
片方 AZが、例え 停電等で落ちてもシステム 継続するように、サーバを配置することができる。
マルチゾーン設定
デモンストレーション
重要プラクティスを解説しながら、実際にWordPress環境を作ってみます。
後に、1台 WordPressサーバを停止させて、障害へ 対応も体感してみます。
1. ECSを購入する(グローバルIPを持たないECS)2. セキュリティグループを確認する
3. SLBへ バックエンドサーバ 追加。負荷分散を確認する
4. WordPressからRDSへ 接続する
5. WordPressサイト チェックする
6. WordPressからOSSへ 画像アップロードする
7. サーバをダウンさせてみる
8. 踏み台サーバ 設定を確認する
VPC(192.168.0.0/16)
VSwitch
Elastic IP(グローバル IP)
ECS(Webサーバ)
Alibaba Cloud Japan Region
192.168.1.0/24ECS(踏み台/NAT)
SLBServer Load Balancer
http:80
RDS(MySQL)
OSSObject Strage Service
セキュリティグループB
セキュリティグループA
デモンストレーション 環境 再現
デモンストレーション 環境を再現できるようにTerraformテンプ
レートを公開しています。
[Alibaba Cloud Terraformサンプル集] WordPress発展サンプル
https://github.com/mosuke5/terraform_for_alibabacloud_examples/tree/master/wordpress_advanced_sample
Terraformと (https://www.terraform.io/)
● HashiCorp製 インフラ 構築・管理ツール。
● 構築したいインフラ構成をファイルに定義する。
● Terraformを実行するとファイルに定義した構成がクラウド上に
構築されるというも 。
Terraform 対応プラットフォーム例
● Alibaba Cloud● AWS● Google Cloud Platform● Microsoft Azure● OpenStack● Fastly (CDN)● DNSimple (DNS)● New Relic (Monitoring)● Packet (Bare Metal Cloud)● etc
参考資料
● Alibaba Cloud プロダクトとサービス○ https://jp.aliyun.com/product
● VPC 向け SNAT ゲートウェイ 作成○ https://jp.aliyun.com/help/faq-detail/27738.htm
● Alibaba Cloud OSS WordPress用プラグイン例○ https://github.com/IvanChou/aliyun-oss-support
● Alibaba Cloud、EIP(Elastic IP)解説。ECS運用を楽にする!○ http://qiita.com/mosuke5/items/8ea2a6d5ac3683d5b180
● Alibaba Cloud Terraformサンプル集○ https://github.com/mosuke5/terraform_for_alibabacloud_examples
SBクラウド 公式Twitter/Facebook新機能やイベントなど配信してます!
@sbcloud_pr facebook.com/SBCloud/