このトピックでは、Alibaba Cloud DevOps を使用したインストールとホストデプロイメントに関する一般的な問題と解決策について説明します。
ホストエージェントの問題 — Flow Runner
Flow Runner の問題のトラブルシューティング
ホストデプロイメントやプライベートビルドマシンの環境プロビジョニングに関連する問題をトラブルシューティングする前に、まずマシン上の Flow Runner ステータスを確認してください。
診断ツールの使用
このツールは Linux システムのみをサポートします。
-
ツールをダウンロードしてください:
wget "https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/runner/runnerStatusCheck" -O runnerStatusCheck -
実行権限を付与してください:
chmod u+x runnerStatusCheck -
ツールを実行してください:
./runnerStatusCheck -
次の例に示すように、ツールの出力に従って操作してください。
[INFO] prepare to check disk check disk output Filesystem Size Used Avail Use% Mounted on /dev/root 99G 59G 36G 62% / devtmpfs 3.7G 0 3.7G 0% /dev tmpfs 3.7G 0 3.7G 0% /dev/shm tmpfs 3.7G 600K 3.7G 1% /run tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup tmpfs 748M 0 748M 0% /run/user/0 [INFO] prepare to check runner status RunnerService: runner-v0.0.7-be-1fy1ifhg1ylcvqv7rwinqpgh.service status is active running RunnerService: runner-v0.0.7-be-3n5goas4jkp3clmcaopzeebj.service status is active running RunnerService: runner-v0.0.7-be-6fcm3z72s2fsnrkcjl7pbpsa.service status is not running , please exeute 'systemctl restart runner-v0.0.7-be-6fcm3z72s2fsnrkcjl7pbpsa.service ' to restart runner service RunnerService: runner-v0.0.7-be-7srpetjhkcy40btoontpsy8a.service status is not running , please exeute 'systemctl restart runner-v0.0.7-be-7srpetjhkcy40btoontpsy8a.service ' to restart runner service RunnerService: runner-v0.0.7-be-7ypo76lza21lljapgp5xtopi.service status is active running RunnerService: runner-v0.0.7-be-9zouh99ta6ycx2dq3iggekk9.service status is not running , please exeute 'systemctl restart runner-v0.0.7-be-9zouh99ta6ycx2dq3iggekk9.service ' to restart runner service RunnerService: runner-v0.0.7-be-ao81clhgw56bo0jopj5jgwn3.service status is active running RunnerService: runner-v0.0.7-be-bn9wuh8n4kiba0aa0a8dcirb.service status is active running RunnerService: runner-v0.0.7-be-fsr2gvdefe5yxl3nyijp36d3.service status is active running RunnerService: runner-v0.0.7-be-haphfbrhuudbxkzwpcuhn0hk.service status is not running , please exeute 'systemctl restart runner-v0.0.7-be-haphfbrhuudbxkzwpcuhn0hk.service ' to restart runner service RunnerService: runner-v0.0.7-be-mwkcqcv2hbwozrwmmczopzgm.service status is active running RunnerService: runner-v0.0.7-be-qdiyjifmn0bbkafobtfpkrst.service status is not running , please exeute 'systemctl restart runner-v0.0.7-be-qdiyjifmn0bbkafobtfpkrst.service ' to restart runner service RunnerService: runner-v0.0.7-be-qx6gaxojjjpzeblor692hrwk.service status is active running RunnerService: runner-v0.0.7-be-s5f7tixziynazefazqhls9ob.service status is active running RunnerService: runner-v0.0.7-be-uwdlmn516wd8emqebhgqwq6x.service status is active running RunnerService: runner-v0.0.7-be-xjmxrlbzrtksuafv4oyg8qtf.service status is active running Check runner service status finished.
手動でのトラブルシューティング
-
Linux バージョンがサポートされているか確認してください。
lsb_release -aコマンドを実行して Linux ディストリビューションを確認してください。統合 Flow Runner は次の Linux ディストリビューションをサポートします:-
CentOS 6+
-
Ubuntu 16.04+
-
Alibaba Cloud Linux 2/3
-
-
Flow Runner サービスのステータスとログを確認してください。
ls -al /etc/systemd/system | grep runnerコマンドを実行してサービス名を確認してください。サービス名は通常、runner-{version}-{tenant-name}.service の形式です。[root@ecs-for-batch-deploy-1 ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 8.2.2004 (Core) Release: 8.2.2004 Codename: Core [root@ecs-for-batch-deploy-1 ~]# ls -al /etc/systemd/system | grep runner -rw-r--r-- 1 root root 550 Oct 11 10:50 runner-v0.xxx.service [root@ecs-for-batch-deploy-1 ~]#systemctl status runner-{version}-{tenant-name}.serviceコマンドを実行してサービスのステータスを確認してください。ステータスが active (running) の場合、サービスは正常に動作しています。Release: 8.2.2004 Codename: Core [root@ecs-for-batch-deploy-1 ~]# ls -al /etc/systemd/system | gr -rw-r--r-- 1 root root 550 Oct 11 10:50 runner-v0.0.5-be-bnyxxx...yt.service [root@ecs-for-batch-deploy-1 ~]# systemctl status runner-v0.0.5-be-bnyxxx...yt.service ● runner-v0.0.5-be-bnxxx...yt.service - Aliyun yunxiao runner polling jo Loaded: loaded (/etc/systemd/system/runner-v0.xxx...yt.service) Active: active (running) since Tue 2022-10-11 10:50:56 CST; 2h ago Main PID: 1405243 (runner) Tasks: 10 (limit: 48875) Memory: 13.6M CGroup: /system.slice/runner-v0.0.5-be-brxxx...yt.service └─1405243 /usr/local/share/yunxiao-runner/v0.0.5/runner run --configPath=/r... Oct 11 11:01:03 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:01:03+08:00] Oct 11 11:01:03 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:01:03+08:00] Oct 11 11:01:18 ecs-for-batch-deploy-1 runner[1405243]: WARN[2022-10-11T11:01:18+08:00]リアルタイムの実行ログを確認するには、
journalctl -u runner-{version}-{tenant-name}.service -a --no-pager --since '5 minutes ago' -fコマンドを実行してください。
クロスリージョンデプロイの失敗
インターネット経由で地理的に離れたリージョン間 (例: 香港 (中国) からマレーシア) にデプロイする場合、ネットワーク遅延または不安定性によりデプロイ失敗が発生する可能性があります。
Flow Runner のステータスとディスク容量の確認に加えて、次を確認してください:
-
pingまたはtracerouteを使用して、ターゲットホストから Alibaba Cloud DevOps サービスエンドポイントへのネットワーク遅延とパケット損失をテストしてください。 -
ネットワークが不安定な場合は、ネットワークリンクの最適化、または信頼性を向上させるための専用クロスリージョン接続の使用を検討してください。
ビルドまたはデプロイ中にログが生成されない、またはホストがオフラインになる
-
df -hlを実行してホストのディスクがフルかどうかを確認してください。フルの場合は容量を解放して再試行してください。 -
Flow Runner サービスのステータスを確認してください。ステータスが
active(running)でない場合は、次の手順に従ってサービスを再起動してください:-
サービス名を取得してください。形式は
runner-{version}-{tenant-name}.serviceです。systemctl | grep "runner-v" | awk '{print $1}' -
次のコマンドの
$SERVICE_NAMEをサービス名に置き換え、実行して Flow Runner サービスを再起動してください。systemctl restart $SERVICE_NAME
-
-
ネットワーク接続の問題がないか確認してください。
-
systemctl status runner-{version}-{tenant-name}.serviceを実行して Flow Runner サービスのステータスを照会し、次に示すように--configPathパラメーターを確認してください:[root@ecs-for-batch-deploy-1 ~]# systemctl status runner-v0.0.5-be-bnyxxx1llzpci0q606yt.service ● runner-v0.0.5-be-xxx...yt.service - Aliyun yunxiao runner polling jobs to execute Loaded: loaded (/etc/systemd/system/runner-v0.0.5-be-bxxx...yt.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-10-11 10:50:56 CST; 41min ago Main PID: 1405243 (runner) Tasks: 10 (limit: 48875) Memory: 13.7M CGroup: /system.slice/runner-v0.0.5-be-bnyxxx...yt.service └─1405243 /usr/local/share/yunxiao-runner/v0.0.5/runner run --configPath=/root/yunxiao/be-bnykv60t831llzpci0q606yt/runner/config Oct 11 11:31:46 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:31:46+08:00] [runner] no new job, skip. runner=9e7073c92b2fa8b35bc0efd3eec051f8 Oct 11 11:31:46 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:31:46+08:00] counter current: 0, limit: 50 Oct 11 11:32:01 ecs-for-batch-deploy-1 runner[1405243]: WARN[2022-10-11T11:32:01+08:00] Response status code: 204 body data: Oct 11 11:32:01 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:32:01+08:00] POST /api/v2/builds/request, time spent 15.07 s Oct 11 11:32:01 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:32:01+08:00] [runner] no new job, skip. runner=9e7073c92b2fa8b35bc0efd3eec051f8 Oct 11 11:32:01 ecs-for-batch-deploy-1 runner[1405243]: INFO[2022-10-11T11:32:01+08:00] counter current: 0, limit: 50 Oct 11 11:32:16 ecs-for-batch-deploy-1 runner[1405243]: WARN[2022-10-11T11:32:16+08:00] ... -
cat {PATH_TO_CONFIG}/config.yml | grep urlを実行して、configPath 内の URL を確認してください。[root@ecs-for-batch-deploy-1 config]# cat /root/yunxiao/be-bnykv60t83lllzpci0q606yt/runner/config/config.yml | grep url url: https://xxx.com [root@ecs-for-batch-deploy-1 config]# -
次のコマンドを実行して URL にアクセスできるか確認してください。
# 注:次のコマンドの {url} は実際の URL に置き換えてください。 curl '{url}/api/v2/runner/storage/latest?os=linux&arch=amd64'
-
ホストデプロイメントが MachineGroupNotHaveMachine エラーで失敗
このエラーは、デプロイグループに利用可能なマシンが存在しないため、デプロイタスクをターゲットホストにディスパッチできないことを示します。
この問題をトラブルシューティングするには、次を実施してください:
-
Alibaba Cloud DevOps コンソールで、パイプラインのデプロイタスク設定に移動し、関連付けられているデプロイグループにマシンが含まれているか確認してください。デプロイグループが空の場合は、先にターゲットホストを追加してください。
-
デプロイグループにマシンが含まれている場合は、それらがオンラインであることを確認してください。マシンがオフラインの場合は、サーバーにログインし、Runner サービスのステータスを確認してサービスを再起動してください。
-
デプロイグループに利用可能なオンラインマシンがあることを確認した後、デプロイタスクを再トリガーしてください。
マルチノードデプロイメントで、起動中のサービスにリクエストが到達してエラーになることを防ぐにはどうすればよいですか?
Alibaba Cloud DevOps には、デプロイ中のトラフィック制御機能が組み込まれていません。起動中のサービスにリクエストが到達することを防いでトラフィックを管理するには、次の方法を使用してください:
-
ホストを 2 つのホストグループに分割し、パイプラインで順次デプロイを構成してください。これによりデプロイ順序を制御し、一方のグループが完全に利用可能になってからもう一方を更新できます。
-
ゲートウェイレベルでリクエストを遮断するか、Application Load Balancer (ALB) の転送ルールを設定して、まだ起動中のノードにトラフィックが到達しないようにルーティングしてください。