Orchestration

Orchestration

Bab ini menjelaskan pentingnya daya tahan dan skalabilitas untuk aplikasi berbasis awan Anda. Dalam kebanyakan kasus, benar-benar mencapai kualitas ini berarti mengotomatisasi tugas seperti penskalaan dan tugas operasional lainnya.

Layanan Orchestration menyediakan cara berbasis template untuk mendeskripsikan aplikasi cloud, lalu mengkoordinasikan menjalankan API OpenStack yang dibutuhkan untuk menjalankan aplikasi cloud. Template memungkinkan Anda membuat sebagian besar jenis sumber OpenStack, seperti instance, informasi jaringan, volume, grup keamanan, dan bahkan pengguna. Ini juga menyediakan fungsionalitas yang lebih maju, seperti ketersediaan tinggi instance, instance auto-scaling, dan tumpukan bersarang.

The OpenStack Orchestration API uses the stacks, resources, and templates constructs.

Anda membuat tumpukan dari template, yang berisi sumber daya. Sumber daya adalah abstraksi dalam bahasa template HOT (Heat Orchestration Template), yang memungkinkan Anda menentukan sumber daya awan yang berbeda dengan menetapkan atribut :kode: type.

Misalnya, Anda mungkin menggunakan Orchestration API untuk membuat dua instance komputasi dengan membuat tumpukan dan dengan melewatkan template ke Orchestration API. Template itu berisi dua sumber dengan atribut :code: type yang disetel ke OS::Nova::Server.

Contohnya sederhana, tentu saja, tapi fleksibilitas dari objek sumber daya memungkinkan pembuatan template yang berisi semua infrastruktur awan yang dibutuhkan untuk menjalankan aplikasi, seperti load balancer, block storage volume, compute instance, networking topology, and security policy.

Catatan

Layanan Orchestration tidak dikerahkan secara default di setiap awan. Jika perintah ini tidak berhasil, berarti Orchestration API tidak tersedia; mintalah bantuan tim pendukung Anda.

Bagian ini memperkenalkan HOT templating language, dan membawa Anda melalui beberapa panggilan OpenStack Orchestration yang umum.

Di bagian sebelumnya, Anda menggunakan SDK untuk berinteraksi secara pemrograman dengan OpenStack. Pada bagian ini, Anda menggunakan klien command-line 'heat' untuk mengakses Orchestration API secara langsung melalui file template.

Instal klien command-line 'heat' dengan mengikuti panduan ini: https://docs.openstack.org/cli-reference/common/cli_install_openstack_command_line_clients.html#install-the-clients

Gunakan panduan ini untuk menyiapkan variabel yang diperlukan untuk awan Anda di file 'openrc': https://docs.openstack.org/cli-reference/common/cli_set_environment_variables_using_openstack_rc.html

Peringatan

libcloud saat ini tidak mendukung OpenStack Orchestration.

HOT templating language

Untuk mempelajari tentang sintaks template untuk OpenStack Orchestration, bagaimana membuat template dasar, dan masukan dan keluarannya, lihat Heat Orchestration Template (HOT) Guide.

Bekerja dengan stacks: Basics

Stack create

The hello_faafo Hot template menunjukkan cara membuat instance komputasi yang membangun dan menjalankan aplikasi Fraktal sebagai instalasi all-in-one.

Anda melewati pengaturan konfigurasi ini sebagai parameter:

  • Flavor
  • Nama kunci ssh Anda
  • Unique identifier (UUID) dari image
$ wget https://git.openstack.org/cgit/openstack/api-site/plain/firstapp/samples/heat/hello_faafo.yaml
$ openstack stack create -t hello_faafo.yaml \
 --parameter flavor=m1.small\;key_name=test\;image_id=5bbe4073-90c0-4ec9-833c-092459cc4539 hello_faafo
+---------------------+-----------------------------------------------------------------------+
| Field               | Value                                                                 |
+---------------------+-----------------------------------------------------------------------+
| id                  | 0db2c026-fb9a-4849-b51d-b1df244096cd                                  |
| stack_name          | hello_faafo                                                           |
| description         | A template to bring up the faafo application as an all in one install |
|                     |                                                                       |
| creation_time       | 2015-04-01T03:20:25                                                   |
| updated_time        | None                                                                  |
| stack_status        | CREATE_IN_PROGRESS                                                    |
| stack_status_reason |                                                                       |
+---------------------+-----------------------------------------------------------------------+

Stack tersebut secara otomatis menciptakan instance Nova, sebagai berikut:

$ nova list
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+
| ID                                   | Name                            | Status | Task State | Power State | Networks         |
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+
| 9bdf0e2f-415e-43a0-90ea-63a5faf86cf9 | hello_faafo-server-dwmwhzfxgoor | ACTIVE | -          | Running     | private=10.0.0.3 |
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+

Pastikan stack berhasil dibuat:

$ openstack stack list
+--------------------------------------+-------------+-----------------+---------------------+--------------+
| ID                                   | Stack Name  | Stack Status    | Creation Time       | Updated Time |
+--------------------------------------+-------------+-----------------+---------------------+--------------+
| 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_faafo | CREATE_COMPLETE | 2015-04-01T03:20:25 | None         |
+--------------------------------------+-------------+-----------------+---------------------+--------------+

Stack tersebut melaporkan status CREATE_IN_PROGRESS awal. Saat semua perangkat lunak diinstal, status berubah menjadi CREATE_COMPLETE.

Anda mungkin harus menjalankan perintah openstack stack list beberapa kali sebelum pembuatan stack selesai.

Show information about the stack

Dapatkan informasi lebih lanjut tentang stack:

$ openstack stack show hello_faafo

Properti outputs menunjukkan URL tempat Anda dapat mengakses aplikasi Fractal. Anda bisa SSH ke instance.

Remove the stack

$ openstack stack delete hello_faafo
Are you sure you want to delete this stack(s) [y/N]?

Verifikasi instance nova telah dihapus saat stack dihapus:

$ nova list
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

Sementara stack ini memulai satu instance yang membangun dan menjalankan aplikasi Fractal sebagai instalasi all-in-one, Anda dapat membuat template yang sangat rumit yang mempengaruhi lusinan instance atau menambahkan dan menghapus instance sesuai permintaan. Lanjutkan ke bagian selanjutnya untuk mempelajari lebih lanjut.

Bekerja dengan stacks: Tingkat lanjut

Dengan Orchestration API, aplikasi Fractal dapat membuat grup skala otomatis untuk semua bagian aplikasi, untuk secara dinamis menyediakan sumber daya yang lebih banyak selama periode penggunaan yang berat, dan juga menghentikan komputasi instance untuk diturunkan, karena permintaan menurun.

Untuk mempelajari tentang penskalaan otomatis dengan Orchestration API, baca artikel ini:

Awalnya, fokusnya adalah pada penskalaan workers karena mereka mengkonsumsi sumber daya paling banyak.

Contoh template tergantung pada proyek ceilometer, yang merupakan bagian dari Telemetry service.

Catatan

Layanan Telemetry tidak digunakan secara default di setiap awan. Jika perintah ceilometer tidak bekerja, contoh ini tidak bekerja; Mintalah bantuan tim pendukung Anda.

Untuk lebih memahami bagaimana template bekerja, gunakan panduan ini untuk menginstal 'ceilometer' command-line client:

Untuk mengatur variabel yang diperlukan untuk awan Anda dalam file 'openrc', gunakan panduan ini:

Layanan Telemetry menggunakan meter untuk mengukur aspek tertentu dari penggunaan sumber daya. Meteran yang kami minati adalah cpu_util meter.

Nilai meter secara teratur diambil sampelnya dan disimpan dengan timestamp.

Sampel yang disimpan ini dikumpulkan untuk menghasilkan statistik. Statistik yang kami minati adalah avg: rata-rata sampel selama periode tertentu.

Kami tertarik karena layanan Telemetry mendukung alarm: alarm nyala saat statistik rata-rata kami melanggar ambang batas yang dikonfigurasi. Saat alarm menyala, tindakan yang terkait dilakukan.

Stack yang akan kita bangun menggunakan penyalaan alarm untuk mengendalikan penambahan atau pemindahan instance pekerja.

Untuk memverifikasi ceilometer yang terpasang, daftar meter yang diketahui:

$ ceilometer meter-list

Perintah ini mengembalikan daftar meter yang sangat panjang. Sekali satu meter dibuat, tidak pernah dibuang!

Luncurkan stack dengan pekerja auto-scaling:

$ wget https://git.openstack.org/cgit/openstack/api-site/plain/firstapp/samples/heat/faafo_autoscaling_workers.yaml
$ openstack stack create -t faafo_autoscaling_workers.yaml \
--parameters flavor=m1.small\;key_name=test\;image_id=5bbe4073-90c0-4ec9-833c-092459cc4539 \
faafo_autoscaling_workers
+---------------------+-----------------------------------------------------------------------+
| Field               | Value                                                                 |
+---------------------+-----------------------------------------------------------------------+
| id                  | 0db2c026-fb9a-4849-b51d-b1df244096cd                                  |
| stack_name          | faafo_autoscaling_workers                                             |
| description         | A template to bring up the faafo application as an all in one install |
|                     |                                                                       |
| creation_time       | 2015-11-17T05:12:06                                                   |
| updated_time        | None                                                                  |
| stack_status        | CREATE_IN_PROGRESS                                                    |
| stack_status_reason |                                                                       |
+---------------------+-----------------------------------------------------------------------+

Seperti sebelumnya, masuk dalam pengaturan konfigurasi sebagai parameter.

Dan seperti sebelumnya, stack itu membutuhkan waktu beberapa menit untuk dibangun!

Tunggu sampai mencapai status CREATE_COMPLETE:

$ openstack stack list
+--------------------------------------+---------------------------+-----------------+---------------------+--------------+
| ID                                   | Stack Name                | Stack Status    | Creation Time       | Updated Time |
+--------------------------------------+---------------------------+-----------------+---------------------+--------------+
| 0db2c026-fb9a-4849-b51d-b1df244096cd | faafo_autoscaling_workers | CREATE_COMPLETE | 2015-11-17T05:12:06 | None         |
+--------------------------------------+---------------------------+-----------------+---------------------+--------------+

Jalankan perintah nova list. Template ini membuat tiga instance:

$ nova list
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| ID                                   | Name     | Status | Task State | Power State | Networks             |
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| 0de89b0a-5bfd-497b-bfa2-c13f6ef7a67e | api      | ACTIVE | -          | Running     | public=115.146.89.75 |
| a6b9b334-e8ba-4c56-ab53-cacfc6f3ad43 | services | ACTIVE | -          | Running     | public=115.146.89.74 |
| 10122bfb-881b-4122-9955-7e801dfc5a22 | worker   | ACTIVE | -          | Running     | public=115.146.89.80 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

Perhatikan bahwa instance pekerja adalah bagian dari OS::Heat::AutoScalingGroup.

Konfirmasikan bahwa stack itu membuat dua alarm:

$ ceilometer alarm-list
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+
| Alarm ID                             | Name                                  | State | Severity | Enabled | Continuous | Alarm condition                | Time constraints |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+
| 2bc8433f-9f8a-4c2c-be88-d841d9de1506 | testFaafo-cpu_alarm_low-torkcwquons4  | ok    | low      | True    | True       | cpu_util < 15.0 during 1 x 60s | None             |
| 7755cc9a-26f3-4e2b-a9af-a285ec8524da | testFaafo-cpu_alarm_high-qqtbvk36l6nq | ok    | low      | True    | True       | cpu_util > 90.0 during 1 x 60s | None             |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+

Catatan

Jika salah satu alarm melaporkan status insufficient data, periode sampling default stack mungkin terlalu rendah untuk awan Anda; Mintalah bantuan tim pendukung Anda. Anda dapat mengatur periode melalui parameter period stack agar sesuai dengan persyaratan awan Anda.

Gunakan stack ID untuk mendapatkan informasi lebih lanjut tentang stack:

$ openstack stack show 0db2c026-fb9a-4849-b51d-b1df244096cd

Bagian output dari stack berisi dua ceilometer command-line queries:

  • ceilometer_sample_query: menunjukkan sampel yang digunakan untuk membangun statistik.
  • ceilometer_statistics_query: menunjukkan statistik yang digunakan untuk memicu alarm.

Query ini memberikan pandangan tentang perilaku stack.

Di jendela Terminal yang baru, SSH masuk ke instance API 'api'. Gunakan nama pasangan kunci yang Anda disampaikan sebagai parameter.

$ ssh -i ~/.ssh/test USERNAME@IP_API

Dalam sesi SSH Anda, konfirmasikan bahwa tidak ada fractal yang dihasilkan:

$ faafo list
201-11-18 11:07:20.464 8079 INFO faafo.client [-] listing all fractals
+------+------------+----------+
| UUID | Dimensions | Filesize |
+------+------------+----------+
+------+------------+----------+

Kemudian, buat sepasang fractal besar:

$ faafo create --height 9999 --width 9999 --tasks 2

Di jendela Terminal tempat Anda menjalankan ceilometer, jalankan ceilometer_sample_query untuk melihat sampelnya.

$ ceilometer sample-list -m cpu_util -q metadata.user_metadata.stack=0db2c026-fb9a-4849-b51d-b1df244096cd
+--------------------------------------+----------+-------+----------------+------+---------------------+
| Resource ID                          | Name     | Type  | Volume         | Unit | Timestamp           |
+--------------------------------------+----------+-------+----------------+------+---------------------+
| 10122bfb-881b-4122-9955-7e801dfc5a22 | cpu_util | gauge | 100.847457627  | %    | 2015-11-18T00:15:50 |
| 10122bfb-881b-4122-9955-7e801dfc5a22 | cpu_util | gauge | 82.4754098361  | %    | 2015-11-18T00:14:51 |
| 10122bfb-881b-4122-9955-7e801dfc5a22 | cpu_util | gauge | 0.45           | %    | 2015-11-18T00:13:50 |
| 10122bfb-881b-4122-9955-7e801dfc5a22 | cpu_util | gauge | 0.466666666667 | %    | 2015-11-18T00:12:50 |
+--------------------------------------+----------+-------+----------------+------+---------------------+

Pemanfaatan CPU di seluruh pekerja meningkat saat para pekerja mulai menciptakan fractal.

Jalankan perintah ceilometer_statistics_query: untuk melihat statistik turunan.

$ ceilometer statistics -m cpu_util -q metadata.user_metadata.stack=0db2c026-fb9a-4849-b51d-b1df244096cd -p 60 -a avg
+--------+---------------------+---------------------+----------------+----------+---------------------+---------------------+
| Period | Period Start        | Period End          | Avg            | Duration | Duration Start      | Duration End        |
+--------+---------------------+---------------------+----------------+----------+---------------------+---------------------+
| 60     | 2015-11-18T00:12:45 | 2015-11-18T00:13:45 | 0.466666666667 | 0.0      | 2015-11-18T00:12:50 | 2015-11-18T00:12:50 |
| 60     | 2015-11-18T00:13:45 | 2015-11-18T00:14:45 | 0.45           | 0.0      | 2015-11-18T00:13:50 | 2015-11-18T00:13:50 |
| 60     | 2015-11-18T00:14:45 | 2015-11-18T00:15:45 | 82.4754098361  | 0.0      | 2015-11-18T00:14:51 | 2015-11-18T00:14:51 |
| 60     | 2015-11-18T00:15:45 | 2015-11-18T00:16:45 | 100.847457627  | 0.0      | 2015-11-18T00:15:50 | 2015-11-18T00:15:50 |
+--------+---------------------+---------------------+----------------+----------+---------------------+---------------------+

Catatan

Sampel dan statistiknya tercantum dalam urutan waktu yang berlawanan!

Lihat keadaan alarm yang diatur oleh template:

$ ceilometer alarm-list
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+
| Alarm ID                             | Name                                  | State | Severity | Enabled | Continuous | Alarm condition                | Time constraints |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+
| 56c3022e-f23c-49ad-bf59-16a6875f3bdf | testFaafo-cpu_alarm_low-miw5tmomewot  | ok    | low      | True    | True       | cpu_util < 15.0 during 1 x 60s | None             |
| 70ff7b00-d56d-4a43-bbb2-e18952ae6605 | testFaafo-cpu_alarm_high-ffhsmylfzx43 | alarm | low      | True    | True       | cpu_util > 90.0 during 1 x 60s | None             |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+

Jalankan perintah nova list untuk memastikan bahwa OS::Heat::AutoScalingGroup telah menciptakan lebih banyak instance:

$ nova list
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| ID                                   | Name     | Status | Task State | Power State | Networks             |
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| 0de89b0a-5bfd-497b-bfa2-c13f6ef7a67e | api      | ACTIVE | -          | Running     | public=115.146.89.96 |
| a6b9b334-e8ba-4c56-ab53-cacfc6f3ad43 | services | ACTIVE | -          | Running     | public=115.146.89.95 |
| 10122bfb-881b-4122-9955-7e801dfc5a22 | worker   | ACTIVE | -          | Running     | public=115.146.89.97 |
| 31e7c020-c37c-4311-816b-be8afcaef8fa | worker   | ACTIVE | -          | Running     | public=115.146.89.99 |
| 3fff2489-488c-4458-99f1-0cc50363ae33 | worker   | ACTIVE | -          | Running     | public=115.146.89.98 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

Sekarang, tunggu sampai semua fractal dihasilkan dan instance telah hilang selama beberapa waktu.

Jalankan perintah nova list untuk memastikan bahwa OS::Heat::AutoScalingGroup menghapus instance yang tidak dibutuhkan:

$ nova list
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| ID                                   | Name     | Status | Task State | Power State | Networks             |
+--------------------------------------+----------+--------+------------+-------------+----------------------+
| 0de89b0a-5bfd-497b-bfa2-c13f6ef7a67e | api      | ACTIVE | -          | Running     | public=115.146.89.96 |
| a6b9b334-e8ba-4c56-ab53-cacfc6f3ad43 | services | ACTIVE | -          | Running     | public=115.146.89.95 |
| 3fff2489-488c-4458-99f1-0cc50363ae33 | worker   | ACTIVE | -          | Running     | public=115.146.89.98 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

Catatan

The OS::Heat::AutoScalingGroup menghapus instance dalam urutan pembuatan. Jadi instance pekerja yang dibuat pertama adalah instance pertama yang harus dihapus.

Di bagian keluaran stack, Anda dapat menjalankan panggilan API web ini:

  • scale__workers_up_url: Post ke url ini akan menambahkan instance pekerja.
  • scale_workers_down_url: Post ke url ini akan menghapus instance pekerja.

Ini menunjukkan bagaimana alarm Ceilometer menambahkan dan menghapus contoh. Untuk menggunakannya:

$  curl -X POST "Put the very long url from the template outputs section between these quotes"

Untuk rekap:

Stack penskalaan otomatis membentuk instance API, instance layanan, dan grup skala otomatis dengan instance pekerja tunggal. Ini juga memasang alarm ceilometer yang menambahkan instance pekerja ke grup skala otomatis saat berada di bawah beban, dan menghapus instance saat grup sedang menganggur. Untuk melakukan ini, pos alarm ke URL.

Dalam template ini, alarm menggunakan metadata yang dilampirkan pada setiap instance pekerja. Metadata ada di format metering.stack=stack_id.

Awalannya adalah metering. Misalnya, metering.some_name.

$ nova show <instance_id>
...
| metadata | {"metering.some_name": "some_value"} |
...

Anda dapat menggabungkan sampel dan menghitung statistik di semua instance dengan metadata metering.some_name yang memiliki some_value dengan menggunakan kueri formulir:

-q metadata.user_metadata.some_name=some_value

Sebagai contoh:

$ ceilometer sample-list -m cpu_util -q metadata.user_metadata.some_name=some_value
$ ceilometer statistics -m cpu_util -q metadata.user_metadata.some_name=some_value -p 6

Alarm memiliki bentuk:

matching_metadata: {'metadata.user_metadata.stack': {get_param: "OS::stack_id"}}

Luangkan waktu untuk bermain dengan stack dan aplikasi Fractal untuk melihat cara kerjanya.

Catatan

Antrian pesan bisa memakan waktu lama untuk memperhatikan bahwa instance pekerja telah meninggal.

Langkah selanjutnya

Anda sekarang harus cukup yakin bekerja dengan layanan Orchestration. Untuk melihat panggilan yang tidak kami tutup dan banyak lagi, lihat dokumentasi volume SDK Anda. Atau, coba salah satu langkah berikut dalam tutorial:

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.