การติดตั้ง OpenStack
หากคุณต้องการเริ่มต้นและวิ่งอย่างรวดเร็วไปที่นี่แทน:
คำตอบนี้ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้ Juju กับ OpenStack
ขอบเขต
แพลตฟอร์ม OpenStack นั้นทรงพลังและใช้งานได้หลากหลาย เอกสารส่วนนี้เกี่ยวข้องกับการปรับใช้ระบบ "มาตรฐาน" ที่ใช้ระบบ OpenStack แต่ไม่ จำกัด เฉพาะส่วนประกอบ Canonical เช่น MAAS, Juju และ Ubuntu หากมีการกล่าวถึงวิธีการและซอฟต์แวร์อื่นที่เหมาะสม
สมมติฐาน
- การใช้ MAAS - ทำตามโครงสร้างเหล่านี้ก่อน
- การใช้ Juju
- การกำหนดค่าเครือข่ายท้องถิ่น - เอกสารนี้ถือว่าคุณมีการกำหนดค่าเครือข่ายท้องถิ่นที่เพียงพอรวมถึงส่วนต่อประสานที่แยกต่างหากสำหรับการเข้าถึงระบบคลาวด์ OpenStack เครือข่ายในอุดมคตินั้นถูกจัดวางใน [MAAS] [เอกสาร MAAS สำหรับ OpenStack]
วางแผนการติดตั้ง
ก่อนที่จะปรับใช้บริการใด ๆ เป็นประโยชน์อย่างมากที่จะนำทรัพยากรที่มีอยู่ไปใช้และวิธีการใช้งาน OpenStack ประกอบด้วยบริการที่เกี่ยวข้องกันหลายอย่าง (Nova, Swift, ฯลฯ ) ซึ่งแต่ละบริการมีความต้องการที่แตกต่างกันในแง่ของโฮสต์ ตัวอย่างเช่นบริการ Swift ซึ่งมีที่เก็บข้อมูลวัตถุมีความต้องการแตกต่างจากบริการ Nova ซึ่งมีทรัพยากรการคำนวณ
ข้อกำหนดขั้นต่ำสำหรับแต่ละบริการและข้อเสนอแนะถูกจัดทำไว้ในคู่มือการใช้งาน OpenStackอย่างเป็นทางการ
องค์ประกอบของโหนดแนะนำสำหรับการปรับใช้กับ OpenStack MAAS และ Juju คือโหนดทั้งหมดในระบบควรจะสามารถทำงานใด ๆของการบริการ นี่เป็นแนวปฏิบัติที่ดีที่สุดสำหรับความทนทานของระบบเนื่องจากโหนดทางกายภาพใด ๆ ควรล้มเหลวจึงสามารถนำ repurposed อื่นมาใช้แทน สิ่งนี้รวมถึงข้อกำหนดฮาร์ดแวร์อย่างชัดเจนเช่นอินเทอร์เฟซเครือข่ายพิเศษ
หากด้วยเหตุผลทางเศรษฐกิจหรือคุณเลือกที่จะใช้การกำหนดค่าฮาร์ดแวร์ที่แตกต่างกันคุณควรทราบว่าความสามารถในการเอาชนะความล้มเหลวของฮาร์ดแวร์จะลดลง นอกจากนี้ยังจะมีความจำเป็นเพื่อการใช้งานเป้าหมายที่เฉพาะเจาะจงไปยังต่อมน้ำ - ดูส่วนในเอกสาร MAAS เกี่ยวกับแท็ก
สร้างไฟล์กำหนดค่า OpenStack
เราจะใช้เครื่องราง Juju ในการปรับใช้ส่วนประกอบต่างๆของ OpenStack ชาร์มแต่ละชิ้นนั้นรวมทุกอย่างที่จำเป็นในการตั้งค่าบริการเฉพาะ อย่างไรก็ตามบริการส่วนบุคคลมีตัวเลือกการกำหนดค่ามากมายซึ่งบางอย่างเราจะต้องการเปลี่ยน
เพื่อให้งานนี้ง่ายขึ้นและทำซ้ำได้มากขึ้นเราจะสร้างไฟล์การกำหนดค่าแยกต่างหากพร้อมตัวเลือกที่เกี่ยวข้องสำหรับบริการทั้งหมด สิ่งนี้เขียนในรูปแบบ YAML มาตรฐาน ( ดู www.yaml.org หากสิ่งนี้ไม่คุ้นเคยกับคุณ )
นี่คือตัวอย่างของ openstack-config.yaml:
keystone:
admin-password: openstack
debug: 'true'
log-level: DEBUG
nova-cloud-controller:
network-manager: 'Neutron'
quantum-security-groups: 'yes'
neutron-external-network: Public_Network
nova-compute:
enable-live-migration: 'True'
migration-auth-type: "none"
virt-type: kvm
#virt-type: lxc
enable-resize: 'True'
quantum-gateway:
ext-port: 'eth1'
plugin: ovs
glance:
ceph-osd-replication-count: 3
cinder:
block-device: None
ceph-osd-replication-count: 3
overwrite: "true"
glance-api-version: 2
ceph:
fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
osd-devices: /dev/sdb
osd-reformat: 'True'
สำหรับบริการทั้งหมดเราสามารถกำหนดค่าopenstack-origin
ให้ชี้ไปที่แหล่งติดตั้ง ในกรณีนี้เราจะพึ่งพาค่าเริ่มต้นซึ่งจะชี้ไปที่แหล่งข้อมูลที่เกี่ยวข้องสำหรับ Ubuntu 14.04 LTS Trusty ที่วางจำหน่าย การกำหนดค่าเพิ่มเติมสำหรับแต่ละบริการอธิบายไว้ในเอกสารนี้
การกำหนดค่าอื่น ๆ
การตั้งค่าและตัวเลือกการกำหนดค่าอื่น ๆ นั้นเป็นไปได้สำหรับการปรับใช้บริการ OpenStack รายละเอียดเหล่านี้อยู่ในเอกสารของเครื่องรางแต่ละชิ้นที่ Juju ใช้และสามารถตรวจสอบได้โดยไปที่Juju Charm Store ออนไลน์และค้นหาเครื่องรางโดยใช้กล่องค้นหาที่ด้านซ้ายบนของหน้า การตั้งค่าการกำหนดค่าจะมีรายละเอียดภายใต้ "การกำหนดค่า" ในหน้าหลักดังแสดง:
การปรับใช้ OpenStack ด้วย Juju
ตอนนี้การกำหนดค่าได้ถูกกำหนดแล้วเราสามารถใช้ Juju เพื่อปรับใช้และเชื่อมโยงบริการต่างๆ
กำลังเริ่มต้น Juju
Juju ต้องการการตั้งค่าจำนวนน้อยที่สุด ที่นี่เราคิดว่ามันได้รับการกำหนดค่าให้ทำงานกับคลัสเตอร์ MAAS ของคุณ (ดู [คู่มือการติดตั้ง Juju] [juju_install] สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
ก่อนอื่นเราต้องดึงรูปภาพและเครื่องมือที่ Juju จะใช้:
juju sync-tools --debug
จากนั้นเราสามารถสร้างตัวอย่าง bootstrap:
juju bootstrap --upload-tools --debug
เราใช้สวิตช์เครื่องมืออัปโหลดเพื่อใช้เครื่องมือในรุ่นท้องถิ่นที่เราดึงข้อมูลมา สวิตช์ดีบักจะให้เอาต์พุต verbose ซึ่งมีประโยชน์ กระบวนการนี้อาจใช้เวลาสักครู่เนื่องจาก Juju กำลังสร้างอินสแตนซ์และติดตั้งเครื่องมือ เมื่อเสร็จแล้วคุณสามารถตรวจสอบสถานะของระบบด้วยคำสั่ง:
juju status
สิ่งนี้ควรส่งคืนสิ่งที่ชอบ:
environment: maas
machines:
"0":
agent-state: started
agent-version: 1.18.1.1
dns-name: localhost
instance-id: localhost
series: trusty
ปรับใช้ OpenStack Charms
หลังจากที่โหนด Juju bootstrap เปิดใช้งานแล้วเราสามารถปรับใช้บริการที่จำเป็นสำหรับการติดตั้ง OpenStack ของเรา ในการกำหนดค่าบริการเหล่านี้อย่างถูกต้องตามที่มีการใช้งานเราจะใช้ประโยชน์จากไฟล์กำหนดค่าที่เรากำหนดไว้ก่อนหน้านี้โดยผ่านมันไปพร้อมกับ--config
สวิตช์พร้อมกับแต่ละคำสั่งการปรับใช้ ทดแทนในชื่อและพา ธ ของไฟล์กำหนดค่าของคุณหากแตกต่างกัน
มันมีประโยชน์ แต่ไม่จำเป็นต้องปรับใช้บริการตามลำดับด้านล่าง นอกจากนี้ยัง reccommended อย่างมากที่จะเปิดหน้าต่าง terminal juju debug-log
เพิ่มเติมและเรียกใช้คำสั่ง นี่จะแสดงผลบันทึกของบริการทั้งหมดในขณะที่ทำงานและอาจมีประโยชน์สำหรับการแก้ไขปัญหา
ขอแนะนำให้เรียกใช้juju status
คำสั่งเป็นระยะเพื่อตรวจสอบว่าแต่ละบริการได้รับการติดตั้งและทำงานอย่างถูกต้อง Juju จะพยายามดึงเครื่องรางที่ดีที่สุดที่เป็นไปได้จาก Charm Store ออนไลน์โดยอัตโนมัติ หากคุณกำลังติดตั้งจากภายในเครือข่ายที่ จำกัด หรือปิดเป็นไปได้ที่จะดึงชุดทางลัดที่จำเป็นล่วงหน้า ดู [เอกสารประกอบสำหรับเครื่องรางออฟไลน์] [เครื่องรางออฟไลน์]
juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw
เพิ่มความสัมพันธ์ระหว่างบริการ OpenStack
แม้ว่าจะมีการปรับใช้บริการเหล่านี้ แต่ยังไม่ได้เชื่อมต่อเข้าด้วยกัน แต่ละบริการมีอยู่ในปัจจุบัน เราใช้juju add-relation
คำสั่งเพื่อให้พวกเขารับรู้ซึ่งกันและกันและตั้งค่าการเชื่อมต่อและโปรโตคอลที่เกี่ยวข้อง การกำหนดค่าพิเศษนี้ได้รับการดูแลโดยผู้มีเสน่ห์แต่ละคน
เราควรเริ่มเพิ่มความสัมพันธ์ระหว่างเครื่องรางโดยการตั้งค่าบริการการอนุญาต Keystone และฐานข้อมูลเนื่องจากการเชื่อมต่ออื่น ๆ จะต้องใช้สิ่งนี้:
juju add-relation keystone mysql
เรารอจนกว่าจะมีการตั้งค่าความสัมพันธ์ หลังจากเสร็จสิ้นให้ตรวจสอบด้วยสถานะ juju:
juju status mysql
juju status keystone
อาจใช้เวลาสักครู่ก่อนที่บริการนี้จะเสร็จสมบูรณ์ แม้ว่ามันจะเป็นไปได้ที่จะเพิ่มความสัมพันธ์อย่างต่อเนื่อง (Juju จัดการคิวสำหรับการกระทำที่ค้างอยู่) มันสามารถต่อต้านในแง่ของเวลาโดยรวมได้
ความสัมพันธ์ต่อไปนี้จำเป็นต้องทำเช่นกัน:
juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone
ในที่สุดผลลัพธ์ของสถานะ juju ควรแสดงความสัมพันธ์ทั้งหมดว่าเสร็จสมบูรณ์ คลาวด์ OpenStack กำลังทำงานอยู่ แต่จะต้องมีการเติมข้อมูลด้วยส่วนประกอบเพิ่มเติมก่อนที่จะพร้อมใช้งาน