メモ:apache(2.4.6)からajp(mod_jk)でjbossへ接続しようとして繋がらないエラー(ipv6が原因)

RHEL7.2でapache(2.4.6)からajpmod_jk)でjbossへ接続しようとして繋がらないエラーがあったので備忘録に残す。


mod_jkコンパイル、インストールは割愛

普通に設定してjbossアプリをapache経由でajp接続で表示するようにしたいがなぜか繋がらない

/var/log/httpd/mod_jk.log
[Mon May 09 19:58:57.604 2016] [8022:140172492949568] [info] jk_open_socket::jk_connect.c (817): connect to ::1:8009 failed (errno=111)
[Mon May 09 19:58:57.604 2016] [8022:140172492949568] [info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (ajp13) Failed opening socket to (::1:8009) (errno=111)
[Mon May 09 19:58:57.604 2016] [8022:140172492949568] [error] ajp_send_request::jk_ajp_common.c (1728): (ajp13) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111)
[Mon May 09 19:58:57.604 2016] [8022:140172492949568] [info] ajp_service::jk_ajp_common.c (2773): (ajp13) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1)

telnetで8009に突いても反応あるので、firewallの問題でもなく、jbossでも8009をリスンしていることまでは分かっていたが、上のログで「connect to ::1:8009 failed」となっていたので、ipv6のローカルホストを使っていることが判明。

で、ipv6を無効にして、無事ajpがアクセスできるようになったことを確認。
/var/log/httpd/mod_jk.logにはログは表示されません。

以下の方法でipv6を無効にしました。

# echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
# echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

もしくは下記でもいけるみたいです。

# sysctl -w net.ipv6.conf.all.disable_ipv6=1
# sysctl -w net.ipv6.conf.default.disable_ipv6=1

(ただしこのやり方だと再起動後にはipv6がまた有効になってしまう)

#追記(5/11)
/etc/hostsの中の一部を修正して"localhost"で"::1"が応答しないようにしました。

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  ↓
::1         localhost.localdomain localhost6 localhost6.localdomain6