JBoss AS 7 Admin Guide – Management tasks – Interfaces and ports
Interface declarations
AS7 は名前付きインターフェースを使用し、論理名を与えられたインターフェースは設定 (ファイル) 内で参照されます。
ネットワークインターフェースは論理名と物理インターフェースへのクライテリアにより宣言されます。:
[standalone@localhost:9999 /] :read-children-resources(child-type=interface)
{
“outcome” => “success”,
“result” => {
“management” => {
“any” => undefined,
“any-address” => undefined,
“any-ipv4-address” => undefined,
“any-ipv6-address” => undefined,
“inet-address” => expression “${jboss.bind.address.management:127.0.0.1}”,
“link-local-address” => undefined,
“loopback” => undefined,
“loopback-address” => undefined,
“multicast” => undefined,
“name” => “management”,
“nic” => undefined,
“nic-match” => undefined,
“not” => undefined,
“point-to-point” => undefined,
“public-address” => undefined,
“site-local-address” => undefined,
“subnet-match” => undefined,
“up” => undefined,
“virtual” => undefined
},
“public” => {
“any” => undefined,
“any-address” => undefined,
“any-ipv4-address” => undefined,
“any-ipv6-address” => undefined,
“inet-address” => expression “${jboss.bind.address:127.0.0.1}”,
“link-local-address” => undefined,
“loopback” => undefined,
“loopback-address” => undefined,
“multicast” => undefined,
“name” => “public”,
“nic” => undefined,
“nic-match” => undefined,
“not” => undefined,
“point-to-point” => undefined,
“public-address” => undefined,
“site-local-address” => undefined,
“subnet-match” => undefined,
“up” => undefined,
“virtual” => undefined
},
“unsecure” => {
“any” => undefined,
“any-address” => undefined,
“any-ipv4-address” => undefined,
“any-ipv6-address” => undefined,
“inet-address” => expression “${jboss.bind.address.unsecure:127.0.0.1}”,
“link-local-address” => undefined,
“loopback” => undefined,
“loopback-address” => undefined,
“multicast” => undefined,
“name” => “unsecure”,
“nic” => undefined,
“nic-match” => undefined,
“not” => undefined,
“point-to-point” => undefined,
“public-address” => undefined,
“site-local-address” => undefined,
“subnet-match” => undefined,
“up” => undefined,
“virtual” => undefined
}
}
}
これは 2 つのインターフェースを宣言することを意味しています。 1 つは “management” として参照され、他方は “public” として参照されます。
“management” インターフェースは管理レイヤから必要とされる全てのコンポーネントやサービス( HTTP I/F, Native 管理 I/F )から使用されます。
[standalone@localhost:9999 /] /core-service=management:read-children-resources(child-type=management-interface)
{
“outcome” => “success”,
“result” => {
“http-interface” => {
“console-enabled” => true,
“interface” => undefined,
“port” => undefined,
“secure-port” => undefined,
“secure-socket-binding” => undefined,
“security-realm” => “ManagementRealm”,
“socket-binding” => “management-http”
},
“native-interface” => {
“interface” => undefined,
“port” => undefined,
“security-realm” => “ManagementRealm”,
“socket-binding” => “management-native”
}
}
}
“public” インターフェースはネットワーク通信に関連するいくつかのアプリケーション( Web, Messaging 等)から使用されます。
これらの名前は特別なものではなく、インターフェースはどんな名前でも宣言可能です。設定ファイルの他のセクションはこれらのインターフェースの(物理的な)全ての詳細を含むよりも論理名で参照します(管理ドメイン内の server は別のマシンで動作する可能性があります)。
domain.xml, host.xml, standalone.xml の設定ファイルは全てインターフェースを宣言可能なセクションを含みます。
インターフェースに関する XML 宣言を見ると、いくつかのインターフェース/アドレスの指定にいくつかの記述方式があることが分ります。
記述方式には 2 つのタイプがあり、単一の要素を用いてインターフェースをワイルドカードアドレスにバインドする方式 または、 1 つ以上の特徴を指定してインターフェースもしくはアドレスを完全にマッチさせる方式です。
次のサンプルでは各々のインターフェースに特定の IP アドレスを指定しています。:
<interfaces>
<interface name=”management“>
<inet-address value=”127.0.0.1″/>
</interface>
<interface name=”public“>
<inet-address value=”127.0.0.1″/>
</interface>
</interfaces>
他の指定方式は以下の通りです。:
<interface name=”global”>
<!– ワイルドカードアドレスの使用 –>
<any-address/>
</interface>
<interface name=”ipv4-global”>
<!– IPv4 ワイルドカードアドレスの使用 –>
<any-ipv4-address/>
</interface>
<interface name=”ipv6-global”>
<!– IPv6 ワイルドカードアドレスの使用 –>
<any-ipv6-address/>
</interface>
<interface name=”external”>
<nic name=”eth0″/>
</interface>
<interface name=”default”>
<!– 指定されたサブネットの全てのアドレスにマッチします。ポイント・ツー・ポイントではなくマルチキャストをサポートします。 –>
<subnet-match value=”192.168.0.0/16″/>
<up/>
<multicast/>
<not>
<point-to-point/>
</not>
</interface>
Socket Binding Groups
AS7 におけるソケット設定はインターフェース宣言に似ています。ソケットは論理名を使用して宣言され、論理名は他の設定から参照されます。
ソケットの宣言は特定の名前でグルーピング(ソケットバインディンググループ)されます。これによりサーバグループ(ドメイン管理)を設定する際に特定のソケットバインディンググループを容易に参照することができます。
ソケットバインディンググループは論理名を使用してインターフェースを参照します。
<socket-binding-group name=”standard-sockets” default-interface=”public”>
<socket-binding name=”jndi”port=”1099″/>
<socket-binding name=”jmx-connector-registry”port=”1090″/>
<socket-binding name=”jmx-connector-server”port=”1091″/>
<socket-binding name=”http”port=”8080″/>
<socket-binding name=”https”port=”8443″/>
<socket-binding name=”jacorb”port=”3528″/>
<socket-binding name=”jacorb-ssl”port=”3529″/>
<socket-binding name=”osgi-http”port=”8090″/>
<socket-binding name=”remoting”port=”4447″/>
<socket-binding name=”txn-recovery-environment”port=”4712″/>
<socket-binding name=”txn-status-manager”port=”4713″/>
<socket-binding name=”messaging”port=”5445″/>
<socket-binding name=”messaging-throughput”port=”5455″/>
</socket-binding-group>
ソケットバインディングは以下の情報を含みます:
- name – 他の設定から参照する際に使用されるソケット設定の論理名
- port – この設定をベースにしたソケットがバインドされるベース(基本)ポート番号( server はこのベースポート番号を上書きできることに注意して下さい。)
- interface (optional) – この設定をベースにしたソケットがバインドされるインターフェースの論理名
- multicast-address (optional) – ソケットがマルチキャストに使用される場合のマルチキャストアドレス
- multicast-port (optional) – ソケットがマルチキャストに使用される場合のマルチキャストポート番号
- fixed-port (optional, defaults to false) – true の場合、指定されたソケット番号を必ず使用し上書きさせないことを宣言します。
IPv4 versus IPv6
AS7 は IPv4 と IPv6 の両アドレスをサポートします。デフォルトでは IPv4 を使用した設定が有効化されるため IPv4 ネットワーク上で AS7 を稼働させる場合、設定変更は不要です。AS7 を IPv6 ネットワークで稼働させる場合、JVM ネットワークプロパティの変更と設定ファイル中 (standalone.xml もしくは domain.xml) の IP アドレス値の変更が必要です。
Stack and address preference
java.net.preferIPv4Stack および java.net.preferIPv6Addresses システムプロパティは JVM が IPv4 または IPv6 のどちらを使用するかを設定するために使用します。 AS7 では IPv4 を使用する場合 java.net.preferIPv4Stack=true を指定し、 IPv6 を使用する場合 java.net.preferIPv4Stack=false (JVM デフォルト) および java.net.preferIPv6Addresses=true を指定します。
※ JVM のネットワークシステムプロパティについての詳細は Java SE Document を参照して下さい。
システムプロパティは JAVA_OPTS 環境変数により設定するのが適切です。 JAVA_OPTS は standalone.conf または domain.conf ファイル中で定義されています。JVM システムプロパティの IP スタック設定を IPv4 から IPv6 に変更するには standalone.conf または domain.conf ファイルの以下のデフォルト設定を編集します。
if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS= " ... -Djava.net.preferIPv4Stack=true ..." ... |
IPv6 に対応させるにはシステムプロパティを以下の通りに変更します。
if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS= " ... -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true ..." ... |
IP address literals
standalone.xml または domain.xml 中の IP アドレス設定を変更するには interface 宣言において妥当な IPv6 アドレスを指定する必要があります。デフォルトで指定されているループバックインターフェース設定を IPv4 から変更する場合、変更対象個所は以下の通りです。
<interfaces>
<interface name=”management”>
<inet-address value=”${jboss.bind.address.management:127.0.0.1}”/>
</interface>
<interface name=”public”>
<inet-address value=”${jboss.bind.address:127.0.0.1}”/>
</interface>
</interfaces>
上記の設定の IPv6 への設定変更例は以下の通りです。
<interfaces>
<interface name=”management”>
<inet-address value=”${jboss.bind.address.management:[::1]}”/>
</interface>
<interface name=”public”>
<inet-address value=”${jboss.bind.address:[::1]}”/>
</interface>
</interfaces>
interface 定義に上述の変更を行った場合、設定ファイルの他の部分の IP アドレスを IPv4 から IPv6 に変更して下さい。