システム要件

Services マシン

Services マシンには、ユーザー向けの Web サイト、API エンジン、データストア、Nomad ジョブ スケジューラなどの CircleCI Server 製品のコア コンポーネントがホスティングされます。 ベスト プラクティスとして、独立のマシンを使用することをお勧めします。

現在、CircleCI Server は、x86_64 アーキテクチャのみに対応しています。

下表に、Services マシンの CPU、RAM、およびディスク容量の要件を示します。

1 日の CircleCI アクティブ ユーザー数 CPU RAM ディスク容量 NIC 速度

50 名未満

8 コア

32GB

100GB

1Gbps

50 ~ 250 名

12 コア

64GB

200GB

1Gbps

251 ~ 1000 名

16 コア

128GB

500GB

10Gbps

1001 ~ 5000 名

20 コア

256GB

1TB

10Gbps

5000 名超

24 コア

512GB

2TB

10Gbps

Nomad クライアント

CircleCI のジョブは、Nomad クライアント マシンで実行され、Nomad サーバーでスケジュールが管理されます。 各クライアントの CPU、RAM、ディスク容量の最小要件は、以下のとおりです。

  • CPU: 4 コア

  • RAM: 32GB

  • ディスク容量: 100GB

  • NIC 速度: 1Gbps

AWS 上の CircleCI Server の場合、Nomad クライアント向けの推奨インスタンス タイプは m5.2xlarge (8 vCPU @ 2.4GHz、32GB RAM) です。

現在、Nomad クライアントは、x86_64 アーキテクチャのみに対応しています。

各クライアントでより多くのジョブに対応できるよう、大きいインスタンス タイプを選択することもできます。 選択の目安として、Nomad ではクライアントがジョブに適しているかどうかを判断する際に 1024MHz の CPU と`コア数` * クロック速度`の式で得られるディスク容量にジョブが割り当てられることを参考にするとよいでしょう。 この計算式に基づくと、`m5.2xlarge では最大容量が 19200MHz になります。つまり、このクライアントでは 9.6 個のジョブを実行できることになります (制限要因がない場合)。 実際には、Nomad 自身のために CPU リソースがいくらか予約されます。また、CPU と RAM の比率から使用できる RAM が限られ、これも実行可能なジョブ数の制限要因になります。

負荷が大きい場合の推奨事項

EBS は特定の IO 操作の後に IOPS を抑制します。そのため、デフォルトのサーバー構成 (m5.2xlarge、200GiB gp2 ルート ボリューム) で負荷の大きい処理を行うと、ジョブ実行速度の低下、スピンアップ速度の低下、最悪の場合にはジョブ タイムアウトなど、パフォーマンス関連の問題が発生する可能性があります。

負荷が大きい状況とは以下のようなものです。

  • Nomad クライアントにアタッチされたストレージの BurstBalance メトリクスが急激に減少している場合、環境に影響が及ぶほどワークロードの負荷が大きいことを示しています。 詳細については、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html#ebs-volume-metrics[AWS EBS メトリクスのドキュメント]を参照してください。

  • 継続的なディスク I/O が 500 MB/秒の場合、デフォルト ストレージ構成のバースト クレジットを 37.5 分で使い果たしてしまったという報告がお客様から寄せられています。

この問題に対する推奨回避策は以下のとおりです。

  • 1TiB 以上の EBS ボリュームを使用する。 EBS ボリュームを大きくすれば、IO クレジットは消費されません。

  • *5d インスタンス タイプを使用し、アタッチされたインスタンス ストアを Docker 関連ファイル (/var/lib/docker) に使用する。

Nomad クライアント数の選択

Nomad クライアント数のベスト プラクティスを以下の表にまとめました。 実際のシステムでの需要に合わせて、Nomad クライアント数を増減させてください。

1 日の CircleCI アクティブ ユーザー数 Nomad クライアント マシン数

50 名未満

1 ~ 5

50 ~ 250 名

5 ~ 10

250 ~ 1000 名

10 ~ 15

5000 名超

15 以上

サーバー ポート

CircleCI Server 2.0 のインストールで必要となるすべてのポートを、マシン タイプごとに以下の表に示します。

Services マシン

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

80

TCP

インバウンド

エンドユーザー

HTTP Web アプリ トラフィック

443

TCP

インバウンド

エンドユーザー

HTTPS Web アプリ トラフィック

7171

TCP

インバウンド

エンドユーザー

アーティファクト アクセス

8081

TCP

インバウンド

エンドユーザー

アーティファクト アクセス

22

TCP

インバウンド

管理者

SSH

8800

TCP

インバウンド

管理者

管理者コンソール

8125

UDP

インバウンド

Nomad クライアント

メトリクス

8125

UDP

インバウンド

Nomad サーバー

メトリクス

外部処理用 Nomad サーバーを使用する場合のみ

8125

UDP

インバウンド

すべてのデータベース サーバー

メトリクス

外部処理用データベースを使用する場合のみ

4647

TCP

双方向

Nomad クライアント

内部通信

8585

TCP

双方向

Nomad クライアント

内部通信

7171

TCP

双方向

Nomad クライアント

内部通信

3001

TCP

双方向

Nomad クライアント

内部通信

80

TCP

双方向

GitHub Enterprise/GitHub.com (該当するもの)

Web フック/API アクセス

443

TCP

双方向

GitHub Enterprise/GitHub.com (該当するもの)

Web フック/API アクセス

80

TCP

アウトバウンド

AWS API エンドポイント

API アクセス

AWS 上で実行される場合のみ

443

TCP

アウトバウンド

AWS API エンドポイント

API アクセス

AWS 上で実行される場合のみ

5432

TCP

アウトバウンド

PostgreSQL サーバー

PostgreSQL データベース接続

外部処理用データベースを使用する場合のみ。 ポートはユーザー定義だが、デフォルトの PostgreSQL ポートを想定。

27017

TCP

アウトバウンド

MongoDB サーバー

MongoDB データベース接続

外部処理用データベースを使用する場合のみ。 ポートはユーザー定義だが、デフォルトの MongoDB ポートを想定。

5672

TCP

アウトバウンド

RabbitMQ サーバー

RabbitMQ 接続

外部処理用 RabbitMQ を使用する場合のみ

6379

TCP

アウトバウンド

Redis サーバー

Redis 接続

外部処理用 Redis を使用する場合のみ

4647

TCP

アウトバウンド

Nomad サーバー

Nomad サーバー接続

外部処理用 Nomad サーバーを使用する場合のみ

443

TCP

アウトバウンド

CloudWatch エンドポイント

メトリクス

AWS CloudWatch を使用する場合のみ

Nomad クライアント

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

64535 ~ 65535

TCP

インバウンド

エンドユーザー

ビルドへの SSH 接続機能

80

TCP

インバウンド

管理者

CircleCI 管理者 API アクセス

443

TCP

インバウンド

管理者

CircleCI 管理者 API アクセス

22

TCP

インバウンド

管理者

SSH

22

TCP

アウトバウンド

GitHub Enterprise/GitHub.com (該当するもの)

GitHub からのコードのダウンロード

4647

TCP

双方向

Services マシン

内部通信

8585

TCP

双方向

Services マシン

内部通信

7171

TCP

双方向

Services マシン

内部通信

3001

TCP

双方向

Services マシン

内部通信

443

TCP

アウトバウンド

クラウド ストレージ プロバイダー

アーティファクト ストレージ

外部アーティファクト ストレージを使用する場合のみ

53

UDP

アウトバウンド

内部 DNS サーバー

DNS 解決

処理を適切に行ううえで必要なすべての DNS 名をジョブが解決できることを保証する。

GitHub Enterprise/GitHub.com

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

22

TCP

インバウンド

Services マシン

Git アクセス

22

TCP

インバウンド

Nomad クライアント

Git アクセス

80

TCP

インバウンド

Nomad クライアント

API アクセス

443

TCP

インバウンド

Nomad クライアント

API アクセス

80

TCP

双方向

Services マシン

Web フック/API アクセス

PostgreSQL サーバー

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

5432

TCP

双方向

PostgreSQL サーバー

PostgreSQL 複製

外部処理用データベースを使用する場合のみ。 ポートはユーザー定義だが、デフォルトの PostgreSQL ポートを想定。

MongoDB サーバー

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

27017

TCP

双方向

MongoDB サーバー

MongoDB 複製

外部処理用データベースを使用する場合のみ。 ポートはユーザー定義だが、デフォルトの MongoDB ポートを想定。

RabbitMQ サーバー

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

5672

TCP

インバウンド

Services マシン

RabbitMQ 接続

外部処理用 RabbitMQ を使用する場合のみ

5672

TCP

双方向

RabbitMQ サーバー

RabbitMQ ミラーリング

外部処理用 RabbitMQ を使用する場合のみ

Redis サーバー

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

6379

TCP

インバウンド

Services マシン

Redis 接続

外部処理用 Redis を使用する場合のみ

6379

TCP

双方向

Redis サーバー

Redis 複製

外部処理用 Redis を使用し、Redis 複製 (オプション) を使用する場合のみ

Nomad サーバー

ポート番号 プロトコル 方向 送信元/送信先 用途 備考

4646

TCP

インバウンド

Services マシン

Nomad サーバー接続

外部処理用 Nomad サーバーを使用する場合のみ

4647

TCP

インバウンド

Services Machine

Nomad サーバー接続

外部処理用 Nomad サーバーを使用する場合のみ

4648

TCP

Bi-directional

Nomad サーバー

Nomad サーバー内部通信

外部処理用 Nomad サーバーを使用する場合のみ



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

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


クリエイティブ・コモンズ・ライセンス
CircleCICircleCI ドキュメントは、クリエイティブ・コモンズの表示--非営利-継承 4.0 国際ライセンス に基づいてライセンス供与されています。