ข้ามไปยังเนื้อหา

คอนโซลอนุกรม

บันทึกเมื่อ 2026-07-28 จาก CE หนึ่งโหนดของการปรับใช้นี้ sitecli/capture-manifest.json บันทึกว่าเป็นโหนดใด และ scripts/capture-sitecli.sh --check จะตรวจสอบชุดคำสั่ง ซ้ำกับ CE ที่ทำงานอยู่จริง

Azure Serial Console เชื่อมต่อกับพอร์ตอนุกรมจำลองของโหนดผ่านแพลตฟอร์ม Azure โดยไม่ผ่าน control plane ของ F5 Distributed Cloud, data plane ของโหนด หรือเส้นทาง เครือข่ายใด ๆ ที่โหนดควบคุมอยู่ — ซึ่งนั่นคือเหตุผลที่มันใช้งานได้ เมื่อทุกอย่างอื่นใช้ไม่ได้

ใช้วิธีนี้เมื่อ CE ไม่เคยขึ้นมาเลย: การลงทะเบียนล้มเหลว, ไซต์ไม่ปรากฏ ในเทนแนนต์, หรือโหนดทำงานอยู่แต่ไม่มีเส้นทางออก ในทุกกรณีเหล่านั้น debug API ไม่มีอุโมงค์ให้ส่งต่อผ่าน SSH ยังใช้ได้เมื่อ การลงทะเบียนล้มเหลว แต่ต้องมีการเขียนคีย์ไว้แล้วตอนบูตครั้งแรกและคุณต้อง เข้าถึงที่อยู่ภายในของโหนดได้จากภายใน VNet — ซึ่งทั้งสองข้อไม่เป็นจริงสำหรับ โหนดที่คุณเพิ่งพบเป็นครั้งแรก

ลอง Site Console ก่อนวิธีนี้ หากโหนดยังมีเส้นทางเครือข่ายที่ใช้งานได้ แม้เพียงเล็กน้อย: มันก็ยังใช้ได้เมื่อการลงทะเบียนล้มเหลว ไม่ต้องใช้คีย์ และไม่ไล่คนที่ กำลังดูโหนดอยู่ออกไป คอนโซลอนุกรมคือสิ่งที่เหลืออยู่เมื่อเส้นทางเครือข่ายเป็นสิ่งที่ เสียหาย

Azure กำหนดให้เปิด boot diagnostics บน VM ก่อนจึงจะเชื่อมต่อคอนโซลอนุกรมได้ ซึ่งเปิดใช้งานโดย terraform/modules/ce-node:

boot_diagnostics {}

บล็อกว่างเปล่าจะเลือกใช้พื้นที่จัดเก็บที่ Azure จัดการให้ ดังนั้นจึงไม่มีบัญชี พื้นที่จัดเก็บ diagnostics, นโยบายวงจรชีวิต หรือคีย์การเข้าถึงที่ต้องดูแล ตรวจสอบบนโหนด:

Terminal window
az vm show -g <resource-group> -n <vm-name> --query diagnosticsProfile
{ "bootDiagnostics": { "enabled": true } }

การตรวจสอบความพร้อมใช้งานโดยไม่ใช้เทอร์มินัล

หัวข้อที่มีชื่อว่า “การตรวจสอบความพร้อมใช้งานโดยไม่ใช้เทอร์มินัล”

การเชื่อมต่อจำเป็นต้องมีเซสชันแบบโต้ตอบ แต่การตรวจว่ามัน จะ เชื่อมต่อได้หรือไม่นั้น ใช้เพียงสองการเรียก API ทั้งสองมีประโยชน์ในการตรวจสอบสุขภาพระบบ

บริการนี้ต้องถูกเปิดใช้งานสำหรับ subscription — ผู้ดูแลระบบสามารถปิดใช้งาน ทั้งเทนแนนต์ได้:

Terminal window
az rest --method get --url \
"https://management.azure.com/subscriptions/<sub>/providers/Microsoft.SerialConsole/consoleServices/default?api-version=2018-05-01"
{ "properties": { "disabled": false } }

จากนั้นขอการเชื่อมต่อไปยังพอร์ตอนุกรมของโหนดที่ต้องการ:

Terminal window
az rest --method post \
--headers "Content-Type=application/json" --body '{}' --url \
"https://management.azure.com/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Compute/virtualMachines/<vm>/providers/Microsoft.SerialConsole/serialPorts/0/connect?api-version=2018-05-01"

connectionString ที่เริ่มต้นด้วย wss:// — ในการปรับใช้นี้คือ eastus.gateway.serialconsole.azure.com — หมายความว่าคอนโซลสามารถเชื่อมต่อได้ ในตอนนี้ ก่อนที่จะเปิด boot diagnostics การเรียกนี้ไม่มีอะไรให้เชื่อมต่อเลย

  1. ติดตั้งส่วนขยายหนึ่งครั้ง:

    Terminal window
    az extension add --name serial-console
  2. เชื่อมต่อ:

    Terminal window
    az serial-console connect -g <resource-group> -n <vm-name>
  3. คุณจะมาถึงหน้าจอ login prompt ของโหนดเอง ไม่ใช่เชลล์ ซึ่งอยู่หลังแบนเนอร์การตรวจสอบ ของอุปกรณ์ คอนโซลอนุกรมพิสูจน์ว่า ช่องทาง ใช้งานได้ แต่ไม่ได้ข้ามการยืนยันตัวตน

บันทึกจาก f5-xc-ce-vm-01 โดยตัดส่วนกลางที่ผลลัพธ์ของ systemd unit ไม่ได้เพิ่มข้อมูลอะไรออกไป:

+-----------------------------------------------+
Connected to the serial port of the VM.
If no login prompt is displayed, press ENTER.
+-----------------------------------------------+
Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
init_cea_offsets KASLR using RDRAND RDTSC...
Poking KASLR using RDRAND RDTSC...
Welcome to Red Hat Enterprise Linux 9.2024.6.3 (Plow) dracut-057-44.git20230822.el9 (Initramfs)!
[ OK ] Started Dispatch Password …ts to Console Directory Watch.
... [320 lines of systemd unit output elided]
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Reached target Login Prompts.
[ OK ] Started OpenSSH server daemon.
[ OK ] Started Container Runtime Interface for OCI (CRI-O).
[ 19.960784] cloud-init[1311]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:config' at Sun, 26 Jul 2026 13:13:54 +0000. Up 19.84 seconds.
[ OK ] Finished Apply the settings specified in cloud-config.
Starting Execute cloud user/final scripts...
[ OK ] Started Docker Application Container Engine.
Starting Argo Watch service...
Starting VP Manager image load...
[ OK ] Started Argo Watch service.
[ 21.544663] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:final' at Sun, 26 Jul 2026 13:13:56 +0000. Up 21.41 seconds.
[ 22.751629] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 finished at Sun, 26 Jul 2026 13:13:57 +0000. Datasource DataSourceAzure [seed=/var/lib/waagent]. Up 22.37 seconds
[ OK ] Finished Execute cloud user/final scripts.
[ OK ] Started libcontainer conta…f4b59f3b96c31ee10cd95f6eb371c.
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED
All actions performed on this device are audited
f5-xc-ce-vm-01 login: [ 123.107074] Warning: Deprecated Driver is detected: iptables will not be maintained in a future major release and may be disabled
[ 123.144641] Warning: Deprecated Driver is detected: ip6tables will not be maintained in a future major release and may be disabled

มีสี่สิ่งในบันทึกนั้นที่ควรสังเกต เพราะมันตอบคำถามที่ debug API ไม่สามารถตอบได้:

  • cloud-init เสร็จสมบูรณ์Datasource DataSourceAzure เสร็จที่ 22.37 วินาที โหนดที่ไม่เคยลงทะเบียนสำเร็จมักล้มเหลวที่จุดนี้ และนี่คือที่ที่คุณจะเห็นมัน
  • container runtime ทั้งสองตัวเริ่มทำงาน Container Runtime Interface for OCI (CRI-O) และ Docker Application Container Engine ต่างก็เป็น [ OK ] ซึ่งเป็น หลักฐานตอนบูตของพฤติกรรม dual-runtime ที่ทำให้ผู้คนแปลกใจใน crictl และ docker
  • VP Manager image load และ Argo Watch servicevpm และ Argo กำลังเริ่มทำงาน
  • พรอมต์เป็นของโหนดเอง อยู่หลังแบนเนอร์การตรวจสอบของมัน คอนโซลอนุกรมนำคุณไปสู่ หน้าจอล็อกอิน ไม่ใช่เซสชัน

สิ่งที่คุณเห็นได้ที่นี่แต่ API ไม่สามารถแสดงให้คุณเห็น

หัวข้อที่มีชื่อว่า “สิ่งที่คุณเห็นได้ที่นี่แต่ API ไม่สามารถแสดงให้คุณเห็น”
  • cloud-init ที่กำลังทำงาน, ล้มเหลว หรือไม่เคยเริ่มเลย — สาเหตุปกติของโหนด ที่ไม่เคยลงทะเบียนสำเร็จ
  • ความพยายามลงทะเบียน กับ register.ves.volterra.io รวมถึง ข้อผิดพลาดในการกำหนดค่าหรือโทเค็นที่เทนแนนต์ปฏิเสธ
  • ข้อความจากเคอร์เนลและการบูต จากช่วงก่อนที่เอเจนต์ใด ๆ จะทำงาน
  • โหนดในขณะที่มัน ไม่มีเส้นทางเครือข่ายที่ใช้งานได้ ซึ่งทำให้เส้นทางอื่นทั้งหมดใช้ไม่ได้

สำหรับโหนดที่ อยู่ในสถานะ ONLINE ให้เลือกใช้ debug API: มันเขียนสคริปต์ได้ สร้าง หลักฐานที่คุณสามารถรันซ้ำได้ และไม่ครองพอร์ตอนุกรมที่มีเพียงพอร์ตเดียว