1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud x Amazon ECS Anywhereでマルチクラウド

Last updated at Posted at 2021-12-12

この記事は IBM Cloud Advent Calendar 2021 の 12日目の記事です。

#やってみたこと
今年はAWS Educateを大学に導入し、クラウドコンピューティングを主とした科目の授業をスタートさせることができました。IBM Cloudは以前から使っていますので、今回はAWSとIBM Cloudのマルチクラウドにチャレンジしてみます。

2021年6月に正式リリースされました「AWS ECS Anywhere」を使い、IBM Cloud上の仮想サーバーを「Externalインスタンス」として認識させ、「Metabase」のコンテナを実行します。「Metabase」は、オープンソースのローコードのBIツールで、直感的なデータ分析を行うことができます。
AWSとIBM Cloudの両方を使っていて、コンテナを使ったアプリケーション運用を行っていれば、Amazon ECS AnywhereをIBM Cloudで使う組み合わせは意外と悪くない選択肢かもしれません。

##構成イメージ
Untitled Diagram.drawio.png

使用環境の準備

IBM Cloud

IBM Cloud 上で仮想サーバーを用意します。「Virtual Server for VPC」もしくは「Virtual Server for Classic」のどちらでも構いません。金銭的に安い方は、「Virtual Server for Classic」で「一時」利用のサーバーです。今回は、2 vCPU、メモリ8GBのUbuntu Serverを使っています。

image.png

AWS

いつものAWSです。教育機関以外の場合は、AWS Management Console にアクセスします。
教育機関の場合は、AWS Educateを使った方が良いでしょう。AWS Educate であれば、クレジットカードなしで利用できます。
AWS Educateの場合は、「AWS Account」のタブをクリックし、「AWS Educate Starter Account」をクリックします。
image.png
その後、「AWS Console」をクリックすることで、通常のAWS Management Consoleにアクセスすることができます。

image.png

IBM Cloud をAmazon ECSの「External インスタンス」にする方法

実施することは、次のとおりです。

  1. 使用環境の準備の準備の段階で、IBM Cloud上で仮想サーバーを用意しておきます。
  2. Amazon ECSで、クラスター作成。
  3. Externalインスタンスの登録コードを作成。Amazon ECS Anywhereの利用。
  4. 生成されたコードを、IBM Cloud上の仮想サーバーに貼りつけて実行。
  5. Amazon ECSで、Meatabaseのコンテナを導入するタスクを作成。
  6. Amazon ECSで、タスクを実行。
  7. IBM Cloud上の仮想サーバーで、docker ps コマンドでコンテナ起動を確認。
  8. Webブラウザで、IBM Cloudの仮想サーバー上で起動したMetabaseコンテナに接続。

Amazon ECSで、クラスター作成

Amazon ECSにアクセスし、「クラスターの」作成をクリックします。

image.png

「ネットワーキングのみ」を選び、「次のステップ」をクリックします。

image.png

「クラスターの設定」で、「クラスター名」を英数字で入力します。今回は、ecs-externalとしました。入力後、「作成」をクリックします。

image.png

下図のように表示されます。「クラスターの表示」をクリックします。

image.png

Externalインスタンスの登録コードを作成。Amazon ECS Anywhereの利用

「ECSインスタンス」のタブをクリックします。次に「Externalインスタンス」をクリックします。

image.png

「Externalインスタンスの登録」では、デフォルトのままで良いので、「次のステップ」をクリックします。

image.png

生成されたコードを、IBM Cloud上の仮想サーバーに貼りつけて実行

表示されたコマンドをコピーし、IBM Cloud上で稼働する仮想サーバーに貼り付けで実行します。

image.png

IBM Cloud上で稼働する仮想サーバーに、Amazon ECSから生成されたコマンドを貼り付けて実行した様子。

image.png

下図のように処理が完了するまで待ちます。

image.png

暫く待つと、Amazon ECSのクラスター表示画面に、IBM Cloud上で稼働中の仮想サーバーが紐づきます。

image.png

Amazon ECSで、Meatabaseのコンテナを導入するタスクを作成

Amazon ECSの画面で、「タスク定義」>>「新しいタスク定義の作成」の順にクリックします。「タスク定義」には、動かしたいコンテナを定義、「タスク」を実行することで、Amazon ECSにとってのExternal、今回の構成では、IBM Cloud上の仮想サーバーでコンテナのデプロイをAmazon ECSから行います。

image.png

「起動タイプの互換性の選択」画面で、「External」を選び、「次のステップ」をクリックします。IBM Cloudだけでなく、Raspberry Piのようなエッジ環境、あるいはオンプレミス環境など、AWS以外の場合は「External」扱いです。

image.png

「タスクとコンテナの定義の設定」で、「タスク定義名」を入力します。ここでは、metabase としました。コンテナで動かしたいアプリケーション名にすると良いでしょう。

image.png

また同画面の下に移動し、「タスクメモリ」と「タスクCPU」を定義します。「タスクメモリ」はこの後に設定するコンテナの「メモリ制限」を超えないように、かつ今回の場合はIBM Cloud上の仮想サーバーのメモリを超えない値をセットします。「タスクCPU」も、今回の場合はIBM Cloud上の仮想サーバーを超えない範囲とします。

image.png

同画面の下にある「コンテナの定義」で「コンテナの追加」をクリックします。

image.png

「コンテナの追加」画面で、下図のように「コンテナ名」を入力します。「イメージ」には、コンテナの取得先を入力します。今回使用するmetabaseは、Docker Hubにイメージがありますが、プライベートレジストリを利用したい場合は、「プライベートレジストリの認証」にチェックを入れます。
また、「メモリ制限」には、「タスク定義」を超えない範囲でメモリを指定するとともに、ポートマッピングでは、metabaseの公式ドキュメントに従い、ホストポート番号とコンテナポート番号にそれぞれ3000を入力しています。各項目を入力後、「追加」をクリックします。

image.png

画面下の「作成」をクリックします。

image.png

Amazon ECSで、タスクを実行

作成した「タスク定義」が表示されます。表示されない場合は、画面左側の「タスク定義」をクリックし、作成したタスク定義画面にアクセスします。

image.png

「アクション」>>「タスクの実行」の順にクリックします。

image.png

「タスクの実行」画面で、下図のように「起動タイプ」を「External」とします。「タスク定義」には先程作成した「metabase」が選ばれているはずです。「クラスター」には、作成済みのクラスターが選ばれています。

image.png

画面下の「タスクの実行」をクリックします。

image.png

IBM Cloud上の仮想サーバーで、docker ps コマンドでコンテナ起動を確認

暫く待つと、IBM Cloud上の仮想サーバーで、コンテナが起動していることがわかります。docker ps コマンドで確認します。

image.png

Webブラウザで、IBM Cloudの仮想サーバー上で起動したMetabaseコンテナに接続

IBM Cloud上の仮想サーバーで、外部からのインバウンドで、TCPで3000番にアクセスできるようにポートを開放します。
Webブラウザで、IBM Cloud上の仮想サーバーのパブリックIP(VPCの場合は、浮動IP)を使いアクセスします。http://IPアドレス:3000
これで、Amazon ECS Anywhereを用いて、IBM Cloud上でコンテナを実行した結果を確認することができます。

image.png

「開始しましょう」をクリックし、Metabaseの初期設定を行い、サンプルデータによるダッシュボードも確認できました。

image.png

まとめ

IBM Cloudだけを使う開発者や企業よりも、AWSやMicrosoft Azureを使いつつIBM Cloudも使っているようなマルチクラウド、ハイブリッドな個人や企業が多いわけで、AWSとIBM Cloudについて、AWSとIBM Watsonの定番構成ではなく、Amazon ECS AnywhereとIBM Cloudの連携に手を出してみたところ、割と簡単に実現することができました。案外、悪くありません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?