Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Copyright © 2018 Classi Corp. All Rights Reserved.
システムをEC2から
Fargateへ安全にリプレイス
高田 佳樹
Classi株式会社
Real Tech Night #3
自己紹介
ハンドルネーム: spin13
Twitter: @spinning13
・基本的には(Web)アプリケーションエンジニア
・インフラも開発もどっちも好き
概要
現在動いている既存システムの機能の一部を新しい環境に
安全にリプレイス
EC2上で動いている既存システムをECSのFargateに移行
安全に移行する方法を紹介
Fargateって?
ECSの起動タイプの2つのうちの1つ
起動タイプ
EC2 Fargate
こっち
ECSって何?
Elastic Container Service
すごく簡単な概要は...
AWSがDockerコンテナをサポート
AWSがDockerコンテナの実行環境を用意
2つの起動タイプ
EC2 Fargate
用意したEC2インスタンスに
ECSでコンテナをデプロイ
えっ?
・EC2インスタンスへのコンテナ配置の設定
・EC2インスタンスのプロビジョニング等の管理
は必要
・スケーリングする時はEC2インスタ...
なぜFargateを選ぶか
マイクロサービスアーキテクチャで
アプリケーションの種類が多いケース
例えば9種類 起動モードEC2
アプリケーションD
アプリケーションE
アプリケーションF
アプリケーションG
アプリケーションH
アプリケーショ...
起動モードFargate
アプリケーションA
アプリケーションA
アプリケーションA
アプリケーションB
アプリケーションC
アプリケーションC
アプリケーションD
アプリケーションE
アプリケーションF
アプリケーションG
アプリケーションH...
リプレイス戦略
いくつかの条件...
・既存の環境のシステムと相互に切り替えが可能なこと
・切り替えが容易であること
リプレイス戦略
既存環境
リクエスト
ロードバランサー
LBで受けてEC2インスタンスに振り分ける
DB
リプレイス中
リクエスト
新環境の
ロードバランサー
Fargate
nginx
Fargate
アプリケーション
サーバ
アプリケーション
サーバ
新環境の
internal ALB
既存環境の
ロードバランサー
赤色が新環境で追加した経路
...
リクエスト
新環境の
ロードバランサー
Fargate
nginx
Fargate
アプリケーション
サーバ
アプリケーション
サーバ
新環境の
internal ALB
完全にリプレイスすると既存環境の青い経路の部分がなくなる
リプレイス完了後
既存環境のみに戻したい場合
最初にリクエストを受けるロードバランサーの設
定DNS名を変えるだけで戻せる
新環境と既存環境の振り分け方法
新環境のNginxにmrubyを組み込む または OpenRestyを使って
proxy_pass先を新・既存環境で振り分けるロジックを入れる
Classiの場合...
Openrestyを採用
ngx_mrub...
Redisに学校IDと新環境に振り分けるかのフラグのペアを格納
OpenRestyでCookieから学校IDを取得してRedisを参照
返ってきた値がTrueだったら新環境 そうでなければ既存環境
リクエスト
新環境の
ロードバランサー
openresty
学校ID: 99999
の値を見に行く
学校ID: 99999
のフラグを返す
Cookieから
学校IDを取得
Fargateの罠
ECSはコンテナイメージをECR等のコンテナイメージのリポ
ジトリからPullする
ECRへのアクセスにはインスタンスからVPC内だけでなく
インターネット へもアクセスできる必要がある
起動タイプが...
EC2 Fargate
EC2モードでは
EC2インスタンスがインターネットにつながってればイメージをPullできる
Fargateでは
VPCでNat Gateway等を使ってインターネットアクセスをできる状態でない
とP...
余談
ECSは2017年11月くらいまでは
EC2 Container Service
と呼ばれていた
EOF
Nächste SlideShare
Wird geladen in …5
×

Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス

1.801 Aufrufe

Veröffentlicht am

2018/12/07 Real Tech Night #3
システムをEC2からFargateへ安全にリプレイス
https://realtech-night.connpass.com/event/110083/

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス

  1. 1. Copyright © 2018 Classi Corp. All Rights Reserved. システムをEC2から Fargateへ安全にリプレイス 高田 佳樹 Classi株式会社 Real Tech Night #3
  2. 2. 自己紹介 ハンドルネーム: spin13 Twitter: @spinning13 ・基本的には(Web)アプリケーションエンジニア ・インフラも開発もどっちも好き
  3. 3. 概要 現在動いている既存システムの機能の一部を新しい環境に 安全にリプレイス EC2上で動いている既存システムをECSのFargateに移行 安全に移行する方法を紹介
  4. 4. Fargateって? ECSの起動タイプの2つのうちの1つ 起動タイプ EC2 Fargate こっち
  5. 5. ECSって何? Elastic Container Service すごく簡単な概要は... AWSがDockerコンテナをサポート AWSがDockerコンテナの実行環境を用意
  6. 6. 2つの起動タイプ EC2 Fargate 用意したEC2インスタンスに ECSでコンテナをデプロイ えっ? ・EC2インスタンスへのコンテナ配置の設定 ・EC2インスタンスのプロビジョニング等の管理 は必要 ・スケーリングする時はEC2インスタンスも増え る コンテナの実行環境はAWSが用意 ・コンテナを動かすマシンの管理が不要 ・使用したいCPUとメモリの要件を指定 ・スケーリングにインスタンスを気にする必要なし 期待していたコンテナ実行環境に近い ※SubnetのIPは消費するので注意
  7. 7. なぜFargateを選ぶか マイクロサービスアーキテクチャで アプリケーションの種類が多いケース 例えば9種類 起動モードEC2 アプリケーションD アプリケーションE アプリケーションF アプリケーションG アプリケーションH アプリケーションI アプリケーションA アプリケーションB アプリケーションC これだけのコンテナを動かす インスタンスを用意 または インスタンス毎のコンテナの配 置を考える 管理コストが高い
  8. 8. 起動モードFargate アプリケーションA アプリケーションA アプリケーションA アプリケーションB アプリケーションC アプリケーションC アプリケーションD アプリケーションE アプリケーションF アプリケーションG アプリケーションH アプリケーションI アプリケーションAが3台 アプリケーションCが2台 他は1台ずつ Fargateであればインスタンスの管 理をする必要がない! こういう構成はEC2だと面倒
  9. 9. リプレイス戦略 いくつかの条件... ・既存の環境のシステムと相互に切り替えが可能なこと ・切り替えが容易であること
  10. 10. リプレイス戦略 既存環境 リクエスト ロードバランサー LBで受けてEC2インスタンスに振り分ける DB
  11. 11. リプレイス中 リクエスト 新環境の ロードバランサー Fargate nginx Fargate アプリケーション サーバ アプリケーション サーバ 新環境の internal ALB 既存環境の ロードバランサー 赤色が新環境で追加した経路 青色が既存環境の経路 DB バックエンドのDBは 同じ
  12. 12. リクエスト 新環境の ロードバランサー Fargate nginx Fargate アプリケーション サーバ アプリケーション サーバ 新環境の internal ALB 完全にリプレイスすると既存環境の青い経路の部分がなくなる リプレイス完了後
  13. 13. 既存環境のみに戻したい場合 最初にリクエストを受けるロードバランサーの設 定DNS名を変えるだけで戻せる
  14. 14. 新環境と既存環境の振り分け方法 新環境のNginxにmrubyを組み込む または OpenRestyを使って proxy_pass先を新・既存環境で振り分けるロジックを入れる Classiの場合... Openrestyを採用 ngx_mrubyと比べてビルトインされている機能が豊富
  15. 15. Redisに学校IDと新環境に振り分けるかのフラグのペアを格納 OpenRestyでCookieから学校IDを取得してRedisを参照 返ってきた値がTrueだったら新環境 そうでなければ既存環境
  16. 16. リクエスト 新環境の ロードバランサー openresty 学校ID: 99999 の値を見に行く 学校ID: 99999 のフラグを返す Cookieから 学校IDを取得
  17. 17. Fargateの罠 ECSはコンテナイメージをECR等のコンテナイメージのリポ ジトリからPullする ECRへのアクセスにはインスタンスからVPC内だけでなく インターネット へもアクセスできる必要がある
  18. 18. 起動タイプが... EC2 Fargate EC2モードでは EC2インスタンスがインターネットにつながってればイメージをPullできる Fargateでは VPCでNat Gateway等を使ってインターネットアクセスをできる状態でない とPullできない VPCのネットワーク構成によってはハマるので注意!
  19. 19. 余談 ECSは2017年11月くらいまでは EC2 Container Service と呼ばれていた
  20. 20. EOF

×