背景
EC2にdockerもinstallできたし、ローカルのvs codeも接続できた!
さて、java開発していくか!
…ん?コード補完ができない。
エラーを見ると、なになに。コードを予測するためのjdkが見当たらない。
なるほど、、ローカルにはjdk8しか入れていないし、ローカルのvscodeからEC2にあるdockerのjdkにはdevcontainer接続するのは難しそうだ。
※要は[vscode(local)]-(SSH)-[EC2]-(internal)-[docker]になっているけど、EC2を踏み台にdockerに直接入る形でないと、devcontainerできない。
devcontainerでやり切る方法を探してもいいけど、もともとローカル環境に依存しない開発環境を作りたかったので、複雑なdevcontainer設定せずに解決できる方法は無いものか…
やっぱりcode-serverをEC2に立てて、code-serverからdockerに入るかな。
⇒この後調べたが、docker-in-docker(多分やりたいのは、正確にはdocker-outside-of-docker)をすれば、code-serverをdocker化して、さらにそこからdockerアプリの開発をすることもできる
作業
どんな選択肢があるかの比較など、ベースとなる動き方で参考にしたサイト
EC2にcode-serverをインストール
通信経路をSSL化
nginxのインストール
/index.htmlの表示
・ELBのヘルスチェックは問題なし
・インスタンスのパブリックIPからアクセスすると正常に表示
・ALB経由でインスタンスアクセスするとアクセスログが文字化け
172.17.3.58 – – [24/Jan/2023:17:56:33 +0900] “GET /index.html HTTP/1.1” 200 615 “-” “ELB-HealthChecker/2.0” “-“
172.17.1.214 – – [24/Jan/2023:17:56:34 +0900] “GET /index.html HTTP/1.1” 200 615 “-” “ELB-HealthChecker/2.0” “-“
172.17.3.58 – – [24/Jan/2023:17:56:55 +0900] “\x16\x03\x01\x00\xA3\x01\x00\x00\x9F\x03\x03\x131\xD2\xEA\xC6\x1A\x95~\x95\x1E\x82\xAB\x19H8\xCF\xF2\xD9\xDD\xA0\xCC\xEC%\xF7\xD3D:\xAAIV\x18S\x00\x00&\xC0+\xC0/\xC0#\xC0’\xC0\x09\xC0\x13\xC0,\xC00\xC0$\xC0(\xC0\x14\xC0” 400 157 “-” “-” “-“
172.17.3.58 – – [24/Jan/2023:17:56:55 +0900] “\x16\x03\x01\x00\xA3\x01\x00\x00\x9F\x03\x03q\xB9\x07$\xBDO\xCF\xF5x\xEA\xE3\x0Fh\xE5li\x02C\xF2\xF2\xA2\x83\xCC\x902\xAB%fmx\x09\xDA\x00\x00&\xC0+\xC0/\xC0#\xC0’\xC0\x09\xC0\x13\xC0,\xC00\xC0$\xC0(\xC0\x14\xC0” 400 157 “-” “-” “-“
SSLの復号化ができていない…?
ということで、SSL設定を入れていないALB作成し、やってみる。
ん?ターゲットグループにHTTPSって書いてあるぞ、もしやターゲットグループのINがHTTPSになっている?
⇒ターゲットグループのINをHTTPに変更。うまくいった~~
172.17.1.214 – – [24/Jan/2023:18:37:54 +0900] “GET / HTTP/1.1” 200 615 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36” “125.199.50.139”
websocketに対応できていないエラーが発生
⇒web socketを通せるようにnginx.conf修正
ここまでやってみたけど、結局nginx本当にいるの…?
ということで一旦、nginxを外して直接code-serverつなげてみた。
⇒結果、connection timeout連発。多分、code-serverの処理が遅くてALBが待てないのだろう。keep-aliveとか諸々の設定があるおかげで、nginxを通しているとうまくいくのかもしれない。しばらくはnginxを入れたまま様子見しよ。
Route 53って、ホストゾーン設定すると $0.5 /月 かかるのね…見落としてた
Java導入
java導入した
# rootユーザーログイン
sudo su -
# amazon-correttoの選択肢を確認
yum search java | grep amazon
# java インストール
sudo yum install -y java-17-amazon-corretto.x86_64
インスタンスタイプ変更
拡張機能入れて、java入れて使っていたけど、いきなり応答速度が落ちた。CloudWatch見てもめちゃくちゃ怪しいところはない(しいて言えばCPU使用率60%ぐらいになっていた)
試しに、インスタンスサイズをt2.micro⇒t4g.largeに変更。改善されたが料金もう少し安いのでいけないか探し、t3a.mediumでそれなりに動いたため固定。
nginxログをCloudWatch Logsに転送
ストレージ容量小さいし、ログはEC2に残さず原則転送。残すのは1世代前まで
(これは、CloudWatch転送失敗したときのリカバリ期間による、業務用なら1週間ぐらいかな)
まずはローテ設定。前日の疎通確認していたログは転送してほしくない。
下記を参考にdateextとrotate 1だけ変えて設定をした
あと、なぜかpostscriptは初期設定のままの方がうまくいったので、記事の通りにはしていない
次にCloudWatchLogsへの転送設定
I AMポリシー何もアタッチしていないと転送されないのね。アタッチした瞬間に転送始まった
conf記載内容について書かれているのがこれ
フォーマッタの設定(いよいよ)
フォーマッタ設定した
備忘録
- EC2構築は、EC2の画面「接続」にてweb上からターミナルアクセスが良い。SSH接続試すのは良いけど、外から接続するのは面倒。
⇒ただ、SSH接続キーを保管しておけないよね。キーペア保管せず毎度ssh-keygenする方が良いのかな?運用考えよ
コメント