はじめに
DataPowerは、ゲートウェイ機能を提供し、社内システムを外部に安全に公開する際に使われます。その際には、社内システムを守るため、外部からの流量を制御をしたいという要件がでることがあります。DataPowerで複数台でクラスター構成する場合には、この流量制御情報をクラスター内で共有するため、SLMピア・グループを設定する方法があります。
SLMピア・グループの設定では、クラスター内の通信方法として、ユニキャスト、または、マルチキャストを選択することができます。しかし、AWSをはじめとしたパブリッククラウド環境では、マルチキャストなどの通信が許可されていません。ただ、AWSでは、マルチキャスト通信を使用する方法として、AWS Transit Gateway機能が提供されています。
この記事では、AWS Transit Gatewayを使用して、EC2 DataPowerクラスター環境でSLMピア・グループ(マルチキャスト)を実装・動作検証した内容を紹介します。
Transit Gatewayでマルチキャストを使用する場合には、構成に影響するConsiderationsがありますので、事前に確認が必要になります。
今回の検証では、機能の稼働を確認できましたが、この構成が製品としてサポートされるかはIBMへ確認中ですのでご注意ください。
1 AWS EC2環境のセットアップ
1.1 EC2の払い出し
詳細は割愛しますが、今回は、以下のような点に注意してセットアップしています。
1つ目のEC2インスタンスはカタログAMIからセットアップする必要がありますが、2つ目のインスタンスは1つ目のEC2インスタンスのイメージを作成して複製起動することができます。
設定項目 | 注意点 |
---|---|
Amazonマシンイメージ(AMI) | RHEL7のイメージを選択 |
インスタンスタイプ | t3.xlargeなどのNitroタイプを選択 |
ネットワーク設定 | 複数のDataPower間で通信するポート(5550など)と、マルチキャストで使用するポートを許可する |
1.2 EC2 OS設定
EC2 Linuxでは、デフォルトではIGMP v3が有効化されていますが、Transit Gatewayではv2のみサポートされます。OSの設定でIGMP v2を使用するように変更します(参考)。
[root@ip-172-31-**-** ~]# echo "2" > /proc/sys/net/ipv4/conf/eth0/force_igmp_version
[root@ip-172-31-**-** ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.eth0.force_igmp_version = 2
[root@ip-172-31-**-** ~]# sysctl -p
net.ipv4.conf.eth0.force_igmp_version = 2
[root@ip-172-31-80-162 ~]# cat /proc/net/igmp
Idx Device : Count Querier Group Users Timer Reporter
1 lo : 3 V3
010101EF 1 0:00000000 0
020101EF 1 0:00000000 0
010000E0 1 0:00000000 0
2 eth0 : 2 V2
640000EF 1 0:00000000 1
010000E0 1 0:00000000 0
2 EC2へのDataPowerインストール・設定
2.1 DataPower for Linuxのインストール
こちらの記事の手順でインストールします。
今回も、DataPower v10.0.4モジュールを使用しています。
2.2 DataPowerへのSLM設定
こちらの手順を参考にSLMピア・グループを設定していきます。
以下に主要な設定箇所の画面を記載します。
defaultドメインでのXML Management Interface有効化例
アプリケーション・ドメインでのPeer Group設定例
2つのEC2インスタンスのプライベートIPアドレスを設定します(2つ目のインスタンス起動後に設定します)。
アプリケーション・ドメインでのIPマルチキャスト設定例
グループアドレスやポートは一例ですので、お使いの環境に応じて設定してください。このグループアドレスは、後続のVPCセットアップで通信設定を行います。
以上で1つ目のEC2インスタンスの設定は完了となります。
このインスタンス・イメージからAMIを作成し、2つ目のインスタンスを起動します。
3 AWS VPC環境セットアップ
3.1 Transit Gateway設定
こちらの手順にそってTransit Gateway設定を実施します。
以下はマルチキャストドメインの設定例です。
グループ・メンバーは以下のようにIGMPによって自動で追加されます。
4 動作確認
以上で設定は完了です。
これで2台のEC2 DataPower間で流量制御情報が同期されます。
4.0 テスト環境準備
DataPowerでの動作テストのため、以下のような設定を実施します。
サンプルのアプリケーション・ドメインの構成定義をこちらで公開しています。
- アプリケーション・ドメイン
- マルチ・プロトコル・ゲートウェイ
- 処理ポリシー(この中でSLMピア・グループ設定を使用)
4.1 API呼び出し例
1号機に流量を越えてAPIを呼び出すと429が返るようになります。
その後、2号機へAPI呼び出しを実施しても1号機での流量情報が同期されているため429が返ります。
以下は、今回の検証で設定した応答例です。
curl -ki https://**.**.**.**:9443/coffee/iced
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Content-Language: en
X-Backside-Transport: FAIL FAIL
Connection: close
{"title":"429 Too Many Requests","status":429,"detail":"Temporarily our service limited the requests rates, please try again after a few m
inutes.","instance":"","dateTime":"","origin":"API Platform PrgOrg00 Proxy"}
4.2 SLMピア・グループ状況確認
SLMピア・グループが動作しているかはSLM Peering Statusで確認することができます。
ここまでの設定でマルチキャスト通信ができていれば、以下のようにピアとなるDataPowerが表示されます。
以上です。