alibabacloudでの、実践的なwebアプリケーションの構築方法...

32
Alibaba Cloudで䛾、 実践的なWebアプリケーション䛾構築方法 クラウド上で可用性と安全性䛾高い設計をする SBクラウド株式会社 プロダクト技術部 201776(2017/08/24 Updated)

Upload: sb

Post on 21-Jan-2018

768 views

Category:

Internet


3 download

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だけでなく、他 アプリケー

ションにおいても適応することができるも です。

クラウドでも障害 おきます!

障害に強いシステムを作りたい…クラウド上でどうやって可用性を高くできるんだろう?

クラウドだとセキュリティが心配。どうやってセキュアにすれ いいんだろう?

メインテーマ: どうやって「楽」に 「可用性」と「安全性」 ある システム設計をする か!? (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

改版履歴

Version 日付 内容

1.0 2017/07/06 初版

1.1 2017/08/24 マルチゾーンプラクティスを追加。

SBクラウド 公式Twitter/Facebook新機能やイベントなど配信してます!

@sbcloud_pr facebook.com/SBCloud/

SBCloudエンジニアブログ じめました

https://techblog.sbcloud.co.jp にアクセス!!