質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

10579閲覧

NLBのヘルスチェックUnhealthy解消方法

退会済みユーザー

退会済みユーザー

総合スコア0

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2021/10/12 00:59

編集2021/10/12 05:56

前提・実現したいこと

現在リンク先にあるようなPrivateLinkを用いたクロスアカウントのサービスの連携を構築したいと思い作業しています。
https://qiita.com/mksamba/items/20903940b8b256ef2487

発生している問題・エラーメッセージ

PrivateLinkを用いた連携のためNLBを初めて構築している中で、ターゲット先にインターネットゲートウェイがルートに含まれていないサブネットに設置されてる2台のインスタンスへのヘルスチェックがUnhealthyになっていて原因を調べ修正してもなかなか解消されません。

<状況>
・リスナーのプロトコル・ポートはTCP・80に設定
・ターゲットグループのプロトコル・ポートはTCP・80に設定
・ヘルスチェックのプロトコル・ポートはTCP・80に設定
※ヘルスチェックを解消するためであれば変更可

[Health status] Unhealthy [Health status details] Health checks failed

試したこと

・ターゲット先インスタンスのセキュリティグループにてクライアント先のVPC CIDRとNLBヘルスチェック用のサブネットCIDRをポート80で許可(アウトバウンドも同様)
→Unhealthyのまま変わらず

・検証のため一時的にセキュリティグループを「すべてのトラフィック」を「0.0.0.0/0」で許可
→Unhealthyのまま変わらず

・インスタンスの中身に問題があることを想定し、検証のため既にALBを使用した構成でHealthyになっている別環境のインスタンスのAMIをコピーしインスタンスを立ち上げターゲットに追加
→Unhealthyのまま変わらず

・VPC到達可能性アナライザーにてNLBのENIからターゲット先インスタンスのプライベートIPまでを分析し、結果は到達可能だった

・pingをターゲット先インスタンスからNLBのENI宛とDNS名宛に投げたが返ってきませんでした

補足情報

NLBで失敗している環境で試しにALB用ターゲットグループを作ってみたがそちらもUnhealthy

追記

>(1)80ポートでチェックしていると言うことはHTTPプロトコルでターゲットにApacheもしくはnginxを入れて起動していると思うのですが、こちらのログはどうなっているのでしょうか
→Apacheが入っており調査した結果403を返しておりました。エラーログを見るとヘルスチェック用に作成した/var/www/html/index.htmlへのpermission deniedが出力されていました。
出力結果が以下のものです。(一部伏せております)

[/var/log/httpd/access_log] xxx.xxx.xxx.xxx - - [xx/xxx/2021:xx:xx:xx +0900] "GET /index.html HTTP/1.1" 403 199 "-" "ELB-HealthChecker/2.0"
[/var/log/httpd/error_log] (13)Permission denied: [client xxx.xxx.xxx.xxx:xxxxx] AH00132: file permissions deny server access: /var/www/html/index.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2021/10/12 01:45 編集

80ポートでチェックしていると言うことはHTTPプロトコルでターゲットにApacheもしくはnginxを入れて起動していると思うのですが、こちらのログはどうなっているのでしょうか? ヘルスチェックに対して404とかエラーを返していればUnhealthyと判別されてしまう気がするので、200をちゃんと返しているかのチェックは必要になると思います。200を返せてないのであれば、200になるように設定を変更する必要があると思います。 問題ないようであれば、この点は質問文に入れてください。
AbeTakashi

2021/10/12 07:17

403を返しているとUnhealthyと判別される可能性もあるとおもいますが、これを200を返すようにできないでしょうか? パーミッションの設定だと思いますが。/var/www/html/index.html をnginxがアクセスできるようにしてみてください。200を返してもUnhealthyなら別の原因だと思います。
退会済みユーザー

退会済みユーザー

2021/10/12 08:39

403を返していたため権限を変更したら200を返すようになり無事Healthyになりました。。。 初歩的なことにも関わらずご指摘いただきありがとうございました。
AbeTakashi

2021/10/12 09:10

解決できて良かったです。yu_1985さんの回答がBAでいいと思います。
guest

回答1

0

ベストアンサー

/var/www/html/index.htmlへのpermission deniedが出力されていました

既に書かれていますが、恐らくこれが直接的な問題だと思うので…。
/var/www/htmlとその配下にあるファイルに対してApacheの起動ユーザがアクセスできるような権限になっていますか?
ls -l /var/www
ls -l /var/www/html
で確認してみてください。
Apacheの起動ユーザは特に何もしていなければ apacheです。

投稿2021/10/12 08:25

yu_1985

総合スコア7586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/12 08:40

起動ユーザをapacheに変更することで解決しました。。。 初歩的なことにも関わらずありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問