表題だけで初心者がやらかすアレと言われそうなアレですが、やらかしたのでメモ。
- EC2インスタンス起動時にユーザーデータで
yum install httpd -y
- 起動したインスタンスのIPアドレスにhttp接続してApacheのテストページが表示されることを確認
- Application Load Balanverを作成し、ターゲットグループを作り、このEC2インスタンスを追加
- 少し待ってターゲットのステータスを見ると
unhealthy
__原因__は単純で、Status Detailに Health check failed with these codes: [403]
とある通り、Apacheが403 Forbiddenエラーを返してるから。
Apacheのテストページが表示されている状態は、そもそもこの403: Forbeddenエラー状態で、実際に /var/log/httpd/access_log
には「ELBのヘルスチェックが GET /
してきたので403返しておきました」というようなログが残っている。
"GET / HTTP/1.1" 403 3630 "-" "ELB-HealthChecker/2.0"
また /var/log/httpd/error_log
には次のようなエラーが記録されている。
[autoindex:error] [略] [略] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive
__対処__はヘルスチェックを成功させたいだけなら /var/www/html/index.html
を作るのが無難で安全だと思われる。ユーザーデータに例えば以下のような1行を加える。
echo "<html><head><title>Test Page</title></head><body>Wellcome to `uname -n`.</body></html>" > /var/www/html/index.html