こんにちは。SCSK石原です。
今回は製品導入の社内検証の際にトラブルシュートした記録を残しておきたいと思います。
Informatica Enterprise Data Catalog(以下EDCと記載)からSalesforceへの接続でエラーが発生していました。
本件はGoogle Cloudに設定しているCloud NATの設定が良くなかったため起きた事象でした。
Informatica製品に限らず、他の製品を導入する際にも同様のことが起きる可能性がありますので投稿します。
アーキテクチャ
今回検証に利用しているコンポーネントの配置は下記の通りです。
Informaticaソフトウェアが導入されているGCEインスタンスが合計5台あります。全てのインスタンスはCloud NATを介して外部のインターネットと通信できます。Google Cloud外部にSalesforceが存在しています。
Salesforceにて、ホワイトリストによるアクセス制限をかけているため、Cloud NATには手動でIPアドレスを1つ割り当てています。
上記以外にも、VPC、ルーティングの設定やログ取得などの設定も行っていますが、今回は割愛させていただきます。
発生事象
Informatica EDCからSalesforceに接続する際に以下の挙動をしていました。
- Informatica EDC からSalesforce へのテスト接続は成功する
- Informatica EDC からSalesforce へのスキャンを実行すると失敗する
テスト接続は成功していることから、経路としては確立できていることがわかりました。ただ、スキャンを実行する際に失敗しているので、どこかのコンポーネントで制限がかかっている可能性が考えられました。
AWSでの稼働実績があることから、Google Cloudにて設定したコンポーネントを中心に調査しました。
原因
Cloud NATにより、Informatica EDC ClusterサーバからSalesforceへの通信がドロップしていることが確認できました。
確認には、ログエクスプローラから下記のクエリを実行します。
resource.type="nat_gateway" resource.labels.region="asia-northeast1" resource.labels.gateway_name="CloudNAT名" resource.labels.router_id="ルーターID" jsonPayload.allocation_status="DROPPED"
出力されたログは下記の通りです。実際にはより多くのログが出力されていました。
1x3f4lkg1b5dxip,DROPPED,[Salesforce IP],443,6,192.168.0.3,42518,14340,,America,usa,,[プロジェクト名],asia-northeast1,[サーバ名],asia-northeast1-b,[NATGW名],asia-northeast1,[ルーター名],[プロジェクト名],[サブネット名],[VPC名],[サーバ名],asia-northeast1-b,,[VPC名],[ルーター名],[サブネット名],projects/[プロジェクト名]/logs/compute.googleapis.com%2Fnat_flows,,2022-09-09T07:17:44.754407901Z,,[NATGW名],[プロジェクト名],asia-northeast1,[ルーターID],nat_gateway,2022-09-09T07:17:40.079244261Z
対策
Cloud NATの設定が原因の可能性が高いので、設定値を確認します。
Cloud NATの制約事項
Cloud NATにおいて、VM当たりのポート割り当てデフォルト値は64となっています。
割り当て数は変更できます。一度引き上げると、下げることはできないため注意が必要です。
Informatica EDCの制約事項
Informatica – 10.2.2 – Enterprise Data Catalogインストール&環境設定ガイド – (Japanese)
少し古いバージョンのEDCインストールガイドですが、p28にプロセスの2倍ポートが必要だと記載があります。また、デフォルトのポートとして100個程度確保されています。このポート全てが外部向けではないと思いますが、CloudNATのデフォルト値では足りなくなる可能性は高いと考えます。
対応
状況から判断すると、Informatica EDCが利用するポート数が64では不足しているように見受けられました。
今回はCloud NATの「VMインスタンス当たりの最小ポート数」を64から1024に引き上げることで対応しました。引き上げ以降、Informatica EDCとSalesforceは問題なく通信できています。Cloud NATのエラーログもありませんでした。
おわりに
Informaticaのナレッジからは当事例を見つけることができませんでしたので、どなたかの役に立てば幸いです。
また、Informatica EDCのガイドにプロセスの2倍ポートが必要だと記載がありますので、今後NATGWのポートが不足する場合はGCEインスタンスに外部IPを付与することの検討が必要です。
Cloud NATのベストプラクティスは下記に記載があります。設計前にぜひ確認しておきましょう。