ドキュメント
circleci.com
Start Building for Free

CircleCI Server コンテナのアーキテクチャ

4 months ago1 min read
管理者
Server v2.x
このページの内容

このドキュメントでは、CircleCI Server がインストールされた Services マシン上で実行されるコンテナ化されたサービスの概要を説明します。 これにより、サービス運用の概要を理解し、サービス停止時のトラブルシューティングに役立てていただくことを目的としています。 下記の表に、補足事項と要点を記載します。

備考

  • ここに記載されているデータベース移行サービスは、起動時にのみ実行されるため、障害時の重大度は低くなっています。

  • Premium サポートをご利用の場合は、一部のサービスを外部化することができ (ここでは * を付けて示しています)、要件に合わせて管理できます。 外部化することで、データの安全性が高まり、システムに冗長性を持たせることができます。

キー

アイコン説明

障害による本番環境への影響は小さく、データ損失や機能停止は発生しません。

障害によって一部のジョブで問題が発生するおそれはありますが、データ損失は発生しません。

障害によってデータ損失、ジョブ/ワークフローの破損、大規模な機能停止が発生するおそれがあります。

コンテナ、役割、障害モード、起動時の依存関係

コンテナ/イメージ役割障害発生時の影響障害の重大度スタートアップ時の依存関係

api-service

GraphQL API を提供します。 この API は、Web フロントエンドのレンダリング データを多く提供します。

多くの UI 要素 (例: コンテキスト) が完全に機能しなくなります。

postgresfrontendcontexts-service-migratorcontexts-servicevault-cci

audit-log-service

監査ログ イベントを blob ストレージに長期保存します。

一部のイベントが記録されなくなります。

postgresfrontend

contexts-service

暗号化されたコンテキストを保存、提供します。

コンテキストを使用するすべてのビルドが失敗するようになります。

postgresfrontendcontexts-service-migratorvault-cci

contexts-service-migrator

`contexts-service`用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend

cron-service

スケジュールされたワークフローをトリガーします。

スケジュールされたワークフローが実行されなくなります。

postgresfrontendcron-service-migrator

cron-service-migrator

cron-service 用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend

domain-service

CircleCI のドメイン モデルに関する情報を保存、提供します。

ワークフローを開始できなくなります。 一部の REST API 呼び出しが失敗し、CircleCI UI で 500 エラーが発生する可能性があります。 LDAP 認証を使用している場合、すべてのログインが失敗するようになります。

postgresfrontenddomain-service-migrator

domain-service-migrator

`domain-service`用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend

exim

すべての SMTP アウトバウンド メールの送信に使用されるメール転送エージェント (MTA)です。

メール通知が送付されません。

なし

federation-service

ユーザー ID を保存します (LDAP)。

LDAP 認証を使用している場合、すべてのログインに失敗し、REST API 呼び出しも失敗する場合があります。

only if LDAP in use

postgresfrontendfederations-service-migrator

federation-service-migrator

federations-service 用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend

fileserved

CircleCI Server v2.x を AWS 外で実行する際に、S3 の代わりに使用されるファイルストレージサービスです。 サーバーが S3 を使用するように設定されている場合は使用されません。 ステップの出力ログ、アーティファクト、テスト結果、キャッシュ、ワークスペースを保存します。

S3 を使用していない場合、ビルドは出力されず、一部の REST API 呼び出しが失敗する可能性があります。

if not using S3

なし

frontend

CircleCI Web アプリと www-api プロキシ です。

UI と REST API が利用できなくなります。GitHub/GitHub Enterprise からジョブがトリガーされなくなります。 ビルドの実行はできますが、更新はされません。

postgres

mongo*.

Mongo のデータストアです。

データ全体を損失するおそれがあります。 実行中のビルドがすべて失敗し、UI が機能しなくなります。

mongodb-upgrader

nomad-metrics

Nomad サーバーに統計情報を問い合わせ、StatsD に送信します。

Nomad のメトリクスは失われますが、それ意外はすべて通常通りに動作します。

なし

output-processor / output-processing

ジョブの出力とステータスの更新を受け取り、MongoDB に書き込みます。 また、キャッシュとワークスペースにアクセスし、キャッシュ、ワークスペース、アーティファクト、テスト結果を保存するための API を実行中のジョブに提供します。

実行中のビルドがすべて失敗するか、安定せず一貫性のない状態になります。 ステップの出力、テスト結果、アーティファクトに関するデータ損失も発生します。

なし

permissions-service

CircleCI のアクセス権インターフェイスを提供します。

ワークフローを開始できなくなります。 一部の REST API 呼び出しが失敗し、CircleCI UI で 500 エラーが発生する可能性があります。

postgresfrontendpermissions-service-migrator

permissions-service-migrator

permissions-service 用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend

picard-dispatcher

ジョブをタスクに分割し、実行用に scheduler に送信します。

Nomad にジョブが送信されなくなります。 run キューのサイズは増加しますが、著しいデータ損失が起こることはありません。

なし

postgres / postgres-script-enhance *

基本的な PostgreSQL に、コンテナ起動時に必要なデータベースを作成する機能を追加したサービスです。

データ全体を損失するおそれがあります。 実行中のビルドがすべて失敗し、UI が機能しなくなります。

なし

rabbitmq / rabbitmq-delayed *

RabbitMQ サーバーを実行します。 CircleCI サービスのほとんどは、キューイングに RabbitMQ を使用しています。

データ全体を損失するおそれがあります。 実行中のビルドがすべて失敗し、UI が機能しなくなります。

なし

outputRunningRedis / redis *

Redis キー/バリューストア

現在実行中のジョブ ステップの出力が失われます。 GitHub に対する API 呼び出しも失敗する可能性があります。

なし

schedulerer

タスクを実行するために server-nomad に送信します。 \

Nomad にジョブが送信されなくなります。 run キューのサイズは増加しますが、著しいデータ損失が起こることはありません。

なし

mongodb-upgrader / server-mongo-upgrader

Mongo のバージョンアップ時に、任意の Mongo 変換/アップグレードスクリプトを実行するために使用します。

常時実行する必要はありません。 \

なし

 nomad_server / server-nomad *      

Nomad プライマリ サービス

2.0 のビルドジョブは実行されません。

なし

ready-agent / server-ready-agent

他のコンテナが準備できているかどうかを確認するために Replicated から呼び出されます。

起動時のみ必要です。 起動時に利用できない場合、システムに障害が発生します。

なし

server-usage-stats

CircleCI 内の「Phone Home」エンドポイントにユーザー数を送信します。

サーバー使用状況の統計を受け取らなくなりますが、動作には影響ありません。

なし

shutdown-hook-poller

frontend コンテナが 1.0 Builder のシャットダウンリクエストに対応しているかどうかをチェックします。 リクエストがある場合、1.0ビルダーはシャットダウンされます。

1.0 Builder のライフサイクルは適切に管理されませんが、ジョブの実行は継続されます。

なし

slanger

CircleCI アプリにリアルタイム イベントを提供します。

UI のリアルタイム更新が停止しますが、ハード リフレッシュは引き続き機能します。

なし

telegraf

CircleCI ローカル サービスの書き込み先となる statsd 転送エージェントであり、外部メトリクス サービスに転送するように構成できます。

メトリクスが動作しなくなりますが、ジョブの実行は継続されます。

なし

tutum/logrotate

Service マシン上のすべてのコンテナのログのローテーションを管理します。

障害が長期間続くと、Services マシンのディスク容量が足りなくなり、他のサービスが停止します。

なし

test-results

テスト結果ファイルを解析してデータを保存します。

ジョブのテストの失敗や時間に関するデータが生成されなくなります。 サービスが再起動するとバックフィルが行われます。

なし

contexts-vault / vault-cci *

HashiCorp 社の Vault (キー管理、セキュアなストレージ、その他の暗号化関連サービスを提供する暗号化サービス) のインスタンスです。 contexts-service の暗号化とキー保存に使用されます。

contexts-service が動作しなくなります。 また、contexts-service を使用するすべてのジョブが失敗するようになります。

なし

vm-gc

古い machine やリモート Docker インスタンスを定期的に確認し、vm-service にそれらの削除をリクエストします。

このサービスを再起動するまで、古い vm-service インスタンスが破棄されなくなる可能性があります。

vm-service-db-migrator

vm-scaler

machine とリモート Docker ジョブの実行用にプロビジョニングするインスタンス数を増やすように、vm-service に定期的にリクエストします。

machine とリモート Docker 用の VM インスタンスがプロビジョニングされなくなり、容量不足でジョブとそれらの Executor を実行できなくなる可能性があります。

vm-service-db-migrator

vm-service

利用可能な vm-service インスタンスのインベントリ管理と、新しいインスタンスのプロビジョニングを行います。

machine またはリモート Docker を使用するジョブが失敗するようになります。

vm-service-db-migrator

vm-service-db-migrator

`vm-service`のデータベース移行の実行に使用されます。

起動時にのみ実行されます。

なし

workflows-conductor

ワークフローに関する情報を調整、提供します。

新しいワークフローが開始されなくなります。 現在実行されているワークフローの一貫性が失われる可能性があります。 また、一部の REST API および GraphQL API のリクエストに失敗するようになります。

postgresfrontendworkflows-conductor-migrator

workflows-conductor-migrator

`workflows-conductor`用に PostgreSQL の移行を実行します。

起動時にのみ実行されます。

postgresfrontend


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。