トランザクションの一貫性と分離を確保するために、ApsaraDB RDS for SQL Server インスタンスの分散トランザクションホワイトリストを設定できます。このホワイトリストにより、特定の Elastic Compute Service (ECS) インスタンスと RDS インスタンス間の分散トランザクションが許可されます。ECS インスタンスのセキュリティグループルールを RDS インスタンスのホワイトリスト設定と一致するように調整することで、トランザクションの一貫性の問題のトラブルシューティングを容易にする、安全で安定した分散トランザクション環境を構築できます。
前提条件
RDS インスタンスは、次の要件を満たしている必要があります。
RDS インスタンスは、SQL Server 2022 EE (Always On)、SQL Server 2019 EE (Always On)、SQL Server 2017 EE (Always On)、SQL Server 2016 EE、SQL Server 2012 EE、SQL Server 2022 SE、SQL Server 2019 SE、SQL Server 2017 SE、SQL Server 2016 SE、SQL Server 2012 SE、または SQL Server 2008 R2 (クラウドディスク使用) を実行していること。
RDS インスタンスが汎用または専用インスタンスファミリーであること。共有インスタンスファミリーはサポートされていません。
RDS インスタンスがサブスクリプションまたは従量課金課金方法を使用していること。サーバーレスインスタンスはサポートされていません。
RDS インスタンスの 基本情報 ページに移動して、前述の情報を取得できます。
使用上の注意
RDS for SQL Server インスタンスに対してメジャーエンジンバージョンのアップグレード、マイナーエンジンバージョンの更新、またはゾーン間でのインスタンスの移行を実行すると、RDS インスタンスがデプロイされている基盤となる ECS インスタンスのホスト名と IP アドレスが変更される場合があります。新しい IP アドレスに合わせて分散トランザクションホワイトリストを再設定する必要があります。
RDS インスタンス詳細ページの タブに移動して、現在のホスト名と IP アドレスを表示できます。
RDS インスタンスの設定
ステップ 1: ホワイトリストを設定する
RDS インスタンスのホワイトリストを設定して、特定の ECS インスタンスの IP アドレスから RDS インスタンスへのアクセスを許可します。
ApsaraDB RDS コンソールにログインし、[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、ホワイトリストとセキュリティグループ をクリックします。表示されたページの [ホワイトリスト設定] タブで、
defaultというラベルの付いた IP アドレスホワイトリストの右側にある [変更] をクリックし、ECS インスタンスの IP アドレスをホワイトリストに追加します。説明ECS インスタンスと RDS インスタンスが同じ VPC にある場合は、ECS インスタンスのプライベート IP アドレスを入力する必要があります。
ECS インスタンスと RDS インスタンスが異なる VPC にある場合は、ECS インスタンスのパブリック IP アドレスを入力する必要があります。さらに、RDS インスタンスのパブリックエンドポイントを申請する必要があります。
ECS コンソールの ECS インスタンスの [インスタンスの詳細] ページで、ECS インスタンスのプライベートまたはパブリック IP アドレスを表示できます。
次の図は、ECS インスタンスの IP アドレスを表示するページを示しています。

OK をクリックします。
ステップ 2: 分散トランザクションのホワイトリストを設定する
分散トランザクションホワイトリストを設定して、コンピューター名によって RDS インスタンスの分散トランザクションの処理に参加できる ECS インスタンスを指定します。
RDS インスタンス詳細ページの左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。表示されたページで、分散トランザクションのホワイトリスト タブをクリックします。
ホワイトリストグループの追加 をクリックします。表示されたダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
パラメーター
説明
グループ名:
ホワイトリストの名前を入力します。名前の長さは 2〜32 文字である必要があります。名前に数字、小文字、アンダースコア (_) を使用できます。名前は小文字で始まり、小文字または数字で終わる必要があります。
IP アドレス
IP address of the ECS instance,Hostnameのフォーマットで値を入力します。IP アドレスとホスト名はコンマ (,) で区切られます。ホスト名は、ECS インスタンスが存在する Windows コンピューターの名前を指します。例:192.168.1.100,k3ecstest。複数のエントリを入力する場合は、各エントリが別の行にあることを確認してください。ホスト名を表示するには: ECS インスタンスの Windows で を開きます。
ECS インスタンスの設定
指定された ECS インスタンスのセキュリティグループルールを調整し、必要なポートを有効にして、ECS インスタンスのネットワーク構成が RDS インスタンスのホワイトリスト設定と一致するようにします。これにより、安全な分散トランザクション環境を構築できます。
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、ECS インスタンスが存在するリージョンを選択します。
ECS インスタンスを見つけて、インスタンス ID をクリックします。
上部のナビゲーションバーで、[セキュリティグループ] をクリックします。
管理するセキュリティグループを見つけ、[操作] 列の [ルールの管理] をクリックします。
[インバウンド] タブで、[ルールの追加] をクリックします。
必須パラメーターを設定し、[OK] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
承認ポリシー
[許可] を選択します。
優先度
デフォルト値 1 を保持します。
プロトコルタイプ
[カスタム TCP] を選択します。
アクセスソース
RDS インスタンスの タブに移動し、RDS インスタンスの 2 つの IP アドレス (RDS インスタンスがデプロイされている基盤となる ECS インスタンスの IP アドレス) を [承認オブジェクト] フィールドに入力します。
説明DescribeDBInstanceIpHostname 操作を呼び出して IP アドレスをクエリすることもできます。
アクセス目的
[ポート] を選択し、135 を入力します。
説明ポート 135 は、リモートプロシージャコール (RPC) サービスの固定ポートです。
説明
説明を入力します。説明は 2〜256 文字の長さで、
http://またはhttps://で始めることはできません。別のセキュリティグループルールを追加します。[宛先] [ポート] を 1024/65535 に設定し、他のすべてのパラメーターはステップ 8 と同じに保ちます。
関連ドキュメント
関連するベストプラクティスの詳細については、「Kingdee K/3 WISE を ApsaraDB RDS for SQL Server インスタンスに接続する」をご参照ください。
ホワイトリストの設定方法の詳細については、「IP アドレスホワイトリストを設定する」をご参照ください。
セキュリティグループの用語、制限、ベストプラクティスの詳細については、「概要」をご参照ください。
一般的なエラー
アプリケーションが分散トランザクションマネージャーと通信できず、Communication with the underlying transaction manager has failed. エラーが返された場合の対処方法
考えられる原因 | 解決策 |
RDS インスタンスがデプロイされている基盤となる ECS インスタンスのホスト名と IP アドレスが変更されています。 | RDS for SQL Server インスタンスに対してメジャーエンジンバージョンのアップグレード、マイナーエンジンバージョンの更新、またはゾーン間でのインスタンスの移行を実行すると、RDS インスタンスがデプロイされている基盤となる ECS インスタンスのホスト名と IP アドレスが変更される場合があります。新しい IP アドレスに合わせて分散トランザクションホワイトリストを再設定する必要があります。 RDS インスタンス詳細ページの タブに移動して、現在のホスト名と IP アドレスを表示できます。 |
分散トランザクションマネージャーが正常に実行されていません。 | トランザクションマネージャーが、設定の誤り、権限の問題、またはサーバーリソースの不足により正常に実行されていないか、またトランザクションマネージャーへの接続が不安定または中断されていないかを確認してください。 |