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.
Untuk mempelajari tentang sintaks template untuk OpenStack Orchestration, bagaimana membuat template dasar, dan masukan dan keluarannya, lihat Heat Orchestration Template (HOT) Guide.
Stack create
The hello_faafo Template panas (hot template) menunjukkan cara membuat instance komputasi yang membangun dan menjalankan aplikasi Fractal sebagai instalasi all-in-one.
Anda melewati pengaturan konfigurasi ini sebagai parameter:
Flavor
Nama kunci ssh Anda
Unique identifier (UUID) dari image
$ wget https://opendev.org/openstack/api-site/raw/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:
https://superuser.openstack.org/articles/simple-auto-scaling-environment-with-heat
https://superuser.openstack.org/articles/understanding-openstack-heat-auto-scaling
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://opendev.org/openstack/api-site/raw/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.
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:
Jaringan: Learn about complex networking.
Saran bagi pengembang baru untuk operasi: Get advice about operations.
Going crazy: Pelajari beberapa hal gila yang mungkin tidak Anda pikirkan untuk dilakukan;)
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.