Alibaba Cloud を初めてみた

## 公式サイトについて

Alibaba Cloud は、既存のとおりあの有名な[アリババ](http://www.alibaba.com/) が運営しているクラウドサービスです。

最近、日本サイトもオープンして日本語化されているので、さっそくアカウントを開設して、現在どのようなサービスが展開されているのか調べてみました。

日本サイトは、https://jp.alibabacloud.com になります。Alibaba Cloud では、日本サイトの他に[国際サイト](https://intl.aliyun.com)と[中国サイト](https://cn.aliyun.com)の合計3種類あります。いずれのサイトも右上の「日本サイト」のプルダウンメニューから切り替えることができます。

<img width="1228" alt="s.jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/37318/c143419f-138c-905a-c164-c357c83ad7ac.jpeg">


## アカウントについて

まず、使う前には、当然ですがアカウントの開設が必要になります。
Alibaba Cloud のアカウントの解説方法は、次の公式ドキュメントが提供されているので、すぐにアカウントを開設することができました。

また、アカウントを開設すると、Alibaba Cloud 全プロダクトを試用することができる、1年間有効な無料トライアルクーポン30,000円分が付与されているので、とても手軽に試すことができると思います。

[SB Cloud Alibaba Cloud 日本サイトアカウント登録方法のご案内 (PDF)](https://www.sbcloud.co.jp/wp-content/uploads/2017/04/Aliyun_Account_Registration.pdf)

[Alibaba Cloud 登録マニュアル (PDF)](https://www.sbcloud.co.jp/assets/Aliyun_Account_Registration.pdf)

Alibaba Cloud は、日本では [SB Cloud](https://www.sbcloud.co.jp) さんが提供しています。

アカウントを解説後、ログインすると、サービス一覧の画面が表示されます。マネジメントコンソールやドキュメント類はほぼ日本語化されています。

<img width="1296" alt="mc.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/161164af-0739-10bc-25c3-52ea4e1e2baf.png">

なお、今回解説したのは、日本サイト用のアカウントになりますが、どうやら国際サイトと中国サイトでは別々のアカウントになるようなので、このあたりはまた別途調査して公開できればと思います。


## 提供しているサービスについて

Alibaba Cloud で提供されているサービスは、マネジメントコンソールにあるサービスになりますが、[公式ドキュメント類](https://jp.alibabacloud.com/help)もほぼ日本語化されて、公開されています。

今回は、Alibaba Clound 入門として、日本サイトで提供されている「エラスティックコンピューティング」と「ネットワーク」サービスについて概要を紹介したあと、実際に仮想サーバを起動してみて使ってみたいと思います。

### エラスティックコンピューティング

#### Elastic Compute Service (ECS)

Alibaba Cloud の中では、もっとも基本になるのがこの ECS になります。
ECS とは、`Elastic Compute Service` の略称で、いわゆる仮想サーバーを提供するサービスです。

ECS では、「インスタンス」、「ディスク」、「ネットワーク」、「イメージ」、「スナップショット」、から構成されています

<img src="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/25367/intl_en/1490336641321/ECS%20Overview%20EN.jpg.png">

まず、「インスタンス」は、仮想サーバ本体ですが、おもに次のような用途のインスタンスタイプが提供されています。

| 主な用途 | ファミリー名 | vCPU とメモリの比率 | CPU の種類 |
| --- | --- | --- | --- |
| 一般タイプ | g5 | 1:4 | 2.5 GHz Intel Xeon Platinum 8163 (Skylake) |
| 計算最適化タイプ | c5 | 1:2 | 2.5 GHz Intel Xeon Platinum 8163 (Skylake) |
| 計算最適化タイプ | sn1 | 1:2 | 2.5 GHz Intel Xeon、E5-2682 v4（Broadwell）、または E5-2680 v3（Haswell） |
| メモリ最適化タイプ | r5 | - | 2.5 GHz Intel Xeon Platinum 8163 (Skylake) |
| メモリタイプ | se1 | 1:8 | 2.5 GHz Intel Xeon, E5-2682 v4 (Broadwell) |
| ビッグデータタイプ | d1ne | 1:4 | 2.5 GHz Intel Xeon E5-2682 v4 (Broadwell)
| ビッグデータタイプ | d1 | 1:4 | 2.5 GHz Intel Xeon E5-2682 v4 (Broadwell) |
| ローカルSSDタイプ | i2 | 1:8 | 2.5 GHz Intel Xeon Platinum 8163 (Skylake) | 

それぞれのファミリーごとの最小インスタンスタイプの詳細スペックをまとめると、次のようになります。

| インスタンスタイプ | vCPU | メモリ (GiB) | ローカルディスク (GiB) | 帯域幅 (Gbit/s) | パケット転送率 (Thousand pps) | NIC キュー | 	ENI (1 つのプライマリ ENI を含む) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| ecs.g5.large | 2 | 8.0 | N/A | 1.0 | 300 | 2 | 2 |
| ecs.c5.large | 2 | 4.0 | N/A | 1.0 | 300 | 2 | 2 |
| ecs.sn1.medium | 2 | 4.0 | N/A | 0.5 | 100 | 1 | 2 |
| ecs.r5.large | 2 | 16.0 | N/A | 1.0 | 300 | 2 | 2 |
| ecs.se1.large | 2 | 16.0 | N/A | 0.5 | 100 | 1 | 2 |
| ecs.d1ne.2xlarge | 8 | 32.0 | 4 * 5500 | 6.0 | 1,000 | 4 | 4 |
| ecs.d1.2xlarge | 8 | 32.0 | 4 * 5500 | 3.0 | 300 | 1 | 4 |
| ecs.i2.xlarge | 4 | 32.0 | 1 * 894 | 1.0 | 500 | 2 | 3 |

この他にも ECS では、[ベアメタルインスタンスタイプファミリ](https://jp.alibabacloud.com/help/doc-detail/25378.htm?spm=a21mg.p38356.b99.7.7bf23d3742U9v2#ebm)が提供されています（一部はこれから提供予定とのことです）。

「ストレージ」は、「Elastic ブロックストレージ」と「ローカルストレージ」の2種類提供されています。前者は、ネットワーク分散ストレージ、後者は ECS インスタンスがホストされている物理サーバーに接続されている低レイテンシのディスクになります。Elastic ブロックストレージは、99.9999999 ％のデータ信頼性を提供するために三重の分散システムを使用し、いつでも作成やサイズの変更ができます。暗号化もサポートしています。

「ネットワーク」は、VPC(Virtual Private Cloud) という Alibaba Cloud で構築された独立したネットワークが提供されており、自由に IP アドレスなどを変更してインスタンスを配置することができます。ECS インスタンスは、ENI(Elastic Network Interface) を通じて VPC 内にネットワークに接続します。インスタンスごとにセキュリティグループを設定することで、ネットワークのインバウンド・アウトバウンドのルールを設定することが可能です。SSH キーペーアの作成やインポートもサポートされていて、作成については `2048ビットの RSA キー` のみですが、インポートは `ECDSA` などの比較的新しい鍵タイプにも対応しています。

「イメージ」は、インスタンスの OS がプリインストールされたものになります。Alibaba Cloud ではいくつかの OS のイメージが提供されていて、ECS インスタンスですぐに起動することができます。Alibaba Cloud では独自の [Linux Aliyun Linux](https://www.alibabacloud.com/help/faq-detail/53091.htm) も提供されています。

「スナップショット」はその名のとおり、ECS インスタンスの特定の時点におけるデータのバックアップです。もちろん「スナップショット」から自由に復元することができます。

#### Auto Scaling

Auto Scaling とは、ワークロードに応じて ECS インスタンスを動的に拡大・縮小するサービスです。

<img src="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/25857/intl_en/1476355874439/ess%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D.png">

Auto Scaling は、指定したポリシーで自動的に拡大・縮小するモード、事前にスケジューリングされた期間内で拡大・縮小するモードなどがあります。

もちろん、拡大・縮小した ECS インスタンスは、ロードバランサー (Server Load Balancer) やデータベース (RDS) に対して自動的に制御することができます。

Auto Scaling は、ECS を利用する上で重要なサービスの一つになるので、また別の機会で詳しく解説する予定です。

#### Container Service

Container Service は、Docker を使ったコンテナのサービスです。現時点での Docker との互換性は、次のとおりとなっています。

- Standard Docker API
- Docker Swarm 1.2.6
- Docker Engine CE 17.03.1
- Docker Compose V1/V2/V3

アーキテクチャ的には、クラスターという単位でノードを構築します。クラスターには、サーバノードとロードバランサーと VPC などが含まれています。

<img src="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/25978/intl_en/1508144334166/CS_en_technology_04.png">

Docker イメージは、Docker Hub あるいは Alibaba Cloud Container Hub あるいはプライベートリポジトリから取得して展開することができます。

#### E-HPC

HPC とは、ハイパフォーマンスコンピューティングのことで、いわゆる並列コンピューティングを提供するサービスです。こちらも機会があれば、詳細を紹介したいと思います。


### ネットワークサービス

「ネットワーク」サービスとして、次のサービスが提供されています。

- Server Load Balancer
- Virtual Private Cloud
- NAT Gateway
- Elastic IP アドレス
- Express Connect
- VPN Gateway

それでは、一つずつ見てきましょう。

「Server Load Balancer」は、その名前のとおりロードバランサーのサービスです。バックエンドのサーバに同一リージョンにある複数のゾーンに ECS インスタンスを紐付けることでトラフィックを分散することができます。

「Server Load Balancer」は、`L4` と `L7` の 2種類提供されています。`L4` は LVS + Keeplived を基盤しています。`L7` は、Taobao が開発した ウェブサーバの Nginx のカスタム版 [Tengine](https://tengine.taobao.org/) を基盤しています。どちらも OSS なので、とても馴染みやすく使うことができそうです。Tengine のソースコードは [GitHub](https://github.com/alibaba/tengine) にあります。

<img src"http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/27544/intl_en/1465893509109/architecture.png">

Server Load Balancer のおもな機能として、次のものがあります。

- ヘルスチェック: バックエンドの ECS インスタンスに対してヘルスチェックすることにより、異常な ECS インスタンスを外すことができます
- スケジューリングアルゴリズム: トラフィックの分散方法として、ラウンドロビン(RR)、加重ラウンドロビン(WRR)、重み付け最小接続(WLC) の 3種類から選ぶことができます
- L7 は、ドメイン名あるいは URL ベースごとに別々の仮想サーバグループにトラフィックを転送することができます
- SSL 証明書の管理: HTTPS を終端することで、バックエンドの ECS インスタンス個別に SSL 証明書をアップロードすることは不用になります

スケジューリングアルゴリズムを選べるところは、LVS と基盤にしているところからきていると思いますが、とても特徴的なところだと感じました。


「Virtual Private Cloud」は、VPC と略称されますが、仮想ネットワークを提供するサービスです。VPC を使えばオンプレと同じようなネットワーク構成を構築することができます。
VPC を構築するにあたり、Alibaba Cloud では次のようなコンポーネントが登場します。

- VRouter: VPC のハブにあたるものです、VPC と他のネットワークを接続するゲートウェイです
- VSwitch: 仮想プライベートネットワークをさらに複数のサブネットに分割することができるものです、いわゆるネットワークサブネットにあたります

「NAT Gateway」は、その名のとおり NAT プロキシサービスです。転送能力は最大 10Gbps となっています。「NAT Gateway」を使えば、プライベートの VSwitch にある ECS インスタンスからインターネットに接続することができます。なお、このとき「NAT Gateway」は Public IP で構成する必要があります。

<img src="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/32322/cn_zh/1507686877071/topology.png">

「Elastic IP アドレス」（以下、EIP）とは、NAT IP アドレスです。プライベート VSwitch 上にある ECS インスタンスに EIP を割り当てあてることでインターネットから接続することができます。EIP は、自由に ECS インスタンスに割り当てたり、割り当てを解除することができます。

「Express Connect」とは、2つの VPC 間や VPC とオンプレデータセンターとのプライベートネットワークを作成することができるサービスです。VPC の場合、別々の異なるリージョンで接続することができるので、DR 用途などに向いています。オンプレデータセンターと接続することで、データセンターからの移行やデータセンターを論理的に拡張することができます。


「VPN Gateway」とは、オンプレデータセンターと SSL-VPN で接続するためのゲートウェイを提供するサービスです。

<img src="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/64960/intl_en/1518316122455/VPN.png">


ということで、Alibaba Cloud の最も基本となるサービスのコンピューティング、ネットワークサービスをざっと解説してみました。

実際に、ECS インスタンス、Server Load Balancer、VPC、などを組み合わせて実際のウェブサービスを提供する方法も、後日紹介したいと思います。


## ECS インスタンスの起動方法

さて、ここまではサービスの解説だけでしたので、さっそくブラウザのマネジメントコンソールから仮想サーバであるところの ECS インスタンスを 1台してみて SSH 接続するまでの手順を紹介したいと思います。


1. ECS のサービスを選択して、左メニューから「インスタンス」を選択して、上のリージョンから「Asia Pacific NE 1 (Japan)」を選択して、「インスタンスの作成」を選択します
    <img width="1289" alt="s1.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/8e319d3c-1fc1-245f-a070-967f7b5ac744.png">

2. 基本構成の画面になります、価格モデルを従量課金、リージョンはアジア東北1（東京）ゾーン 1、インスタンスタイプを「ecs.sn2.medium」、イメージをパブリックイメージからせっかくなので 「Aliyun Linux 17.1 64bit」、ストレージは「Ultra クラウドディスク 40GB」を選択します、すべてを選択すると画面下部にこのインスタンスの価格が表示されますので価格を確認しておきましょう
    <img width="1287" alt="s2.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/74962fb9-666f-1536-f925-f18bb8fd1f33.png">

3. 「次のステップ: ネットワーク」を選択します、今回はとりあえずデフォルト VPC 上で作成してみるので、デフォルトのままとします
    <img width="1297" alt="s3.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/0d2b24e8-f99c-f785-e10b-1cf6f2aeda64.png">

4. 「次のステップ: システム構成」を選択します、ログオン資格に今回はパスワードを選択して任意の root ユーザのパスワードを入力します、パスワードは最低8文字でかつ英大文字、英小文字、数字あるいは特殊文字を含む必要があります
    <img width="1235" alt="s7.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/9c02d9ee-6303-edc9-263b-be7e9a52bfc8.png">

4. 「次のステップ」を選択して、選択構成を確認して「利用規約」をよく確認した上で「利用規約」に同意して「インスタンスの作成」をクリックします
    <img width="1227" alt="s4.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/7e46716b-2185-6f35-9cf7-58b78e4f8c1c.png">

5. コンソール画面に戻って、ECS インスタンスを起動するのを待ちます

6. インスタンスのステータスが「実行中」なったらサーバが起動したことになるので、右のアクションから「VNC」選択します 
    <img width="1173" alt="s8.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/f2c5cbb0-9d34-e481-0c20-0479014d18bd.png">

7. *初回* のみ VNC のパスワードが表示されつつコピーされます、VNC のパスワードを入力すると、お馴染みの Linux の画面が表示されます
    <img width="1136" alt="s6.png" src="https://qiita-image-store.s3.amazonaws.com/0/37318/74910308-b564-6184-cbb7-54eb66f0d7fe.png">

8. ユーザ名は、root、パスワードはさきほど設定したパスワードを入力するとログインすることができます

もちろん、VNC を利用しなくても SSH コマンドなどでターミナル画面からも接続することができます。

ブラウザ上から ECS インスタンスにログインできるのは、とても便利ですよね。

もちろん、CLI や API も提供されているので、ブラウザ以外からでも ECS インスタンスを起動することができます。


ということで、今回は Alibaba Cloud を初めてみたということで、基本サービスの説明と実際に仮想サーバであるところの ECS インスタンスを起動してみました。

引き続き、次回以降実際のウェブサービスとして展開する実践的な方法や、データベースサービスなど他のサービスも紹介していきたいと思います。