cto-a / private-isu-ops

ISUCON研修運営用
0 stars 0 forks source link

構築2024 #54

Closed kesompochy closed 3 months ago

kesompochy commented 3 months ago

2024年も同じことをやるので構築していく

kesompochy commented 3 months ago

とりあえず前年と同様のものが動かせるようにしておきたい。何が必要だろうか。

kesompochy commented 3 months ago

とりあえず私が覚えていそうなポータルから作っていくか

kesompochy commented 3 months ago

ポータル一式が立ったはず。運用スクリプトに環境変数がハードコードされててつらい

kesompochy commented 3 months ago

initializeスクリプトを走らせて、ログインできることを確認した。

image

ワークフローのOIDCで権限を得るのになぜか苦戦しているので手元で走らせた

kesompochy commented 3 months ago

競技サーバー

https://github.com/cto-a/private-isu-ops/issues/7#issuecomment-1596124400

どうやらマシンイメージはcatatsuyさんのものがあるらしい

kesompochy commented 3 months ago

競技サーバー完全に理解した。 同一のマシンイメージ・鍵・スペックでn台作るだけか。ではいまのうちにやっておくべき必須のことはなさそう。もしあれならtfコードか実施スクリプトがあると便利そう

kesompochy commented 3 months ago

lambda部分

https://github.com/cto-a/private-isu-ops/issues/8 https://github.com/cto-a/private-isu-ops/pull/32

以上の作業を実行するtsスクリプトがある。lambdaデプロイは手動でやってたという理解

kesompochy commented 3 months ago

ECS周りで何が行われていたかを見ている。SQS、tfコード化されてない気配がする。

kesompochy commented 3 months ago

ECS付近は @harukin721 がやりそう https://github.com/cto-a/private-isu-ops/pull/55 なのでそれ以外を進めていく。 とりあえずlambdaかな。なんらかのURLにcurlして関数が実行されるようにする。

kesompochy commented 3 months ago

https://github.com/cto-a/private-isu-ops/pull/59

$ curl https://8ukqooeebg.execute-api.ap-northeast-1.amazonaws.com
null⏎                                                                                      

エンドポイントを叩いてnullが帰ってくるようになった

kesompochy commented 3 months ago

いまnullなのは単にエラーになっているだけっぽい。

2024-07-29T15:44:35.406Z    c9dd2a98-60d5-4185-b46f-589e8842daf2    ERROR   TypeError: Failed to parse URL from undefined
    at node:internal/deps/undici/undici:12502:13
    at async ije (file:///var/task/index.mjs:27:240851)
    at async Runtime.w$e [as handler] (file:///var/task/index.mjs:27:241571) {
  [cause]: TypeError: Invalid URL
      at new URL (node:internal/url:797:36)
      at new Request (node:internal/deps/undici/undici:4853:25)
      at fetch (node:internal/deps/undici/undici:9662:25)
      at fetch (node:internal/deps/undici/undici:12500:10)
      at value (node:internal/bootstrap/web/exposed-window-or-worker:72:12)
      at ije (file:///var/task/index.mjs:27:240857)
      at Runtime.w$e [as handler] (file:///var/task/index.mjs:27:241577)
      at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1173:29) {
    code: 'ERR_INVALID_URL',
    input: 'undefined'
  }
}

環境変数の指定が足りないだけなのであとで調整する。

kesompochy commented 3 months ago

さて、SQSキューでも作るかな

kesompochy commented 3 months ago

https://github.com/cto-a/private-isu-ops/pull/60 雑に作った。あとはECSタスクが存在して接合部分を調整すれば完全体になれる

kesompochy commented 3 months ago

残り

〜〜〜〜〜ここまでは確実にやる〜〜〜〜〜〜

harukin721 commented 3 months ago

ECS タスクを起動しました。 https://github.com/cto-a/private-isu-ops/pull/55


# ECS ログ
exec /opt/go/run.sh: exec format error

ECR へのイメージプッシュでこれを引いたので見ています。 https://qiita.com/strings/items/ba4ab40b79b24ca4548d

kesompochy commented 3 months ago
exec format error

cpuアーキテクチャのやつでよく見るエラーだ

harukin721 commented 3 months ago

colima 立ち上がってくれ..

% colima start --arch x86_64   
% docker build -t private-isu-benchmarker-repository --platform linux/x86_64 .
% docker tag private-isu-benchmarker-repository:latest 009160051284.dkr.ecr.ap-northeast-1.amazonaws.com/private-isu-benchmarker-repository:latest
% docker push 009160051284.dkr.ecr.ap-northeast-1.amazonaws.com/private-isu-benchmarker-repository:latest
kesompochy commented 3 months ago

適当なキーペアを作ってインスタンスを起動して次のことを確認できた

image

設定は次のような感じ

harukin721 commented 3 months ago

https://github.com/cto-a/private-isu-ops/issues/54#issuecomment-2257440114 いけたーー

kesompochy commented 3 months ago

やったぜ

harukin721 commented 3 months ago

ログ変わった

image

https://ap-northeast-1.console.aws.amazon.com/ecs/v2/clusters/benchmarker-ecs-cluster/services/benchmark-ecs-service/logs?region=ap-northeast-1

kesompochy commented 3 months ago

https://github.com/cto-a/private-isu-ops/pull/62 インスタンスの起動がいい感じになったのでlambdaを叩いてSQSと接続、ECSタスクの起動ができるようにする

kesompochy commented 3 months ago
  1. インスタンス起動
  2. ポータル用DB、ユーザーデータ初期化
  3. インスタンスにSSHログイン
  4. インスタンスからlambdaのURLを叩く
  5. ポータルで得点推移が閲覧できる

以上の流れができるようになった。とりあえずこれで最低限の準備はOK?

image
yaggytter commented 3 months ago

素晴らしい!!! ちなみに、チームとIPが書いてあるスプレッドシートってどうしたんでしたっけ?

kesompochy commented 3 months ago

📝 昨年のものをそのまま使っているとdiscordで回答済み

このissueでやるべきことは終わったのでclose