IM-Notice Broker の設定方法
この CookBook では、分散環境での IM-Notice (デスクトップ版)の設定方法について紹介しています。
分散環境の構成として、以下のような 2 台構を考えます。
マシン | IPアドレス |
---|---|
AP1 | 192.168.0.1 |
AP2 | 192.168.0.2 |
この時、以下のように設定してしまうと、
im-notice-mq-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<im-notice-mq-config
xmlns="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config ../schema/im-notice-mq-config.xsd">
<address bind="true">tcp://*:40608</address>
<ping enable="true" interval-seconds="60" time-to-live-seconds="70" />
<endpoints>
<endpoint>tcp://192.168.0.1:40608</endpoint>
</endpoints>
<zmq-io-threads>1</zmq-io-threads>
<zmq-max-sockets>1024</zmq-max-sockets>
<zmq-linger>1000</zmq-linger>
</im-notice-mq-config>
上図のように、IM-Notice(デスクトップ版)が 192.168.0.1:40608 にのみ接続するようになってしまい、192.168.0.2:40608 には接続していないため、192.168.0.2(AP2) で発生したメッセージ送信処理がデスクトップ通知されない、という状態が発生します。
次に、以下のような 2 台 AP サーバ + Load Balancer 構成の分散環境を考えます。
マシン | IPアドレス |
---|---|
AP1 | 192.168.0.1 |
AP2 | 192.168.0.2 |
LB | 192.168.0.3 |
この時、以下のように設定したとします。
im-notice-mq-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<im-notice-mq-config
xmlns="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config ../schema/im-notice-mq-config.xsd">
<address bind="true">tcp://*:40608</address>
<ping enable="true" interval-seconds="60" time-to-live-seconds="70" />
<endpoints>
<endpoint>tcp://192.168.0.3:40608</endpoint>
</endpoints>
<zmq-io-threads>1</zmq-io-threads>
<zmq-max-sockets>1024</zmq-max-sockets>
<zmq-linger>1000</zmq-linger>
</im-notice-mq-config>
上図のように、LB によって 192.168.0.1 にのみ接続する、もしくは、192.168.0.2 にのみ接続する、という状況にしかなりません。
以上をまとめると、AP サーバを複数台で運用している場合、デスクトップ通知の通知機能(通知履歴ではなく、ポップアップ表示される通知機能)を利用するには、IM-Notice Broker の導入が必須です。
IM-Notice Broker は、下図のように、複数台の AP サーバのコネクションを一つにまとめる機能を提供します。
これにより、分散環境でも通知機能を利用できるようになります。
Broker を利用した場合の設定を以下で紹介します。
次のような分散環境を考えます。
マシン | IPアドレス |
---|---|
AP1 | 192.168.0.1 |
AP2 | 192.168.0.2 |
Broker | 192.168.0.3 |
AP1/AP2 共に、以下のように設定します。
im-notice-mq-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<im-notice-mq-config
xmlns="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.intra-mart.jp/notice/mq/config/im-notice-mq-config ../schema/im-notice-mq-config.xsd">
<address bind="false">tcp://192.168.0.3:40609</address>
<ping enable="true" interval-seconds="60" time-to-live-seconds="70" />
<endpoints>
<endpoint>tcp://192.168.0.3:40608</endpoint>
</endpoints>
<zmq-io-threads>1</zmq-io-threads>
<zmq-max-sockets>1024</zmq-max-sockets>
<zmq-linger>1000</zmq-linger>
</im-notice-mq-config>
bind="false" に変更しているのがポイントで、これにより、AP サーバはポートを Open しなくなります。
代わりに、tcp://192.168.0.3:40609 (Broker のバックエンド)に対してデータを送信します。
endpoint に tcp://192.168.0.3:40608 (Broker のフロントエンド)を指定することで、IM-Notice(デスクトップ版)は tcp://192.168.0.3:40608 に接続し、通知データの受信を待機します。
ブローカーの im-notice-mq-broker-config.xml はデフォルトで問題ありません。
im-notice-mq-broker-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<im-notice-mq-broker-config
xmlns="http://www.intra-mart.jp/notice/mq/broker/config/im-notice-mq-broker-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.intra-mart.jp/notice/mq/broker/config/im-notice-mq-broker-config ../schema/im-notice-mq-broker-config.xsd">
<frontend>tcp://*:40608</frontend>
<backend>tcp://*:40609</backend>
<ping enable="false" interval-seconds="0" />
<zmq-io-threads>1</zmq-io-threads>
<zmq-max-sockets>1024</zmq-max-sockets>
<zmq-backend-linger>1000</zmq-backend-linger>
<zmq-frontend-linger>1000</zmq-frontend-linger>
</im-notice-mq-broker-config>
このように、AP サーバを複数台で運用している場合、IM-Notice(デスクトップ版)の通知機能(ダイアログやバルーンで表示される通知機能)を利用するためには、IM-Notice Broker の利用が必須です。
設定方法は本記事の例を参考にしてください。