इसे छोड़कर कंटेंट पर जाएं

सीरियल कंसोल

इस परिनियोजन के एक CE से 2026-07-28 को कैप्चर किया गया। sitecli/capture-manifest.json यह दर्ज करता है कि कौन सा नोड था, और scripts/capture-sitecli.sh --check कमांड सतह को एक लाइव CE के विरुद्ध पुनः सत्यापित करता है।

Azure Serial Console, Azure प्लेटफ़ॉर्म के माध्यम से नोड के एमुलेटेड सीरियल पोर्ट से जुड़ता है। यह F5 Distributed Cloud कंट्रोल प्लेन, नोड के डेटा प्लेन, या नोड द्वारा नियंत्रित किसी नेटवर्क पथ से नहीं गुजरता — और ठीक इसी कारण यह तब भी काम करता है जब कुछ और काम नहीं करता।

इसका सहारा तब लें जब कोई CE कभी ऊपर ही नहीं आया: रजिस्ट्रेशन विफल रहा, साइट टेनेंट में मौजूद नहीं है, या नोड चालू है पर बाहर जाने का कोई रास्ता नहीं है। इन सभी स्थितियों में debug API के पास रिले करने के लिए कोई टनल नहीं होता। SSH विफल रजिस्ट्रेशन के बाद भी बचा रहता है, लेकिन तभी जब उसकी कुंजी पहले बूट पर ही लिखी जा चुकी हो और आप VNet के भीतर से नोड के आंतरिक पते तक पहुँच सकें — और किसी ऐसे नोड के लिए, जिससे आप पहली बार मिल रहे हैं, इनमें से कोई भी सत्य नहीं होता।

यदि नोड के पास कोई भी कार्यशील नेटवर्क पथ है तो इससे पहले Site Console आज़माएँ: वह भी विफल रजिस्ट्रेशन के बाद बचा रहता है, उसे कोई कुंजी नहीं चाहिए, और वह उस व्यक्ति को बाहर नहीं करता जो पहले से नोड देख रहा है। सीरियल कंसोल तब बचता है जब नेटवर्क पथ ही टूटी हुई चीज़ हो।

पूर्वापेक्षा: बूट डायग्नोस्टिक्स

Section titled “पूर्वापेक्षा: बूट डायग्नोस्टिक्स”

सीरियल कंसोल जोड़ने से पहले Azure को VM पर बूट डायग्नोस्टिक्स चाहिए। यह terraform/modules/ce-node द्वारा सक्षम किया जाता है:

boot_diagnostics {}

एक खाली ब्लॉक Azure-प्रबंधित स्टोरेज चुनता है, इसलिए कोई डायग्नोस्टिक्स स्टोरेज अकाउंट, लाइफसाइकल पॉलिसी या एक्सेस की अपने पास रखने की ज़रूरत नहीं। किसी नोड पर इसकी पुष्टि करें:

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

टर्मिनल के बिना उपलब्धता की जाँच

Section titled “टर्मिनल के बिना उपलब्धता की जाँच”

अटैच करने के लिए इंटरैक्टिव सत्र चाहिए, लेकिन यह अटैच होगा या नहीं — इसका उत्तर दो API कॉल हैं। दोनों हेल्थ चेक में उपयोगी हैं।

सेवा सब्सक्रिप्शन के लिए सक्षम होनी चाहिए — कोई प्रशासक इसे पूरे टेनेंट में अक्षम कर सकता है:

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"

wss:// से शुरू होने वाला connectionString — इस परिनियोजन पर eastus.gateway.serialconsole.azure.com — का अर्थ है कि कंसोल अभी अटैच किया जा सकता है। बूट डायग्नोस्टिक्स सक्षम होने से पहले, इस कॉल के पास अटैच करने के लिए कुछ नहीं था।

  1. एक्सटेंशन एक बार इंस्टॉल करें:

    Terminal window
    az extension add --name serial-console
  2. अटैच करें:

    Terminal window
    az serial-console connect -g <resource-group> -n <vm-name>
  3. आप नोड के अपने लॉगिन प्रॉम्प्ट पर पहुँचते हैं, शेल पर नहीं, अप्लायंस के ऑडिट बैनर के पीछे। सीरियल कंसोल सिद्ध करता है कि चैनल काम करता है; यह प्रमाणीकरण को बायपास नहीं करता।

f5-xc-ce-vm-01 से कैप्चर किया गया, बीच में वह भाग हटा दिया गया जहाँ systemd यूनिट आउटपुट कुछ नहीं जोड़ता:

+-----------------------------------------------+
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 Interface for OCI (CRI-O) और Docker Application Container Engine दोनों [ OK ] हैं, जो उस दोहरे-रनटाइम व्यवहार का बूट-समय प्रमाण है जो crictl और docker में लोगों को चौंकाता है।
  • VP Manager image load और Argo Watch servicevpm और Argo का ऊपर आना।
  • प्रॉम्प्ट नोड का अपना है, उसके ऑडिट बैनर के पीछे। सीरियल कंसोल आपको एक लॉगिन प्रॉम्प्ट देता है, सत्र नहीं।

यहाँ आप क्या देख सकते हैं जो API आपको नहीं दिखा सकता

Section titled “यहाँ आप क्या देख सकते हैं जो API आपको नहीं दिखा सकता”
  • cloud-init का चलना, विफल होना, या कभी शुरू ही न होना — किसी ऐसे नोड का सामान्य कारण जो कभी रजिस्टर नहीं होता।
  • register.ves.volterra.io के विरुद्ध रजिस्ट्रेशन प्रयास, जिसमें कोई कॉन्फ़िगरेशन त्रुटि या टेनेंट द्वारा अस्वीकृत टोकन शामिल है।
  • किसी भी एजेंट के चलने से पहले के कर्नेल और बूट संदेश
  • नोड जब उसके पास कोई कार्यशील नेटवर्क पथ न हो, जो हर दूसरे मार्ग को नाकाम कर देता है।

जो नोड ONLINE है, उसके लिए debug API को प्राथमिकता दें: यह स्क्रिप्ट योग्य है, यह ऐसा प्रमाण उत्पन्न करता है जिसे आप दोबारा चला सकते हैं, और यह एकल सीरियल पोर्ट पर कब्ज़ा नहीं करता।