システム要件
CircleCI Server version 2.x は、リリースのサポートが終了しています。 リリースがサポートされているバージョンへのアップグレードについては、お客様のアカウントチームにご相談ください。 |
ここでは、CircleCI Server v2.x をインストールするためのシステム要件およびポート アクセス要件について説明します。
Services マシン
Services マシンには、ユーザー向けの Web サイト、API エンジン、データストア、Nomad ジョブ スケジューラなどの CircleCI Server 製品のコア コンポーネントがホスティングされます。 独立のマシンを使用することをお勧めします。
現在、CircleCI Server は、x86_64 アーキテクチャのみに対応しています。 |
下表に、Services マシンの CPU、RAM、およびディスク容量の要件を示します。
1 日の CircleCI アクティブ ユーザー数 | CPU | RAM | ディスク容量 | NIC 速度 |
---|---|---|---|---|
50 名未満 | 48 コア | 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
-
ディスク容量:100 GB
-
NIC 速度:1 Gbps
AWS 上の CircleCI Server の場合、Nomad クライアント向けの推奨インスタンス タイプは m5.2xlarge
(8 vCPU @ 2.4GHz、32GB RAM) です。
現在、Nomad クライアントは、x86_64 アーキテクチャのみに対応しています。 |
各クライアントでより多くのジョブに対応できるよう、大きいインスタンス タイプを選択することもできます。 選択の目安として、Nomad ではクライアントがジョブに適しているかどうかを判断する際に 1024MHz の CPU と`コア数` * <code>クロック速度`の式で得られるディスク容量にジョブが割り当てられることを参考にするとよいでしょう。 この計算式に基づくと、m5.2xlarge</code> では最大容量が `19200MHz
になります。 つまり、このクライアントでは 9.6 個のジョブを実行できることになります (制限要因がない場合)。 実際には、Nomad 自身のために CPU リソースがいくらか予約されます。 また、CPU と RAM の比率から使用できる RAM が限られ、これも実行可能なジョブ数の制限要因になります。
負荷が大きい場合の推奨事項
EBS は特定の IO 操作の後に IOPS を抑制します。 そのため、デフォルトのサーバー構成 (m5.2xlarge、200GiB gp2 ルート ボリューム) で負荷の大きい処理を行うと、ジョブ実行速度の低下、スピンアップ速度の低下、最悪の場合にはジョブ タイムアウトなど、パフォーマンス関連の問題が発生する可能性があります。
負荷が大きい状況とは以下のようなものです。
-
Nomad クライアントにアタッチされたストレージの
BurstBalance
メトリクスが急激に減少している場合、環境に影響が及ぶほどワークロードの負荷が大きいことを示しています。 詳細については、 AWS EBS metrics document を参照してください。 -
継続的なディスク I/O が 500 MB/秒の場合、デフォルト ストレージ構成のバースト クレジットを 37.5 分で使い果たしてしまったという報告がお客様から寄せられています。
この問題に対する推奨回避策は以下のとおりです。
-
1TiB 以上の EBS ボリュームを使用する。 EBS ボリュームを大きくすれば、IO クレジットは消費されません。
-
*5d インスタンス タイプを使用し、アタッチされたインスタンス ストアを Docker 関連ファイル (/var/lib/docker) に使用する。
Nomad クライアント数の選択
下表には、使用可能にする Nomad クライアント数のベスト プラクティスを示します。 システムの需要に合わせて増減させてください。
1 日の CircleCI アクティブ ユーザー数 | Nomad クライアント マシン数 |
---|---|
50 名未満 | 1 ~ 5 |
50 ~ 250 名 | 5 ~ 10 |
250 ~ 1000 名 | 10 ~ 15 |
5000 名超 | 15 以上 |
サーバーポート
CircleCI Server のインストールで必要となるすべてのポートを、マシン タイプごとに以下の表に示します。
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 でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.