TeamCity オンプレミス 2026.1 ヘルプ

AWS Aurora データベースクラスターの使用

このページには、Amazon Aurora(英語) クラスターを TeamCity データベースサーバーとして使用する方法の詳細が記載されています。

TeamCity がデータベースサーバーとしてクラスターのエンドポイント(英語)を指す AWS Aurora クラスターを使用する場合、AWS Aurora クラスターがフェイルオーバーすると何が起こるかを理解することが重要です。

両方の AWS Aurora DB インスタンスが再起動され(そのため、短時間 TeamCity はクラスターへの接続を完全に失います)

  • 元の DB インスタンスは読み取り専用モードで起動されます(新しいリーダーインスタンス)。

  • 前のフェールオーバーインスタンスは新しいライターであり、クラスターエンドポイント DNS レコードは新しいライターインスタンスを指すように変更されます。

デフォルトでは、TeamCity JVM は DNS 名のルックアップをキャッシュします。これは、本質的に、TeamCity が DNS キャッシュが期限切れになるまで元の DB インスタンスに接続されたままになることを意味します。これにより、TeamCity 側のデータベース接続プールに新しいリーダーへの接続が読み込まれます。

TeamCity の JVM 固有のキャッシュが期限切れになり、無効な接続がプールから削除されるまでに時間がかかります。

一般的な推奨事項

フェールオーバークラスターを使用する場合は、TeamCity TTL を 60 に設定することにより(英語)の JVM 固有の DNS キャッシュを減らすことをお勧めします。

  1. 環境変数-Dsun.net.inetaddr.ttl=60 JVM オプションを追加します。

  2. 変更が有効になるように TeamCity を再起動します。

TeamCity に新しいライターへの接続を強制する

TeamCity を強制的に新しいライターに手動または自動で接続できます。

手動で接続を強制するには:

  • 新しい DB リーダーインスタンスを再度再起動します。再起動には最大 2 分かかります。これは、DNS キャッシュの有効期限が切れるだけでなく、無効な接続がプールから削除されるのに十分です。

  • または、TeamCity を手動で再起動すると、すべての接続が新しく作成されます。

TeamCity が起動して実行されたらすぐに新しいプライマリインスタンスに自動的に接続するように強制するには、次の手順を実行します。

  1. 特別な検証クエリを使用するようにデータベース接続プールを構成します。これにより、DB インスタンスへの接続が使用の前後にテストされ、読み取り専用データベースへの接続が検出された場合、プールから削除されます。
    このためには、<TeamCity Data Directory>/config/ database.properties に次の行を追加します。:
    Aurora MySQL の場合:

    testOnBorrow=true testOnReturn=true testWhileIdle=true timeBetweenEvictionRunsMillis=60000 validationQuery=select case when @@read_only + @@innodb_read_only \= 0 then 1 else (select table_name from information_schema.tables) end as `1`

    Aurora PostgreSQL の場合:

    testOnBorrow=true testOnReturn=true testWhileIdle=true timeBetweenEvictionRunsMillis=60000 validationQuery=select case when not pg_is_in_recovery() then 1 else random() / 0 end
  2. TeamCity サーバーを再起動します。これを行うと、指定された検証クエリがすべての接続に対してプールから借用またはプールに返されるたびに実行され、アイドル接続の場合は 1 分(60000 ミリ秒)ごとに実行され、読み取り専用への各接続でエラーが発生します。データベース。

Aurora MySQL Cluster への SSL 接続の使用

Amazon Aurora MySQL バージョン 2(MySQL 5.7 以降と互換性がある)以降、それぞれのクエリ(英語)を実行することで、TeamCity が DB クラスターへの安全な SSL 接続を使用しているかどうかを判断できます。必要に応じて、Amazon サーバー側で接続モード(英語)を変更できます。

Amazon Aurora MySQL バージョン 1 (MySQL 5.6 以下と互換性あり) を使用している場合は、tcpdump などのパケットアナライザーを使用してトラフィックをインスペクションすることで、TeamCity と DB クラスター間の接続が安全かどうかを確認できます。
SSL 接続のモードを変更するには (たとえば、SSL 接続を強制または無効にする)、それぞれの sslMode パラメーターを <TeamCity data directory>/config/database.properties ファイルに追加して、MySQL Connector/J JDBC ドライバに渡します。

  • 別の行を追加します。

    connectionProperties.sslMode=<value>

    または

  • 接続文字列に ?sslMode=<value> 引数を追加します。例:

    connectionUrl=jdbc:mysql://<hostname>:3306/<dbname>?sslMode=<value>

Connector/J リファレンス / 構成プロパティ(英語)のサポートされている接続モード値のリストを参照してください。

2025 年 4 月 07 日