39.3. HTTP サービスへの外部アクセスのデバッグ
クラスター外のマシンを使用している場合で、クラスターで提供されるリソースにアクセスしようとしている場合、パブリック IP アドレスでリッスンし、クラスター内のトラフィックをルーティングする Pod でプロセスが実行されている必要があります。この場合、OpenShift Container Platform ルーター は、HTTP、HTTPS (SNI を使用)、WebSocket または TLS (SNI を使用) について使用できます。
クラスター外より HTTP サービスにアクセスできないことを想定し、障害が発生しているマシンのコマンドラインを使って問題を再現します。以下を実行します。
curl -kv http://foo.example.com:8000/bar # But replace the argument with your URL
成功する場合は、正しい場所からバグを再現しているかどうかを確認します。サービスに機能する Pod と機能しない Pod が含まれる可能性もあります。したがって、「ルーターのデバッグ」 セクションを参照してください。
失敗した場合は、IP アドレスに対して DNS 名を解決します (ないことを想定します)。
dig +short foo.example.com # But replace the hostname with yours
IP アドレスが返されない場合は、DNS をトラブルシューティングする必要がありますが、これについては本書では扱いません。
返される IP アドレスがルーターを実行するルーターであることを確認します。そうでない場合は、DNS を修正します。
次に ping -c address
および tracepath address
を使用して、ルーターホストに到達できることを確認します。それらが ICMP パケットに応答しない場合もあり、この場合はそれらのテストは失敗しますが、ルーターマシンにはアクセスできる場合があります。この場合、コマンドを使ってルーターのポートに直接アクセスしてみます。
telnet 1.2.3.4 8000
以下が表示される場合があります。
Trying 1.2.3.4... Connected to 1.2.3.4. Escape character is '^]'.
この場合、IP アドレスのポートでリッスンしているものがあることを示しています。これは適切と言えます。ctrl-]
を押してから enter キーを押し、close
と入力して telnet を終了します。「ルーターのデバッグ」 セクションに移動して、ルーター上の他の内容を確認します。
または、以下が表示される可能性があります。
Trying 1.2.3.4... telnet: connect to address 1.2.3.4: Connection refused
これは、ルーターがそのポートでリッスンしていないことを示します。ルーターの設定方法における追加のポイントについては、「ルーターのデバッグ」 セクションを参照してください。
または、以下が表示される場合があります。
Trying 1.2.3.4... telnet: connect to address 1.2.3.4: Connection timed out
これは、IP アドレス上のいずれとも通信できないことを示します。ルーティング、ファイアウォールを確認し、IP アドレスでリッスンしているルーターがあることを確認します。ルーターをデバッグするには、「ルーターのデバッグ」 セクションを参照してください。IP ルーティングおよびファイアウォールの問題については、本書では扱いません。