マルチノード設定
TeamCity では、メインインスタンスに加えて、1 つ以上のセカンダリサーバーインスタンス(ノード)を構成および起動できます。メインノードとセカンダリノードは同じライセンスで動作し、TeamCity データディレクトリとデータベースを共有します。
マルチノードセットアップを使用すると、次のことができます。
ほとんどの操作でダウンタイムがゼロになる高可用性 TeamCity インストールをセットアップします。セカンダリノードは、メインサーバーのダウンタイム中(たとえば、マイナーアップグレード中)は通常どおり動作します。
セカンダリノードにタスクを委譲することにより、メインサーバーのパフォーマンスを向上させます。セカンダリノードは、新しいコミットを検出し、ビルドの実行によって生成されたデータ(ビルドログ、アーティファクト、統計値)を処理できます。
インストール後、各セカンダリノードはメインサーバーの読み取り専用コピーとして実行されます: その機能を拡張するために、特定の責任に割り当てることができます。この場合、セカンダリノードにより、ユーザーはビルドで最も一般的なアクションを実行できます。
次の図は、1 つのメインノードと 2 つのセカンダリノードを備えた TeamCity インストールの例を示しています。各セカンダリノードには特定の責任があります。
マルチノードセットアップの前提条件
このセクションでは、複数の TeamCity ノードをセットアップするための構成要件について説明します。
共有データディレクトリ
データディレクトリマウントでのネットワーククライアントキャッシュの無効化
すべてのノードを「参照」することが重要です。共有データディレクトリの現在の状態。そうでない場合、さまざまな不安定な動作と頻繁なビルドログの破損が発生する可能性があります。
TeamCity ノードが SMB プロトコルを介して共有されるデータディレクトリを使用して Windows で実行される場合は、関連記事(英語)に記載されているすべてのレジストリキーがすべての TeamCity ノードで 0 に設定されていることを確認してください(英語)。
データディレクトリが NFS を介して共有されている場合は、すべてのノードのマウント設定に lookupcache=positive
オプションがあることを確認してください。
メインノードキャッシュディレクトリ
メインノードがネットワークの場所を介してデータディレクトリにアクセスする場合は、system/caches
ディレクトリをローカルディスクに移動することを強くお勧めします。
ノード固有のデータディレクトリ
メインサーバーと共有されるデータディレクトリに加えて、セカンダリノードには、いくつかのキャッシュ、解凍された外部プラグイン、およびその他の構成を格納するローカルデータディレクトリが必要です。
ノードの最初の起動時に、ローカルデータディレクトリが <TeamCity Data Directory>/nodes/<node_ID>
として自動的に作成されます。これは通常、すべてのノードで使用される共有データディレクトリの場所です。
すべてのノードから共有 TeamCity データディレクトリへの余分な IO リクエストによって引き起こされる負荷を減らし、ノードのデータへのアクセスを高速化するために、ノード固有のデータディレクトリの場所を再定義してノードのローカルディスクを使用することを強くお勧めします。
ローカルディレクトリへの新しいパスを定義するには、TeamCity 起動スクリプトの -Dteamcity.node.data.path
プロパティを使用します。詳細はセカンダリノードの設定を参照してください。
プロキシ設定
高可用性 TeamCity インストールをセットアップするには、メインサーバーとセカンダリノードの両方をリバースプロキシの背後にインストールし、メインサーバーが利用可能な場合はリクエストをメインサーバーにルーティングし、その他の場合はセカンダリサーバーにリクエストをルーティングするように構成する必要があります。TeamCity サーバーをリバースプロキシの背後に初めてセットアップする場合は、このトピックに関するメモを確認してください。
次の NGINX(英語) 構成は、メインサーバーが使用できない場合、またはメインサーバーが 503 ステータスコードで応答する場合(起動時またはアップグレード時)にのみ、セカンダリノードに要求をルーティングします。
NGINX オープンソース(英語)はアクティブヘルスチェック(英語)(高可用性インストールを構成するためのより良い方法)をサポートしておらず、DNS 解決の問題が発生する可能性があることに注意してください。NGINX Plus(英語) または HA プロキシ(英語)の使用を検討してください。
HA プロキシの構成例:
ファイアウォール設定
ファイアウォール設定では、エージェントとメイン TeamCity サーバーからセカンダリノードにアクセスできるようにする必要があります(メインサーバーも HTTP でノードと通信します)。
アップグレードとダウングレード
メイン TeamCity サーバーとすべてのセカンダリノードのバージョンを同じにすることをお勧めします。場合によっては、メインサーバーとセカンダリノードが、たとえばメインサーバーのマイナーアップグレード中など、短期間異なるバージョンを実行していることがあります。セカンダリノードとメインサーバーのバージョンが異なる場合、対応するヘルスレポートが両方のノードに表示されます。
マイナーバージョン(バグ修正リリース)にアップグレードする場合、TeamCity データは同じ形式であるため、メインノードとセカンダリノードは問題なく実行されているはずです。メイン TeamCity サーバーをアップグレードしてから、セカンダリサーバーを手動で、または自動更新を使用してアップグレードできます。
メインサーバーをメジャーバージョンにアップグレードすると、その TeamCity データ形式が変更されます。メインサーバーのアップグレードを開始する前に、すべてのセカンダリノードを停止して、起こりうるデータ形式エラーを回避することをお勧めします。
タスクを処理できるようにするには、メインサーバーのメジャーアップグレード後にすべてのセカンダリノードをアップグレードする必要があります。
TeamCity のメジャーバージョンへのマルチノードセットアップ内のノードをアップグレードするには、次の手順を実行します。
すべてのセカンダリノードを停止します。
通常どおり、メイン TeamCity サーバーでアップグレードを開始します。
アップグレードを続行します。
すべてが正しく機能し、エージェントが接続していることを確認します(エージェントは、セカンダリノードにルーティングされるはずだったデータをメインサーバーに再ルーティングします)。
セカンダリノードの TeamCity インストールを同じバージョンにアップグレードします。
セカンダリノードを起動し、メインサーバーの管理 | サーバー管理 | ノード構成ページで接続されていることを確認します。
マルチノード設定でノードをダウングレードするには、次の手順に従います。
メインサーバーとセカンダリノードをシャットダウンします。
バックアップからのデータを復元する(アップグレード中にデータ形式が変更された場合のみ)。
メインサーバー上の TeamCity ソフトウェアをダウングレードします。
メイン TeamCity サーバーを起動し、すべてが正しく動作することを確認します。
セカンダリノードの TeamCity ソフトウェアをメインサーバーと同じバージョンにダウングレードします。
セカンダリノードを起動します。
TeamCity エージェントは、アップグレード / ダウングレードを自動的に実行します。
セカンダリノードの制限
セカンダリサーバーには、メインサーバーと比較していくつかの制限があります。
セカンダリノードでは、サーバーの構成と状態を変更できません。責任のないノードは読み取り専用モードで提供されます。責任を持つノードはユーザーレベルのアクションを提供します。どちらの場合も、すべての管理ページとアクションが利用できるわけではありません。
現在、バンドルされたプラグインと一部の他のプラグインの限られたセットのみがセカンダリサーバーによってロードできます。外部プラグインが提供する機能の一部が欠落している場合があります。詳細はセカンダリノードの設定を参照してください。
自分を記憶オプションを選択しなかった場合、ユーザーはセカンダリノードにルーティングされるときに再ログインする必要がある場合があります。
関連ページ:

セカンダリノードの設定
メインの TeamCity サーバーに加えて、データディレクトリと外部データベースをメインサーバーと共有するセカンダリサーバー(ノード)を起動できます。詳細については、マルチノード設定を参照してください。このページでは、セカンダリノードの構成方法について説明します。TeamCity 2019.2 以...

TeamCity サーバー起動プロパティの設定
TeamCity サーバーの起動時に渡される設定オプションによって、TeamCity の動作のさまざまな側面をカスタマイズできます。これらのオプションは 2 つのカテゴリに分類されます。JavaVirtual Machine(JVM)への影響と TeamCity の動作への影響です。TeamCity...