Topik ini menjelaskan isu umum dan solusinya terkait instalasi serta penerapan host menggunakan Alibaba Cloud DevOps.
Isu agen host — Flow Runner
Penyelesaian masalah Flow Runner
Sebelum menyelesaikan masalah terkait penerapan host atau penyediaan lingkungan untuk mesin build privat, pertama-tama periksa status Flow Runner di mesin tersebut.
Gunakan tool diagnostik
Tool ini hanya mendukung sistem Linux.
-
Unduh tool:
wget "https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/runner/runnerStatusCheck" -O runnerStatusCheck -
Berikan izin eksekusi:
chmod u+x runnerStatusCheck -
Jalankan tool:
./runnerStatusCheck -
Ikuti instruksi dalam output tool, seperti pada contoh berikut.
[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.
Penyelesaian masalah manual
-
Periksa apakah versi Linux Anda didukung.
Jalankan perintah
lsb_release -auntuk memeriksa distribusi Linux Anda. Flow Runner terpadu mendukung distribusi Linux berikut:-
CentOS 6+
-
Ubuntu 16.04+
-
Alibaba Cloud Linux 2/3
-
-
Periksa status dan log layanan Flow Runner.
Jalankan perintah
ls -al /etc/systemd/system | grep runneruntuk menemukan nama layanan. Nama layanan biasanya dalam format 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 ~]#Jalankan perintah
systemctl status runner-{version}-{tenant-name}.serviceuntuk memeriksa status layanan. Jika statusnya active (running), layanan beroperasi dengan benar.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]Untuk melihat log eksekusi real-time, jalankan perintah
journalctl -u runner-{version}-{tenant-name}.service -a --no-pager --since '5 minutes ago' -f.
Kegagalan penerapan cross-region
Saat melakukan penerapan lintas wilayah geografis (misalnya, dari Hong Kong (Tiongkok) ke Malaysia) melalui Internet, kegagalan penerapan dapat terjadi karena latensi jaringan atau ketidakstabilan.
Selain memeriksa status Flow Runner dan disk space, verifikasi hal berikut:
-
Uji latensi jaringan dan kehilangan paket dari host target ke titik akhir layanan Alibaba Cloud DevOps menggunakan
pingatautraceroute. -
Jika jaringan tidak stabil, pertimbangkan untuk mengoptimalkan tautan jaringan atau menggunakan koneksi cross-region khusus untuk meningkatkan keandalan.
Tidak ada log yang dihasilkan atau host offline selama build atau penerapan
-
Jalankan
df -hluntuk memeriksa apakah disk host penuh. Jika ya, bebaskan ruang dan coba lagi. -
Periksa status layanan Flow Runner. Jika statusnya bukan
active(running), restart layanan dengan mengikuti langkah-langkah berikut:-
Dapatkan nama layanan. Formatnya adalah
runner-{version}-{tenant-name}.service.systemctl | grep "runner-v" | awk '{print $1}' -
Ganti
$SERVICE_NAMEdalam perintah berikut dengan nama layanan dan jalankan untuk me-restart layanan Flow Runner.systemctl restart $SERVICE_NAME
-
-
Periksa adanya masalah konektivitas jaringan.
-
Jalankan
systemctl status runner-{version}-{tenant-name}.serviceuntuk menanyakan status layanan Flow Runner dan temukan parameter--configPath, seperti yang ditunjukkan di bawah ini:[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] ... -
Lihat URL di configPath dengan menjalankan
cat {PATH_TO_CONFIG}/config.yml | grep 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]# -
Jalankan perintah berikut untuk memeriksa aksesibilitas URL.
# Catatan: Ganti {url} dalam perintah di bawah ini dengan URL aktual Anda. curl '{url}/api/v2/runner/storage/latest?os=linux&arch=amd64'
-
Penerapan host gagal dengan error MachineGroupNotHaveMachine
Error ini menunjukkan bahwa grup penerapan tidak memiliki mesin yang tersedia, sehingga tugas penerapan tidak dapat dikirim ke host target.
Untuk menyelesaikan masalah ini:
-
Di konsol Alibaba Cloud DevOps, buka konfigurasi tugas penerapan untuk pipeline dan periksa apakah grup penerapan terkait berisi mesin. Jika grup penerapan kosong, tambahkan host target terlebih dahulu.
-
Jika grup penerapan sudah berisi mesin, verifikasi bahwa mesin tersebut online. Jika mesin offline, login ke server, periksa status layanan Runner, dan restart layanan tersebut.
-
Setelah memastikan grup penerapan memiliki mesin online yang tersedia, picu ulang tugas penerapan.
Bagaimana cara mencegah error akibat permintaan yang mencapai layanan selama startup dalam penerapan multi-node?
Alibaba Cloud DevOps tidak menyediakan kontrol trafik bawaan selama penerapan. Untuk mengelola trafik dan mencegah permintaan mencapai layanan yang masih dalam proses startup, gunakan pendekatan berikut:
-
Pisahkan host Anda menjadi dua grup host dan konfigurasikan penerapan berurutan di pipeline. Hal ini mengontrol urutan penerapan dan memastikan satu grup sepenuhnya tersedia sebelum grup lain diperbarui.
-
Gunakan intersepsi permintaan di tingkat gerbang atau konfigurasikan aturan pengalihan dengan Application Load Balancer (ALB) untuk mengarahkan trafik menjauh dari node yang masih dalam proses startup.