CloudStack
ตำแหน่งในหน้าผู้ดูแลระบบ: Infrastructure › Cloud provider › CloudStack › API connection (
/infra/cloudstack?tab=connect) การเชื่อมต่อครั้งแรกสามารถทำได้ใน setup wizard ขั้นตอนที่ 2
What it does
NexCMP จำหน่ายเครื่องเสมือนที่ทำงานบนคลาวด์ Apache CloudStack ของคุณ โดยจะทำหน้าที่ปรับใช้ เริ่มต้น หยุด ปรับขนาด สร้างสแนปชอต และลบ VM ผ่าน CloudStack API แจกจ่ายที่อยู่ IP สาธารณะจากโซน อ่านการใช้งานสำหรับการเรียกเก็บเงินและแบนด์วิดท์ รวมถึงแสดงความจุและสถานะในคอนโซลผู้ดูแลระบบ CloudStack ยังคงเป็นแหล่งข้อมูลหลักสำหรับไฮเปอร์ไวเซอร์ ส่วน NexCMP ทำหน้าที่เป็นหน้าร้าน ระบบเรียกเก็บเงิน และพอร์ทัลที่อยู่ด้านบน
ใช้หน้านี้เมื่อ CloudStack เป็น (หรือจะเป็น) แหล่งที่มาของ VM หลักของคุณ สำหรับแหล่งที่มาสำรองถัดไป โปรดดู Proxmox VE
ข้อกำหนด
| Item | Requirement |
|---|---|
| เวอร์ชัน CloudStack | 4.23 คือรุ่นที่ผ่านการทดสอบ คอนโซล VM ต้องใช้ 4.18 หรือใหม่กว่า และการปรับขนาด CPU/RAM แบบสดของ VM ที่กำลังทำงานต้องใช้ 4.23 ร่วมกับ KVM |
| ประเภทโซน | โซนที่มีเครือข่ายเกสต์อย่างน้อยหนึ่งเครือข่ายสำหรับ VM ของลูกค้า และช่วง IP สาธารณะที่มีแอดเดรสว่าง |
| ไฮเปอร์ไวเซอร์ | KVM คือไฮเปอร์ไวเซอร์ที่ผ่านการทดสอบ |
| บัญชี | โดเมนและบัญชีเฉพาะที่สร้างขึ้นสำหรับ NexCMP ห้ามใช้คีย์ผู้ดูแลระบบ ROOT เด็ดขาด |
| การเข้าถึง API | เซิร์ฟเวอร์แผงควบคุมต้องสามารถเข้าถึง URL ของ API ของเซิร์ฟเวอร์การจัดการ (https://cloudstack.example.com/client/api) ผ่าน HTTP(S) คอนโซล VM แบนด์วิดท์ และฟีเจอร์ Kubernetes ใช้จุดสิ้นสุดเดียวกัน |
| คีย์อ่านอย่างเดียวที่เป็นทางเลือก | คีย์แบบอ่านอย่างเดียวตัวที่สองช่วยให้คอนโซลผู้ดูแลระบบแสดงโฮสต์ สตอเรจ VM ของระบบ และช่วง IP สาธารณะได้ ไม่จำเป็นต้องใช้สำหรับการขาย VM |
| IP สาธารณะ | แอดเดรส IPv4 สาธารณะที่ว่างในโซน คำนำหน้าที่ NexCMP สามารถขายได้จะถูกกำหนดค่าภายใต้ Sales IP pools |
| เทมเพลต | เทมเพลตที่พร้อมใช้งานและเปิดใช้งานรหัสผ่านอย่างน้อยหนึ่งรายการ และ offering บริการหนึ่งรายการที่บัญชีของคุณมองเห็น ดูที่ Templates |
| สตอเรจ | สตอเรจหลักสำหรับโวลุ่มของบัญชี และสตอเรจสำรองหากคุณขายสแนปชอตหรืออิมเมจ |
| ขึ้นอยู่กับ | ไม่มี Kubernetes, Private Cloud, Images และ Bandwidth ขึ้นอยู่กับหน้านี้ |
อย่าใช้คีย์ผู้ดูแลระบบ ROOT
สร้างโดเมนและบัญชีเฉพาะสำหรับ NexCMP คีย์ดังกล่าวจะเข้าถึงได้เฉพาะโดเมนนั้นเท่านั้น และคีย์ที่รั่วไหลจะไม่สามารถเข้าถึงส่วนที่เหลือของคลาวด์ของคุณได้ ตัวช่วยตั้งค่า (wizard) ยังตรวจสอบด้วยว่าเน็ตเวิร์กที่คุณเลือกเป็นของโซน และ เป็นของบัญชีที่เป็นเจ้าของคีย์
เตรียมโครงสร้างพื้นฐาน
คำสั่งเหล่านี้ใช้ CloudMonkey (cmk) ที่ล็อกอินในฐานะผู้ดูแลระบบ CloudStack แทนที่ชื่อตัวอย่างและตัว placeholder ในเครื่องหมายวงเล็บมุม
สร้างบัญชีเฉพาะและคีย์ API
สร้างโดเมนที่จะเก็บทุกสิ่งที่ NexCMP เป็นเจ้าของ
bashcmk create domain name=nexcmpจดบันทึก
idในเอาต์พุต ซึ่งจะถูกใช้เป็น<domain-id>ด้านล่างค้นหาบทบาทที่คุณต้องการกำหนดให้กับบัญชี
bashcmk list roles type=DomainAdmin filter=id,nameบทบาท ควรเลือกเมื่อใด Domain Admin (แนะนำ) ชุดฟีเจอร์เต็มรูปแบบ: VM, เน็ตเวิร์ก, โปรเจกต์สำหรับ Kubernetes, VPC, อิมเมจ ขอบเขตการทำงานสิ้นสุดที่โดเมน nexcmpUser วงจรชีวิตของ VM เท่านั้น ผู้ใช้ทั่วไปจะไม่สามารถลบ VM ถาวรได้เว้นแต่การตั้งค่าส่วนกลาง allow.user.expunge.recover.vmเป็น true จากนั้น NexCMP จะหยุด VM และ CloudStack จะลบ VM ถาวรหลังจากexpunge.delayสร้างบัญชีและผู้ใช้คนแรก ใช้รหัสผ่านสุ่มที่ยาว; จะไม่ต้องพิมพ์ซ้ำอีก
bashcmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>สร้างคู่คีย์ API สำหรับผู้ใช้ใหม่
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>คัดลอก
apikeyและsecretkeyนี่คือ API key และ Secret key ที่คุณป้อนใน NexCMP NexCMP จะจัดเก็บแบบเข้ารหัสและแสดงเฉพาะอักษร 4 ตัวสุดท้ายหลังจากนั้นตรวจสอบให้แน่ใจว่าโดเมนไม่มีขีดจำกัดทรัพยากรที่เข้มงวด (instances, โวลุ่ม, IP สาธารณะ, เน็ตเวิร์ก, สแนปชอต, เทมเพลต, โปรเจกต์)
bashcmk list resourcelimits domainid=<domain-id>
สร้างเน็ตเวิร์กเกสต์สำหรับ VM ของลูกค้า
VM ของลูกค้าจะถูกปรับ ใช้งานในเน็ตเวิร์กเกสต์เดียวที่เป็นของบัญชีใหม่ เน็ตเวิร์กแบบไอโซเลทที่มีเราเตอร์เสมือน (VR) และบริการ Static NAT, Firewall และ Port Forwarding จะทำงานได้ดี เนื่องจาก NexCMP จะเชื่อมโยง IP สาธารณะเข้ากับแต่ละ VM ด้วย static NAT
bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>ตรวจสอบนโยบาย egress เริ่มต้นของ offering: หากเป็น "deny" VM ของลูกค้าจะไม่มีการเข้าถึงภายนอกจนกว่าจะมีการเพิ่มกฎ firewall egress
ทำให้ offering และ template มองเห็นได้
- Service offerings และ network offerings จะต้องเป็นแบบสาธารณะหรือกำหนดให้กับ
nexcmpdomain ไม่เช่นนั้นบัญชีจะไม่สามารถแสดงรายการหรือใช้งานได้ - ลงทะเบียนหรือแชร์ template อย่างน้อยหนึ่งรายการ (ดู Templates) NexCMP จะแสดงรายการ template ที่พร้อมใช้งานและเป็นรายการเด่น
ตัวเสริม: คีย์แบบอ่านได้อย่างเดียวสำหรับหน้าโครงสร้างพื้นฐาน
แท็บ Capacity, Host, Storage และ System VM รวมถึงรายการช่วง IP สาธารณะจะใช้คีย์ตัวที่สองที่ต้องการเพียงสิทธิ์การอ่านสำหรับหกคำสั่งเท่านั้น ให้สร้างบทบาทแบบจำกัดแทนที่จะนำคีย์ผู้ดูแลระบบเต็มรูปแบบมาใช้ซ้ำ:
bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=denyจากนั้นสร้างบัญชีด้วยบทบาทนั้น (ใน ROOT domain เนื่องจากมีการอ่านข้อมูลทั่วทั้งโซน) สร้างคีย์เหมือนขั้นตอนที่ 4 และป้อนคีย์เหล่านั้นเป็น RO API key ในส่วนถัดไป
ตรวจสอบเส้นทางเครือข่าย
จากเซิร์ฟเวอร์แผงควบคุม:
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiการตอบกลับแบบ HTTP ใดก็ตาม (แม้แต่ 4xx) ก็แสดงว่าพอร์ตสามารถเข้าถึงได้ หากเกิด Timeouts แสดงว่ามีปัญหาไฟร์วอลล์หรือ DNS ฝั่งคุณ
เชื่อมต่อใน NexCMP
ในวิซาร์ดการตั้งค่า
ขั้นตอนที่ 2 ของ setup wizard จะขอค่าเดิม Test connection จะแสดงรายการโซนและเครือข่ายที่คีย์มองเห็น; ให้เลือกโซนและเครือข่ายเกสต์, ชื่อที่แสดงสำหรับโซนและประเทศ จากนั้นคลิก Save CloudStack วิซาร์ดจะปฏิเสธเครือข่ายที่ไม่อยู่ในโซนนั้นหรือไม่สามารถมองเห็นได้ด้วยคีย์

ภายหลังในคอนโซลผู้ดูแลระบบ
เปิด Infrastructure › Cloud provider › CloudStack แล้วเลือกแท็บ API connection
กรอกข้อมูลในส่วน Connection:
ฟิลด์ ค่าตัวอย่าง Endpoint API https://cloudstack.example.com/client/apiAPI key (สิทธิ์เขียน) XXXX(เว้นว่างไว้เพื่อรักษาคีย์ที่บันทึกไว้เดิม)Secret key XXXXคีย์ API แบบ RO / คีย์ลับแบบ RO ไม่บังคับ จากบัญชีแบบอ่านอย่างเดียว Zone ID UUID ของโซนของคุณ 
คลิก Test connection ก่อนบันทึก ระบบจะทดสอบคีย์ที่คุณพิมพ์โดยยังไม่บันทึก ได้แก่ คีย์เขียนด้วย
listZonesและlistCapabilitiesรวมถึงคีย์อ่านอย่างเดียวด้วยlistSystemVmsคลิก Save connection เปิด Enable CloudStack connection ไว้; การปิดสวิตช์นี้จะทำให้เวิร์กเกอร์หยุดงาน CloudStack ทั้งหมดโดยที่ข้อมูลไม่สูญหาย
เปิด Services › Virtual Machines › Policy › Provisioning เพื่อตั้งค่าเครือข่ายเกสต์เริ่มต้น, ออฟเฟอริงกำหนดเอง และคีย์แพร์เริ่มต้นสำหรับ VM ใหม่

เปิด Infrastructure › Cloud provider › Sales IP pools และภายใต้ Configure sales ranges ให้ตั้งค่า Sellable IP range prefixes (ตัวอย่างเช่น
203.0.113.) และ Excluded IP prefixes หากมีแอดเดรสบางตัวในโซนที่ห้ามขายเด็ดขาด เว้น prefix ว่างไว้เพื่ออนุญาตทุกแอดเดรสที่ว่างอยู่
สิ่งที่ NexCMP อ่านและเขียน
| พื้นที่ | อ่าน | เปลี่ยนแปลง |
|---|---|---|
| VMs | รายการ, สถานะ, ประวัติการใช้งาน, ปลายทางคอนโซล | ปรับใช้, เริ่ม, หยุด, รีบูต, ติดตั้งใหม่, ทำลาย, สเกล, รีเซ็ตพาสเวิร์ดและ SSH Keys |
| ดิสก์และสแนปชอต | วอลุ่ม, สแนปชอต VM, สำรองข้อมูล | สร้าง, แนบ, ถอด, ปรับขนาด, ลบ, สแนปชอต, กู้คืน |
| ระบบเครือข่าย | เครือข่าย, เราเตอร์, IP สาธารณะ, ไฟร์วอลล์, การส่งต่อพอร์ต, กฎโหลดบาลานเซอร์ | เชื่อมโยงและปล่อย IP สาธารณะ, Static NAT, ไฟร์วอลล์, การส่งต่อพอร์ต, กฎ Egress, เครือข่ายและ ACL สำหรับ Private Cloud |
| แคตตาล็อก | บริการ, ออฟเฟอริงดิสก์และเครือข่าย, เทมเพลต, ISO, ประเภท OS | ลงทะเบียนและลบเทมเพลตและ ISO (Images), ออฟเฟอริงบริการเมื่อสร้างแพ็กเกจกำหนดเอง |
| Kubernetes | เวอร์ชันที่รองรับ, คลัสเตอร์, การกำหนดค่า | โปรเจกต์, ขีดจำกัดทรัพยากร, เครือข่าย, คลัสเตอร์ (โมดูล Kubernetes) |
| คีย์อ่านอย่างเดียว | โฮสต์, คลัสเตอร์, สตอเรจพูล, ระบบ VM, ความจุ, ช่วง IP ของ VLAN | ไม่มี |
CPU และ RAM แบบเรียลไทม์ รวมถึงแบนด์วิดท์
- Hot-plug. VM ที่กำลังทำงานอยู่สามารถปรับขนาดได้โดยไม่ต้องรีบูตเฉพาะเมื่อเทมเพลตอนุญาต (ปรับขนาดได้แบบไดนามิก) และระบบปฏิบัติการแขกนำ CPU และ RAM ใหม่เข้าสู่ระบบ NexCMP จะเปิดใช้งาน Auto Scaling สำหรับเทมเพลตที่มีชื่อลงท้ายด้วย
vNโดยมี N ตั้งแต่ 6 ขึ้นไป หรือเมื่อคุณตั้งค่าด้วยตนเองในฟิลด์ vCPU/RAM hot-plug ของเทมเพลต ดูที่ Templates. - แหล่งที่มาของแบนด์วิดท์. ในการตั้งค่าเริ่มต้น NexCMP จะวัดปริมาณการใช้งานจากสถิติ VM ของ CloudStack (
listVirtualMachinesUsageHistoryซึ่งจะดึงข้อมูลทุกๆ 5 นาทีและรวมผลลัพธ์ต่ออินเทอร์เฟซเครือข่าย VM) ตัวเลขเหล่านี้รวมปริมาณการใช้งานระหว่าง VM ด้วย ดังนั้นจึงอาจสูงกว่าที่เกตเวย์เราเตอร์วัดเล็กน้อย โปรดเปิดใช้งานการเก็บรวบรวมสถิติ VM ของ CloudStack ไว้ ช่องว่างที่นานกว่าระยะเวลาเก็บรักษาสถิติจะถูกข้ามไป ดูที่ Bandwidth.
ตรวจสอบ
- Test connection จะแสดงผล "Write key: OK" พร้อมโซนของคุณและเวอร์ชัน CloudStack
- Infrastructure › Cloud provider › Providers จะแสดงสถานะผู้ให้บริการว่าใช้งานอยู่ พร้อมเวลาทดสอบล่าสุด แผงสุขภาพบนแดชบอร์ดจะไม่แสดงข้อความ "CloudStack: not connected" อีกต่อไป
- Sales IP pools จะแสดงรายการแอดเดรสที่ว่าง (ข้อมูลจะรีเฟรชประมาณนาทีละครั้ง)
- สั่งซื้อ VM ขนาดเล็กจากพอร์ทัลลูกค้าหรือคอนโซลแอดมิน และตรวจสอบว่าสถานะเปลี่ยนเป็น Running มี IP สาธารณะ และคุณสามารถเปิดคอนโซลใช้งานได้
ข้อจำกัดและหมายเหตุ
- NexCMP เวอร์ชันนี้สามารถเชื่อมต่อ CloudStack คลัสเตอร์ได้หนึ่งรายการ ไดล็อก Add cloud provider สามารถทดสอบคีย์ของคลัสเตอร์ที่สองได้ แต่ยังไม่สามารถบันทึกได้
- โซน CloudStack หนึ่งโซนจะถูกผูกไว้กับโซนเริ่มต้นของ NexCMP สำหรับ CloudStack ที่มีหลายโซน ขอบเขตจะจำกัดเฉพาะโซนที่คุณป้อน ดังนั้น VM, IP และเครือข่ายของโซนอื่นๆ จะถูกละเว้น
- การลบเครือข่ายเกสต์ใน CloudStack จะทำให้การปรับ khai (deployment) ใหม่ทั้งหมดล้มเหลว คอนโซลแอดมินจะแสดงประกาศสีแดงเมื่อเครือข่ายหายไป
- ข้อมูลรับรองจะไม่ถูกส่งออกจากเซิร์ฟเวอร์ API จะส่งคืนเฉพาะอักขระสี่ตัวสุดท้ายเท่านั้น
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature | API key หรือ secret ไม่ถูกต้อง, คีย์จากผู้ใช้รายอื่น, หรือปัญหาเรื่องเวลาบนเซิร์ฟเวอร์แผงควบคุม | สร้างคีย์ใหม่อีกครั้งด้วย cmk generate userkeys และวางข้อมูลทั้งสองค่า ตรวจสอบเวลาของเซิร์ฟเวอร์แผงควบคุม |
การทดสอบ: listZones: … หรือหมดเวลา | เซิร์ฟเวอร์แผงควบคุมไม่สามารถเข้าถึง URL ของ API ได้ | ตรวจสอบ DNS, ไฟร์วอลล์ และเส้นทาง /client/api ที่แน่นอน |
| วิซาร์ด: "network not found in that zone for this API key" | เครือข่ายที่เลือกเป็นของบัญชีหรือโซนอื่น | สร้างเครือข่ายในบัญชีเฉพาะ (ดูด้านบน) และรัน Test connection อีกครั้ง |
| วิซาร์ด: "pick a zone and a network" | ยังไม่ได้รันการทดสอบ หรือไม่ได้เลือกโซนหรือเครือข่าย | คลิก Test connection และเลือกทั้งสองรายการ |
| แบนเนอร์ "CloudStack key not configured" | ยังไม่มีการบันทึกคีย์ ("Connect later") | กรอกข้อมูลในบัตร Connection, คลิก Save connection จากนั้นคลิก Test connection |
| แบนเนอร์ "CloudStack connection is OFF" | สวิตช์ Enable CloudStack connection ปิดอยู่ | เปิดสวิตช์แล้วบันทึก |
| คีย์แบบอ่านอย่างเดียว: "unusable …" ในการทดสอบ | สิทธิ์ของบทบาทหายไปหรือบัญชีไม่ถูกต้อง | ตรวจสอบคำสั่งที่อนุญาตทั้งหกรายการและตรวจสอบว่าบัญชีอยู่ในโดเมน ROOT |
| "Zone public IP ranges not measured yet" หรือ "no public IP ranges declared" | ไม่มีคีย์แบบอ่านอย่างเดียว หรือโซนนั้นไม่มีช่วง IP สาธารณะจริงๆ | เพิ่มคีย์แบบอ่านอย่างเดียว หรือเพิ่มช่วงพับลิกไอพีใน CloudStack |
| "พูลว่าง — โปรดรอ 60 วินาทีเพื่อให้ vmd ซิงค์" | รายการ IP จะถูกรีเฟรชโดย worker ทุกๆ หนึ่งนาที | รอสักครู่แล้วรีโหลดอีกครั้ง |
| "IP ฟรีในย่าน 203.0.113. หมดลงแล้ว" | แอดเดรสในพรีฟิกซ์ที่ขายได้ถูกใช้งานหมดแล้ว | เพิ่มแอดเดรสให้กับโซน ขยายพรีฟิกซ์ หรือปล่อย IP ที่ไม่ได้ใช้งาน |
| "ไม่สามารถดึงข้อมูลเครือข่ายได้ (CloudStack ไม่ตอบสนองหรือคีย์ขาดสิทธิ์)" | คีย์สูญเสียสิทธิ์การเข้าถึง หรือ CloudStack ล่ม | รัน Test connection แล้วตรวจสอบว่าบัญชีเปิดใช้งานอยู่ |
| "เครือข่ายแขก (Guest network) ไม่มีอยู่จริง" | เน็ตเวิร์กนี้ถูกลบไปแล้วใน CloudStack | สร้างเน็ตเวิร์กขึ้นใหม่อีกครั้งและตั้งค่าเป็นค่าเริ่มต้นภายใต้ Provisioning |