پیاده سازی Openstack به شیوه tripleO


TripleO پروژه ای است با هدف نصب، ارتقا و بهره برداری از OpenStack با استفاده از امکانات ابری خود OpenStack به عنوان پایه و اساس - بنا بر سرویس های Nova، Ironic، Neutron و Heat برای خودکارسازی مدیریت ابر در مقیاس مرکز داده.

TripleO را می توان در baremetal و همچنین در محیط های مجازی استفاده کرد. این بخش حاوی دستورالعمل هایی در مورد نحوه تنظیم محیط پیاده سازی است.

TripleO را می توان به عنوان یک محیط مستقل با کلیه سرویس های نصب شده بر روی یک ماشین مجازی یا سرور فیزیکی استفاده کرد.

Deployment Workflow Overview

  1. Environment Preparation
    Prepare your environment (baremetal or virtual)
    Install undercloud
  2. Undercloud Data Preparation
    Create images to establish the overcloud
    Register hardware nodes with undercloud
    Introspect hardware
    Create flavors (node profiles)
  3. Deployment Planning
    Configure overcloud roles
    Assign flavor (node profile to match desired hardware specs)
    Assign image (provisioning image)
    Size the role (how many instances to deploy)
    Configure service parameters
    Create a Heat template describing the overcloud (auto-generated from above)
  4. Deployment
    Use Heat to deploy your template
    Heat will use Nova to identify and reserve the appropriate nodes
    Nova will use Ironic to startup nodes and install the correct images
  5. Per-node Setup
    When each node of the overcloud starts it will gather its configuration metadata from Heat Template configuration files
    Hiera files are distributed across all nodes and Heat applies puppet manifests to configure the services on the nodes
    Puppet runs in multiple steps, so that after each step there can be tests triggered to check progress of the deployment and allow easier debugging.
  6. Overcloud Initialization
    Services on nodes of the overcloud are registered with Keystone

ماشینی که روی آن deploy می شود باید حداقل مشخصات زیر را داشته باشد:

  • 4 core CPU
  • 8 GB memory
  • 60 GB free disk space

TripleO را می توان در یک محیط مجازی با استفاده از ماشین های مجازی به جای baremetal واقعی استفاده کرد. با این حال، هنوز یک سرور baremetal برای عمل به عنوان میزبان ماشین های مجازی compute مورد نیاز است.

پروژه tripleo-quickstart برای ایجاد محیط های مجازی برای استفاده با TripleO استفاده می شود. مستندات این روش در لینک زیر قابل مشاهده است:

{+}https://docs.openstack.org/tripleo-quickstart/<br/>

TripleO را می توان در یک محیط baremetal استفاده کرد. یک دستگاه برای (مشابه Deployment) Undercloud استفاده می شود، بقیه برای Overcloud استفاده می شود.

حداقل تجهیزات مورد نیاز برای پیاده سازی:

برای استقرار کوچکترین مقایس با TripleO، به ماشین‌های bare metal زیر نیاز دارید:

  • 1 Undercloud
  • 1 Overcloud Controller
  • 1 Overcloud Compute

برای هر نقش اضافی Overcloud، مانند Block Storage یا Object Storage، به یک دستگاه baremetal اضافی نیاز دارید.

سرور های baremetal باید دارای حداقل مشخصات زیر باشند:

  • 8 core CPU
  • 12 GB memory
  • 60 GB free disk space

برای ماشین های Undercloud مقدار بیشتری رم و هارد مورد نیاز است و بهتر است که از هارد های SSD استفاده شود.

در نظر داشته باشید در ماشین آندرکلاود برای ذخیره سازی ایمیج "overcloud-full" هارد بیشتری مورد نیاز است.

نکته مهم:

TripleO در حال حاضر صرفا از سیستم عامل های زیر پشتیبانی میکند:

  • RHEL
  • CentOS

آماده سازی محیط BareMetal

شبکه

گره های overcloud از ماشین undercloud دپلوی خواهند شد و بنابراین ماشین ها باید تنظیمات شبکه خود را اصلاح کنند تا امکان بوت شدن PXE نود های overcloud با استفاده از ماشین undercloud فراهم شود. به این ترتیب، تنظیمات زیر مورد نیاز است:

همه ماشین‌های overcloud در راه‌اندازی باید از IPMI پشتیبانی کنند.

یک شبکه management برای راه اندازی کلیه ماشین های overcloud. یک کارت شبکه از هر ماشین باید در همان broadcast domain شبکه provisioning باشد. در محیط آزمایش شده، این نیاز به راه اندازی یک VLAN جدید روی سوئیچ خواهد داشت. توجه داشته باشید که باید از یک کارت شبکه یکسان در هر یک از ماشین های overcloud استفاده کنید (به عنوان مثال: از کارت شبکه دوم در هر ماشین overcloud استفاده کنید). این به این دلیل است که در حین نصب باید به آن کارت شبکه با استفاده از یک نام واحد در همه ماشین‌های overcloud اشاره کنیم، به عنوان مثال. em2

کارت شبکه شبکه provisioning نباید همان کارت شبکه ای باشد که برای اتصال از راه دور به ماشین undercloud استفاده می کنید. در طول نصب undercloud، یک بریج openvswitch برای neutron ایجاد می شود و کارت شبکه provisioning به بریج openvswitch متصل می شود. به این ترتیب، اگر از کارت شبکه provisioning نیز برای اتصال از راه دور به ماشین undercloud استفاده شود، اتصال از بین می رود.

ماشین‌های overcloud می‌توانند PXE را از کارت شبکه ای که در VLAN پرایوت است بوت کنند. در محیط آزمایش شده، این امر مستلزم غیرفعال کردن راه‌اندازی شبکه در بایوس برای همه کارت شبکه هایی به غیر از کارتی است که می‌خواهیم بوت کنیم و سپس اطمینان حاصل کنیم که کارت شبکه انتخابی در بالای لیست الویت بوت قرار دارد (قبل از هارد دیسک محلی و CD/). درایوهای DVD).

برای هر ماشین Overcloud موارد زیر نیاز است:

مک آدرس کارت شبکه ای که از آن PXE BOOT بر روی شبکه provisioning استفاده می شود و مشخصات اتصال به IPMI. IP address of the IPMI NIC, IPMI username and password)


دستورات مورد نیاز برای ستاپ ماشین undercloud در لینک زیر آمده است:

{+}https://docs.openstack.org/project-deploy-guide/tripleo-docs/wallaby/environments/baremetal.html#setting-up-the-undercloud-machine+?<br/>

دپلوی کردن سرور های OverCloud:

{+}https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/15/html/hyperconverged_infrastructure_guide/deploy-hci-overcloud+?<br/>

توضیحات کوتاه و خلاصه در خصوص نحوه پیاده سازی Undercloud و Overcloud (البته این مقاله و اکثر مقالات سایت های خارجی در خصوص TripleO بجز سایت خود اپن استک مربوط به قبل از سال 2019 بوده که نشان از محبوبیت پایین این روش پیاده سازی نسبت به سایر روش ها دارد)

{+}https://www.linuxtechi.com/install-tripleo-undercloud-centos-7/+?<br/>

{+}https://www.linuxtechi.com/deploy-tripleo-overcloud-controller-computes-centos-7/+?

پیاده سازی TripleO به شیوه QuickStart بر روی یک سرور

با استفاده از این روش میتوانیم بر روی یک سرور مجازی یا اختصاصی با سیستم عامل Centos 8 و حداقل منابع زیر اپن استک را بصورت کامل به روش tripleO دپلوی نماییم:

حداقل 24 گیگابایت رم

حداقل 150 گیگابایت هارد

حداقل 12 هسته سی پی یو

مراحلی که برای دپلوی انجام می شود:

  • Provision a libvirt environment
  • Install the Undercloud
  • Prepare for the Overcloud deployment
  • Deploy the Overcloud
  • Validate the Overcloud is functional

ایجاد ssh-key و پس لس  کردن ssh به لوکال هاست جهت اجرای انسیبل پلی بوک ها:

ssh-keygen

ssh-copy-id 127.0.0.2

ssh root@127.0.0.2

کلون کردن پروژه tripleO-quickstart و نصب پیش نیاز های آن:

yum update

yum upgrade

reboot

yum install git

gitclone https://github.com/openstack/tripleo-quickstart

cd tripleo-quickstart

bash quickstart.sh --install-deps

کلیه این مراحل توسط اسکریپت quickstart و انسیبل انجام می شود.

توجه داشته باشید کلیه مراحل باید بدون خطا اجرا شود در غیر اینصورت مراحل بعدی نیز با خطا مواجه خواهد شد.

فراهم کردن محیط LIBVIRT:

export LIBGUESTFS_BACKEND_SETTINGS=network_bridge=virbr0

bash quickstart.sh -R master --no-clone --tags all \

--nodes config/nodes/1ctlr_1comp.yml -p quickstart.yml 127.0.0.2

بررسی انجام شدن صحیح مرحله قبل: (این دستور ایجاد شدن سرور undercloud در محیط virsh را بررسی میکند و به آن ssh میزند.)

ssh -F ~/.quickstart/ssh.config.ansible undercloud

نصب UnderCloud:

bash quickstart.sh -R master --no-clone --tags all --nodes config/nodes/1ctlr_1comp.yml \

-I --teardown none -p quickstart-extras-undercloud.yml 127.0.0.2

آماده سازی TripleO Overcloud برای دپلویمنت که شامل مراحل زیر است:

  • configuration preparation
  • container preparation
  • importing Overcloud images
  • ironic introspection of the Overcloud nodes
  • creating OpenStack flavors for profile matching the Overcloud nodes.
  • network configuration
  • SSL configuration

bash quickstart.sh -R master --no-clone --tags all --nodes config/nodes/1ctlr_1comp.yml \

-I --teardown none -p quickstart-extras-overcloud-prep.yml 127.0.0.2

دپلوی کردن TripleO Overcloud  :

bash quickstart.sh -R master --no-clone --tags all --nodes config/nodes/1ctlr_1comp.yml \

-I --teardown none -p quickstart-extras-overcloud.yml 127.0.0.2

چک کردن قابل استفاده بودن  overcloud:

bash quickstart.sh -R master --no-clone --tags all --nodes config/nodes/1ctlr_1comp.yml \

-I --teardown none -p quickstart-extras-validate.yml 127.0.0.2

پس از طی کردن  کلیه مراحل بدون خطا اپن استک دپلوی خواهد شد و آماده استفاده خواهد بود.

دستورات کاربردی جهت مدیریت Openstack به شیوه ی tripleO-quickstart

ورود به یوزر stack در لینوکس سرور و مشاهده وضعیت ماشین های ایجاد شده :

sudo su stack

virsh list --all


دسترسی به ssh سرور undercloud از طریق سرور اصلی:

ssh -F$HOME/.quickstart/ssh.config.ansible undercloud

مشاهده سرویس های undercloud:

[stack@undercloud ~]$ . stackrc

[stack@undercloud ~]$ heat stack-list

+----------...+------------+-----------------+---------------------+--------------+

| id       ...| stack_name | stack_status    | creation_time       | updated_time |

+----------...+------------+-----------------+---------------------+--------------+

| 988ad9c3-...| overcloud  | CREATE_COMPLETE | 2016-03-21T14:32:21 | None         |

+----------...+------------+-----------------+---------------------+--------------+

سورس کردن overcloudrc و ارتباط با آن:

[stack@undercloud ~]$ . overcloudrc

[stack@undercloud ~]$ nova service-list

+--------------------------------------+----------------+------------------------------------+----------+---------+-------+----------------------------+-----------------+-------------+

| Id                                   | Binary         | Host                               | Zone     | Status  | State | Updated_at                 | Disabled Reason | Forced down |

+--------------------------------------+----------------+------------------------------------+----------+---------+-------+----------------------------+-----------------+-------------+

| 787c92eb-4168-4cba-b490-9722a0145cd5 | nova-scheduler | overcloud-controller-0.localdomain | internal | enabled | up    | 2022-01-15T08:43:44.000000 | -               | False       |

| 92fa1209-242e-4d89-b780-d77564d6dbe6 | nova-conductor | overcloud-controller-0.localdomain | internal | enabled | up    | 2022-01-15T08:43:46.000000 | -               | False       |

| a93d38f4-abb4-4853-ad13-0a3eb69547df | nova-compute   | overcloud-compute-0.localdomain    | nova     | enabled | up    | 2022-01-15T08:43:41.000000 | -               | False       |

+--------------------------------------+----------------+------------------------------------+----------+---------+-------+----------------------------+-----------------+-------------+

[stack@undercloud ~]$

نام کاربری و رمز عبور admin اپن استک را از کجا پیدا کنم؟

# SSH TO UnderCloud

ssh -F$HOME/.quickstart/ssh.config.ansible undercloud

# View Overcloud Credentials

cat overcloudrc

دسترسی به سرور های overcloud (کنترلر و کامپیوت)

ssh -F$HOME/.quickstart/ssh.config.ansible overcloud-controller-0

چگونه به داشبورد اپن استک (horizon) متصل شوم؟

با توجه به این که سرویس های اپن استک مانند horizon در سرور controler ران شده است و این سرور فاقد آی پی پابلیک می باشد ما امکان مشاهده آن را بصورت پیشفرض نداریم. بنابر این نیاز است تا برای دسترسی به داشبورد از Port Forwarding در SSH استفاده کنیم.

ابتدا این دستور را بر روی سرور اصلی که آی پی پابلیک دارد ران میکنیم:

با این دستور پورت 8080 این سرور به پورت 80 سرور overcloud که horizon بر روی آن ران می باشد و پورت 8443 به 443 و ... متصل میشود.

ssh -F$HOME/.quickstart/ssh.config.ansible   -L 8080:overcloud.localdomain:80 -L 8443:overcloud.localdomain:443 -L 13080:overcloud.localdomain:13080 undercloud

سپس نیاز داریم که یک SSH Proxy بر روی سرور اصلی که آی پی پابلیک دارد ران کنیم و سپس از سیستم خودمان به این پراکسی متصل شویم:

ssh -D 2122 -fCqN root@XXX.XXX.XXX.XXX (Main Server Valid IP Usedfor ssh)

پس از این نیاز داریم تا بر روی مرورگر خودمان (ترجیحا فایرفاکس) افزونه FoxyProxy را نصب کرده و یک پراکسی با مشخصات زیر در آن ایجاد کنیم:


سپس این پراکسی را فعال میکنیم و با آدرس زیر میتوانیم وارد داشبورد اپن استک شویم:

https://localhost:8443/


موفق و  پیروز باشید.