AlibabaクラウドでLBを使った基本的な構成を構築してみる

普段はAWSを使ってるのですが、その対抗サービスであるAlibabaクラウドについてちょっと触ってみます。
今回はAlibabaクラウドを全く触ったことがない状態から、を想定しています。

# そもそもAlibabaクラウドって？

https://jp.alibabacloud.com/

Alibabaクラウドは、その名の通りAlibabaが提供するクラウドサービスで、Amazonが提供するAWS、Googleが提供するGCPにあたるサービスです。
日本サイトでサービスが展開されたのは２０１７年の頭ごろからで、ソフトバンクが代理店、だったはず。
中国では圧倒的なシェアを誇り、アリペイのバックエンドもAlibabaクラウドで作られています。

詳しくはこちらによくまとまってました。
https://beyondjapan.com/blog/2018/05/alibaba-cloud

# シンプルにLB、インスタンス、DBでオートスケーリング

AWSで言うところのELB、EC2、RDS、Auroscalingを使ったごくごく基本的な構成を作ってみます。

## Elastic Compute Serviceでインスタンス作成

AWSで言うところのEC2にあたります。

1. コンソールログイン後、「Elastic Compute Service」をクリック
<img width="341" alt="スクリーンショット 2018-06-05 2.41.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/2a5ce01b-f36c-48cd-1254-604ba4bd0240.png">

1. 作成リージョンを選択
今回はSingaporeを選択しました。（スクショはUS Westになっていますが…）
<img width="875" alt="スクリーンショット 2018-06-05 2.41.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/5358f2af-ab18-5016-e6a8-b10777a4369d.png">

1. 基本構成を選択する画面が出てきます。インスタンスタイプやストレージなどはここの画面で。
AWSでいう、EC2を立てるときのオプションの画面ですね。イメージ（AWSでいうAMIに当たるものでしょうか）の選択もこの画面で行います。AWSとは違い、帯域幅が明確に定義されています。
<img width="1249" alt="スクリーンショット 2018-06-05 2.42.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/812aa84e-4709-5a4c-9d5f-1b2f9c932941.png">
ただ、今回は基本構成を構築することが目的なので、「スターターパッケージ」を使って簡易的に構築します。
1. 画面上部にある「スターターパッケージ」を選択すると、このような画面が出てきます。AWSで言うところのLightSailに近いイメージでしょうか。従来のVPSの選び方に近いかたちでサクッと構築できます。
<img width="1200" alt="スクリーンショット 2018-06-05 2.43.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/f38ccc64-401f-e6ea-5b11-f3f249ee6a9f.png">
<img width="1227" alt="スクリーンショット 2018-06-05 2.43.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/afa93bf8-6e04-b06b-9efe-6565b7ed454a.png">
<img width="1234" alt="スクリーンショット 2018-06-05 2.43.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/d8817f8e-7cb7-d862-461e-d9bca44ab8bd.png">
<img width="1239" alt="スクリーンショット 2018-06-05 2.43.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/60822077-0188-5a0f-8d96-5445f9304ff4.png">
1. 購入ボタンを押すと確認画面が出るので問題なければ注文します。
<img width="1224" alt="スクリーンショット 2018-06-05 2.44.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/84c7580e-b3c1-87da-7650-7cb438a998bd.png">
1. 後は待っていればインスタンスが立ち上がります。
<img width="1213" alt="スクリーンショット 2018-06-05 2.44.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/39aee014-45fa-05d7-4c3d-4e2a3786f71f.png">

### インスタンスのコンソールへのログイン方法
画面上からできます。
これ以外にも、SSH鍵を使用したログインもできますが、今回は割愛。

1. インスタンスにパスワードを設定
ここちょっと分かりづらかったのですが、スターターパッケージで作るとパスワードを設定するタイミングも鍵をもらうこともないです。
コンソール上で詳細→パスワードのリセット→再起動
を行ってから、そのパスワードを使いましょう
<img width="463" alt="スクリーンショット 2018-06-16 16.57.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/0323d115-7a62-e095-1a2f-e57a3bec20fe.png">

1.　インスタンスの詳細からVNCを選択
<img width="566" alt="スクリーンショット 2018-06-16 16.46.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/9de0f559-74a7-ecdb-f845-ba117edb815c.png">

2.　別ウインドウ（タブ）が開いて、VPCパスワードが出てくるのでそれをコピーします（ここではスクショ割愛）
3.　画面上でそれを入力します。
<img width="612" alt="スクリーンショット 2018-06-16 16.48.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/0297df52-ea42-1e56-0199-85efb6c1ad1e.png">

4.　ユーザにrootを指定して、コンソールで設定したパスワードを入力
うまくいくとログインできます。
<img width="644" alt="スクリーンショット 2018-06-16 16.55.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/16230bee-a114-1f0d-bab6-ad443b93104c.png">

今回はとりあえずApacheを入れてWEBサーバにします。

```bash
apt-get update
apt-get install apache2
```

## Server Load Balancerの作成
AWSで言うところのELBですね。

1. ロードバランサーを作成するために、コンソールのトップからServer Load Balancerを選択
<img width="358" alt="スクリーンショット 2018-06-05 2.45.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/a6b1719c-a984-7e00-c21c-50faf8fca007.png">

1. 今回はシンガポールに作成したのでSingaporeを選択しています。AWSと違って、ロードバランサーにもスペックを指定できます。
<img width="1243" alt="スクリーンショット 2018-06-05 2.45.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/6c3e8027-a933-5f08-2bab-bc406e6f3429.png">
<img width="1247" alt="スクリーンショット 2018-06-05 2.46.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/b626b4be-5b73-9c3f-afae-d3a0c6661a0a.png">
1. 問題なければこのまま有効化
<img width="1233" alt="スクリーンショット 2018-06-05 2.46.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/5e124e4a-50ab-578a-f70c-5e783d9a6cf5.png">

### バックエンドにインスタンスを追加

ちょっと面倒ですが、作っただけだとまだ使えないのでバックエンドにインスタンスを追加します。

1. 作ったLBを選択
<img width="1205" alt="スクリーンショット 2018-06-16 16.28.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/e6870c96-815c-232f-397d-4b3b79adfeec.png">
1. バックエンドインスタンスを設定する
バックエンドサーバ−の追加されていないサーバーから追加したいインスタンスの「追加」を押します。
<img width="1231" alt="スクリーンショット 2018-06-16 16.32.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/2b58aabe-b92b-d8a8-38a3-c5a0a47ddd56.png">
2. 対象サーバに対する重みを設定
リクエストの振り分けの重みを設定します。今回は1台しかないので100で。
複数台をLBにつけたときに、どのサーバーに多くリクエストを振り分けるかここで設定できるんですね。
<img width="622" alt="スクリーンショット 2018-06-16 16.35.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/7eca0446-6a7a-1319-6edf-a3a006e10342.png">

### リスナーを設定する
AWSのELBだと作成時にこの辺は一緒に設定するのですが、どうやらここで設定が必要なようです。

1. 「インスタンスリスナー」を選択
<img width="1202" alt="スクリーンショット 2018-06-16 16.38.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/979b4c1a-a6aa-279c-87cb-0cf0475cb283.png">

2. ポートなどを設定する
フロントエンドがLB自体のポートで、バックエンドがサーバーのどのポートに転送するか、となります。
帯域幅や転送ルールを細かく指定できますね。
ヘルスチェックに使うポートもここで設定します。
<img width="723" alt="スクリーンショット 2018-06-16 16.40.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/561c42f2-1b8d-031c-90f7-8cf866e3826d.png">
<img width="700" alt="スクリーンショット 2018-06-16 16.41.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/d79ea2fd-bc84-158e-d3d5-20317ab7e8b0.png">

3. 有効化
問題なければ有効化されます。
<img width="689" alt="スクリーンショット 2018-06-16 16.42.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/70236245-5e0e-3453-027f-ee130b0440b4.png">

## DBインスタンスを作成する
AsparaDB for RDSというサービスを使ってみます。
RDSはAWSのRDSと同じような扱いでしょうか。
1. AsparaDB for RDSのコンソールに移動する。
<img width="1250" alt="スクリーンショット 2018-06-16 17.10.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/dfbc92fa-6900-7ae5-6293-706582e73ab2.png">
1. インスタンスを作成する
今回は簡単のためにデフォルトのままMySQLで作成します。
<img width="1211" alt="スクリーンショット 2018-06-16 17.12.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/a3e02470-ef52-d879-2482-d932a9c474ac.png">
<img width="1232" alt="スクリーンショット 2018-06-16 17.12.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/e3491482-b063-3c0d-e808-c1558c80d183.png">
1. 購入する
問題なければそのまま購入します。
<img width="1202" alt="スクリーンショット 2018-06-16 17.14.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/3e5d3b3a-c017-1584-b693-c49d5866cef3.png">

購入・支払い後しばらくするとインスタンスが立ち上がります。
少々時間がかかる印象です…。

## AutoScalingを設定する
コンソールからAutoScalingの設定を行います。
1. AutoScalingを有効化する
どうやら利用開始する前に、AutoScaling自体を有効化する必要があるようです。
<img width="692" alt="スクリーンショット 2018-06-16 17.06.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/4b132256-3d16-96f9-224e-c4c69e61b9c2.png">
<img width="641" alt="スクリーンショット 2018-06-16 17.06.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/881cd8ab-0016-7f03-1f27-8aafc540b642.png">
2. 権限設定を行う
再度コンソールに戻ると、今度は権限設定を行う必要があります。
<img width="778" alt="スクリーンショット 2018-06-16 17.07.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/005941c3-399f-cb93-52b9-b4f2cac2f965.png">
<img width="985" alt="スクリーンショット 2018-06-16 17.08.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/ec1b5cf1-29c9-9b8c-6087-0b7226ed71eb.png">
ここまでやって、ようやくAutoScalingの設定を行うことができます。
3. スケーリンググループを追加する。
これまで作ったリソースを使ってスケーリンググループを追加します。
なんと、DBもスケーリンググループに追加することになります。
ここはAWSとの大きな違いですね。
<img width="930" alt="スクリーンショット 2018-06-16 17.19.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/334c16bf-8de1-02dd-44d7-57af2ef995de.png">
4. スケーリング設定を作成
続いてスケーリング設定を作成します。
スケールアウトしたときに使えるキーペアもここで指定できます。
<img width="982" alt="スクリーンショット 2018-06-16 17.20.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/14f37802-771d-617f-245a-ba32e73a2c12.png">
<img width="1179" alt="スクリーンショット 2018-06-16 17.22.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/555bd7cc-1b41-a184-24ef-b76d57cc7be7.png">
<img width="1208" alt="スクリーンショット 2018-06-16 17.23.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/9baa33b7-6699-3a35-3480-6108886b8896.png">
5. 作成 
特に問題なければこのまま作成します。
<img width="1243" alt="スクリーンショット 2018-06-16 17.24.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/9b9138e8-5eff-7571-1ab5-1a7f7428a490.png">

有効化できました。
<img width="1133" alt="スクリーンショット 2018-06-16 17.25.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/53386/733a129d-dca4-79ef-2797-446cb56c1073.png">



# 作ってみた感想

AWSとの違いを意識しながら作ってみました。
感想としては、自分で設定しなければいけないところがまだ多く、サーバーとかネットワークとかよくわかりません、という方が「サクッと作ってサクッと利用」のハードルはちょっと高いですね。
作るまでのステップ数もちょっと多いなと。
そのへんが整備されてくると、AWSとの違いを優位に使える部分も増えてきそうです。