この記事は Alibaba Cloud の日本サイト の環境(ドキュメントやアカウント、そのアカウントでの検証結果)に基づいて記載しています。 日本サイトと国際サイトでは各プロダクトごとに提供機能が一部異なることがあります(そのほとんどは国際サイトの方が日本サイトよりも多機能になっている)。記事の内容は適宜最新化する予定です。
AWSやAzureなどのパブリッククラウドでは複数の仮想マシンが動作する環境において物理ホストの障害発生時の影響範囲を明示的にコントロールする機能が提供されています。 Azureでいうと可用性セットや可用性ゾーンになります。
Alibaba CloudでもInternational サイトではすでに”デプロイメントセット”として提供されている機能なのですが、日本サイトでも利用可能になったようです。
先週末(4/6,4/7)にコンソールのECSの管理画面にメニューには表示されること、メニューをクリックしても空白のページが表示されることを確認していました。 本日アクセスすると利用できる状態になっていました。
目次
1. デプロイメントセットとは
公式のドキュメントセンターのURLは以下になります。
デプロイメント戦略
デプロイメントセットを使用して、ビジネスに関連する Elastic Compute Service (ECS) インスタンスをさまざまな物理サーバーに分散させ、ビジネスの低レベルの耐障害性に対して、機能や高可用性を保証することができます。デプロイメントセットにインスタンスを作成すると、設定したデプロイメント戦略に基づき、指定したリージョンでインスタンスが個別に起動されます。インスタンス用のデプロイメントセットを作成していない場合は、可能な限りサービスの可用性を確保するために、異なる物理サーバーでインスタンスを起動してください。
現在、デプロイメントセットは高可用性戦略をサポートしています。
・高可用性戦略を使用すると、デプロイメントセット内のすべての ECS インスタンスは、指定されたリージョン内のさまざまな物理サーバーに厳密に分散されます。高可用性戦略は、複数の ECS インスタンスを、互いに分離する必要があるアプリケーションアーキテクチャに適用されます。この戦略により、サービスが利用できなくなる可能性が大幅に減少します。
・高可用性戦略を使用すると、リージョン内でサプライ不足が発生したときに ECS インスタンスを作成できないことがあります。さらに、 停止済みインスタンスの非課金化の従量課金インスタンスは、再起動の失敗を引き起こす可能性があります。しばらく待ってからインスタンスを作成または再起動することを推奨します。
https://jp.alibabacloud.com/help/doc-detail/91258.html?spm=a2c5t.11065259.1996646101.searchclickresult.98c3168czSVsgP
上記仕様から言えることは複数のECSインスタンスを1つのデプロイメントセットに登録すると、それぞれのECSインスタンスは異なる物理サーバ上に自動的に配置されることになります。
また1つのデプロイメントセットに登録出来るECSインスタンスは7台という制約があるとのこと。さらに1つのゾーンには1つのデプロイメントセットのみとなるようです。
1 つのゾーンのデプロイメントセットに作成できるインスタンスは 7 つのみです。リージョンに作成できるインスタンスの数は、7 にゾーンの数を掛けたものです
https://jp.alibabacloud.com/help/doc-detail/91483.htm?spm=a21mg.p38356.b99.148.2e274989vJlYhZ
なお、利用において課金は発生しないとのこと。
課金詳細
https://jp.alibabacloud.com/help/doc-detail/91258.htm?spm=a21mg.p38356.b99.146.390371840xtZ8u
デプロイメントセットを使用すると、サービス料は発生しません。消費の詳細として、使用しているインスタンス、ディスク、イメージ、および帯域幅のみが含まれます。詳しくは、 「料金の概要」 をご参照ください
2. デプロイメントセットの作成
実際の設定画面を見てみましょう。 ECSの管理画面の左メニューに”デプロイメントセット”があります。 ”デプロイメントセットの作成”をクリックします。
名前は適当に設定し、”OK”をクリックします。
”test”デプロイメントセットが作成されました。
以上でデプロイメントセットの登録は完了です。 特に設定項目はありません。
なお、仕様として1ゾーンに1つのデプロイメントセットが上限とのこと。2つのゾーンを持つ東京リージョンに3つのデプロイメントセットを作成できるかどうか試してみます。
2つのデプロイメントセットは問題なく作成できました。
3つ目を作成します。失敗しました。 ”The deplomentSet quota is full”とのことなので仕様どおりの動作を確認出来ました。
3. デプロイメントセットからECSを購入
デプロイメントセットの画面からECSを購入することで、作成するECSインスタンスを最初から該当のデプロイメントセットに登録することが可能です。
作成された”test”デプロイメントセットをクリックします。
”インスタンスの作成”をクリックします。
ECSの購入画面が開きました。 通常と同じ手順でECSインスタンスを購入します。今回はテスト用に従量課金で購入します。
購入したECSインスタンスがデプロイメントセットに登録されているかどうかを確認します。
ECSインスタンスのメニューから”詳細”>”インスタンスの設定”>”デプロイメントセットの変更”を実行します。
先ほど作成したデプロイメントセットに所属していることが確認できます。
4. すでにあるECSインスタンスをデプロイメントセットに登録する
デプロイメントセットに未登録のECSインスタンスを事前に作成しておきます。
ECSインスタンスのメニューから”詳細”>”インスタンスの設定”>”デプロイメントセットの変更”を実行します
デプロイメントセットの変更画面が開きます。 ”現在のデプロイメントセット”は”なし”になっています。
”ターゲットデプロイメントセット”のリストボックスから登録するデプロイメントセットを選択し、”OK”をクリックします。
変更が反映したか確認します。
ECSインスタンスのメニューから”詳細”>”インスタンスの設定”>”デプロイメントセットの変更”を実行します 。現在のデプロイメントセットに登録されたデプロイメントセットが表示されることを確認できます。
なお、デプロイメントセットの変更はECSインスタンスを稼働したまま実行可能でした。
5. まとめ
デプロイメントセットの概要から作成、ECSインスタンスの登録まで一通り確認出来ました。 デプロイメントセットについては名前しか設定する箇所はなく非常にシンプルです。
一方、1つのリージョンにおいて1ゾーンに1つのデプロイメントセットしか作成できず、また、1つのデプロイメントセットには7台のECSインスタンスしか作成出来ないことはシステムの設計を行う際の考慮すべき仕様と言えます。
1つのデプロイメントセットに7台のECSインスタンスが上限となることは一見厳しい制約に見えます。 実際のユースケースを考えてみることにします。
以下、2つのゾーンを持つ東京リージョンのケースです。東京リージョンでは2つのデプロイメントセットを利用できることが前提となります。なお、ゾーンを6つもつ上海リージョンなどでは6つのでデプロイメントセットを利用可能です。
ECSインスタンスが2台の場合は、2つのゾーンにそれぞれECSインスタンスを配置することで1台の物理ホストの障害時にもサービスを継続することが可能です。 言い換えると1台の物理ホスト障害時にも必ず1台のECSインスタンスの稼働は確保されています。
以下のアーキテクチャになると思います。 この場合、デプロイメントセットは構成不要です。
4台のECSインスタンスのケースを想定します。
ECSインスタンスが4台の場合はデプロイメントセットを利用することで物理ホスト障害時にも最低3台のECSインスタンスの稼働を確保出来ます。この場合、1つのデプロイメントセットには最大7台のECSインスタンスの制約があるため、14台までがデプロイメントセットでコントロール出来る範囲となります。
一定の性能を担保する必要がある基幹システムなどが利用シーンになると想定されます。 この時、14台のECSインスタンスが最大構成となり、物理ホスト障害時には13台のECSインスタンスでのサービス提供を担保することが出来ます。
15台以上のECSインスタンスが必要な場合は、デプロイメントセットではECSインスタンスの最低稼働台数を事前に予測することは出来ません。 完全な解決策は思いつかないのですが、1台の物理ホスト障害時に複数のECSインスタンスが停止する想定でより多くのECSインスタンスをデプロイすることが設計方針になると考えます。
今回、日本サイト契約でもデプロイメントセットを利用できるようになったことで可用性をよりコントールできるシステムを実現可能になりました。 AWSやAzureではすでに実装済の機能だったわけですがAlibaba Cloudも日々進歩、進化しているのだと思いました。
以上です。