Seata 2.6.0 のデプロイ:TC・MySQL ストレージ・Nacos への登録
基準環境:Seata 2.6.0、MySQL 8、Nacos 2.x。Seata Server、クライアント、データベーススクリプト、Spring Cloud Alibaba のバージョンは、必ず公式の互換性マトリクスに基づいて組み合わせる必要があります。
1. デプロイ方式の選択
ローカルでの学習なら、file 登録と file ストレージを使って、トランザクションの流れをすばやく検証できます。本番環境では、通常、Nacos などの登録センターと構成センターを使用し、データベースまたは公式がサポートする高可用ストレージを利用します。
Seata 1.x の registry.conf、file.conf、コンテナイメージのタグ、データベーススクリプトを、そのまま 2.x にコピーしないでください。すべてのコンテナイメージと依存関係はバージョンを固定し、latest の使用は禁止してください。
2. TC データベース
Seata 2.6.0 のリリースパッケージから、対象のデータベースディレクトリにある MySQL スクリプトを使って TC データベースを初期化します。主なテーブルは次のとおりです:
global_table 全局事务
branch_table 分支事务
lock_table 全局锁
distributed_lock TC 集群协调
vgroup_table 事务组映射
AT に参加する業務データベースごとには、同じバージョンのクライアントに対応する undolog テーブルも作成する必要があります。TC のテーブルと業務データベースの undolog は混同しないでください。
3. Nacos 登録と構成
登録センターと構成センターには、server アドレス、namespace、group、cluster、ユーザー名、パスワードを明示してください。トランザクショングループのマッピングは、すべてのクライアントと TC の設定で一致させてください。
本番環境で使う認証情報は、環境変数、secret、または外部設定から注入し、Compose、Git、公開ログには記載しないでください。Nacos、TC、データベースは内部ネットワークからのみアクセスできるようにし、管理ポートをインターネットに直接公開しないでください。
4. クライアントの確認
業務サービスを起動したら、次の点を確認してください:
- TM が TC に登録されている
- RM が TC に登録されている
- トランザクショングループが利用可能な TC クラスタに対応付けられている
- データソースが AT モードでプロキシされている
- 各業務データベースに undo_log を書き込める
- XID が HTTP、RPC、メッセージ経路経由で伝播できる
5. 本番環境のチェック
TC は高可用構成でデプロイします。データベースにはバックアップと容量監視を用意します。ロック待ち、トランザクションのタイムアウト、ロールバックの再試行、undo_log の件数を観測できるようにします。設定変更には監査、段階的展開、ロールバックを用意します。アップグレード前には、TC、Nacos、データベース、クライアントの互換性をリハーサルで確認します。
AT では、メッセージ、キャッシュ、ファイル、サードパーティの API を自動的にロールバックできません。これらの境界を越える場合は、すべての処理を1つのデータベーストランザクションに含められると仮定するのではなく、信頼性の高いメッセージ配信、冪等処理、補償処理、TCC、Saga を使用してください。