Orkestrasyon

Orkestrasyon

Bu bölüm bulut tabanlı uygulamalarınız için dayanıklılık ve ölçeklenebilirliğin önemini açıklar. Çoğu durumda bu kaliteleri gerçekten elde etmek ölçekleme ve diğer işlevsel görevleri otomatikleştirmek demektir.

Orkestrasyon servisi bir bulut uygulamasını tanımlamak için şablon tabanlı bir yol sağlar, ardından bulut uygulamalarını çalıştırmak için ihtiyaç duyulan OpenStack API çağrılarının çalıştırılmasını düzenler. Şablonlar sunucular, ağ bilgisi, birimler, güvenlik grupları hatta kullanıcılar gibi çoğu OpenStack kaynak türlerini oluşturmanızı sağlarlar. Ayrıca sunucu yüksek kullanılırlığı, sunucu otomatik ölçekleme, iç içe yığınlar gibi daha gelişmiş işlevselliği de sağlar.

OpenStack Orkestrasyon API’si yığınları, kaynakları ve şablon yapılarını kullanır.

Yığınları kaynaklar içeren şablonlardan oluşturursunuz. Kaynaklar HOT (Heat Orkestrasyon Şablonu) şablon dilinde soyutlamalardır, ve type özniteliğini ayarlayarak farklı bulut kaynakları tanımlamanızı sağlarlar.

Örneğin bir yığın oluşturarak ve Orkestrasyon API’sine bir şablon geçirerek Orkestrasyon API’sini kullanarak iki hesaplama sunucusu oluşturabilirsiniz. Bu şablon type özniteliği OS::Nova::Server olarak ayarlanmış iki kaynak içerir.

Bu örnek tabi ki basittir, ama kaynak nesnesinin esnekliği yük dengeleyiciler, blok depolama birimleri, hesaplama sunucuları, ağ topolojileri ve güvenlik ilkeleri gibi bir uygulamayı çalıştırmak için gerekli tüm bulut altyapısının oluşturulmasını sağlar.

Not

Orkestrasyon servisi her bulutta öntanımlı olarak kurulmaz. Bu komutlar çalışmazsa Orkestrasyon API’si kullanılabilir değil demektir; destek ekibinizden yardım isteyebilirsiniz.

This section introduces the HOT templating language, and takes you through some common OpenStack Orchestration calls.

Önceki kısımlarda, programlı şekilde OpenStack ile etkileşmek için SDK’nızı kullandınız. Bu kısımda Orkestrasyon API’sine doğrudan şablon dosyaları aracılığıyla erişmek için ‘heat’ komut satırı istemcisini kullanırsınız.

Şu kılavuzu kullanarak ‘heat’ komut satırı istemcisini kurun: https://docs.openstack.org/cli-reference/common/cli_install_openstack_command_line_clients.html#install-the-clients

Bulutunuz için gerekli değişkenleri bir ‘openrc’ dosyasında ayarlamak için bu kılavuzu kullanın: https://docs.openstack.org/cli-reference/common/cli_set_environment_variables_using_openstack_rc.html

Uyarı

libcloud henüz OpenStack Orkestrasyon’u desteklemiyor.

HOT şablon dili

To learn about the template syntax for OpenStack Orchestration, how to create basic templates, and their inputs and outputs, see Heat Orchestration Template (HOT) Guide.

Yığınlarla çalışın: Temeller

Yığın oluştur

The hello_faafo Hot template demonstrates how to create a compute instance that builds and runs the Fractal application as an all-in-one installation.

Şu yapılandırma ayalarını parametreler olarak geçirirsiniz:

  • Nitelik

  • Ssh anahtar adınız

  • İmajın benzersiz tanımlayıcısı (UUID)

$ 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 |                                                                       |
+---------------------+-----------------------------------------------------------------------+

Yığın şu şekilde otomatik olarak Nova sunucusunu oluşturur:

$ 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 |
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+

Yığının başarıyla oluşturulduğunu onaylayın:

$ 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         |
+--------------------------------------+-------------+-----------------+---------------------+--------------+

Yığın önce bir CREATE_IN_PROGRESS durumu bildirir. Tüm yazılım kurulduktan sonra, durum CREATE_COMPLETE olarak değişir.

Yığın oluşturma tamamlanmadan önce openstack stack list komutunu bir kaç kere çalıştırmanız gerekebilir.

Yığınla ilgili bilgi göster

Yığınla ilgili daha fazla bilgi al:

$ openstack stack show hello_faafo

Outputs özelliği Fraktal uygulamasına erişebileceğiniz URL’yi gösterir. Sunucuya SSH çekebilirsiniz.

Yığını kaldır

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

Yığın kaldırıldığında nova sunucusunun silindiğini onaylayın:

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

Bu yığın tek bir sunucu başlatsa ve Fraktal uygulamasını hepsi bir arada bir kurulum olarak çalıştırsa da, düzinelerce sunucuyu etkileyen veya isteğe göre sunucu ekleyip çıkaran daha karmaşık şablonlar yapabilirsiniz. Daha fazlasını öğrenmek için sonraki kısma devam edin.

Yığınlarla çalışın: Gelişmiş

Orkestrasyon API’si ile, Fraktal uygulaması yük yoğunluğunun olduğu aralıklarda dinamik olarak daha fazla hesaplama kaynağı hazırlamak için uygulamanın tüm kısımları için otomatik ölçekleme grubu oluşturabilir, ve yük azaldıkça ölçeği küçültmek için hesaplama sunucularını sonlandırabilir.

Orkestrasyon API’si ile otomatik ölçeklendirme hakkında daha fazlasını öğrenmek için şu makaleleri okuyun:

İlk olarak, en çok kaynağı tükettiklerinden ölçekleme odağı işçiler üzerinedir.

Örnek şablon Telemetri servisinin parçası olan ceilometer projesine bağımlıdır.

Not

Telemetri servisi her bulutta öntanımlı olarak kurulu değildir. Ceilometer komutları çalışmazsa, bu örnek çalışmaz; destek takımınızdan yardım isteyebilirsiniz.

Şablonun nasıl çalıştığını daha iyi anlamak için, ‘ceilometer’ komut satırı istemcisini kurmak için bu kılavuzu kullanın:

Bulutunuz için gerekli değişkenleri bir ‘openrc’ dosyasında ayarlamak için, bu kılavuzu kullanın:

Telemetri servisi bir kaynağın kullanım oranını ölçmek için ölçüler kullanır. Bizim ilgilendiğimiz ölçü cpu_util ölçüsüdür.

Bir ölçünün değeri düzenli olarak örneklenir ve bir zaman damgasıyla kaydedilir.

Bu kaydedilen örnekler istatistik üretmek üzere toplanır. Bizim ilgilendiğimiz istatistik avg’dir: verilen bir zaman aralığındaki örneklerin ortalaması.

İlgileniyoruz çünkü Telemetri servisi uyarıları destekliyor: bir uyarı ortalama istatistiğimiz yapılandırılan bir eşiği geçtiğinde tetiklenir. Uyarı tetiklendiğinde ilişkili bir eylem gerçekleştirilir.

İnşa ediyor olacağımız yığın işçi sunucuların eklenmesi ve kaldırılmasını kontrol etmek için uyarıların tetiklenmesini kullanır.

Ceilometer’in kurulu olduğunu onaylamak için bilinen ölçüleri listeleyin:

$ ceilometer meter-list

Bu komut uzun bir ölçü listesi döndürür. Bir ölçü oluşturulduğunda, asla fırlatılıp atılmaz!

Yığını otomatik ölçeklenen işçilerle başlatın:

$ 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 |                                                                       |
+---------------------+-----------------------------------------------------------------------+

Önceki gibi, yapılandırma ayarlarını parametreler olarak verin.

Ve yine önceki gibi, yığın inşası birkaç dakika alır!

CREATE_COMPLETE durumuna ulaşmasını bekleyin:

$ 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         |
+--------------------------------------+---------------------------+-----------------+---------------------+--------------+

nova list komutunu çalıştırın. Bu şablon üç sunucu oluşturdu:

$ 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 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

İşçi sunucunun bir OS::Heat::AutoScalingGroup parçası olduğuna dikkat edin.

Yığının iki uyarı oluşturduğunu onaylayın:

$ 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             |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+

Not

Herhangi bir uyarı yetersiz veri durumu bildirirse, yığının öntanımlı örnekleme aralığı muhtemelen bulutunuz için çok düşüktür; destek ekibinize yardım için başvurun. Aralığı bulutunuzun gereksinimleriyle eşleşmesi için period parametresi aracılığıyla ayarlayabilirsiniz.

Yığınla ilgili daha fazla bilgi almak için yığın kimliğini kullanın:

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

Yığının çıktılar kısmı iki ceilometer komut satırı sorgusu içerir:

  • ceilometer_sample_query: istatistikleri inşa etmek için kullanılan örnekleri gösterir.

  • ceilometer_statistics_query: uyarıları tetiklemek için kullanılan istatistikleri gösterir.

Bu sorgular yığının davranışına bir görüş sağlar.

Yeni bir Terminal penceresinde, ‘api’ API sunucusuna SSH çekin. Parametre olarak verdiğiniz anahtar çifti ismini kullanın.

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

SSH oturumunuzda, fraktalların üretildiğini onaylayın:

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

Ardından, büyük bir fraktal çifti oluşturun:

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

Örnekleri görmek için, terminal penceresinde ceilometer’i çalıştırdığınız yerde ceilometer_sample_query çalıştırın.

$ 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 |
+--------------------------------------+----------+-------+----------------+------+---------------------+

İşçi sunucular arasındaki CPU kullanımı işçiler yeni fraktallar oluşturmaya başladıkça artacaktır.

ceilometer_statistics_query: komutunu çalıştırarak gelen istatistiklere göz atın.

$ 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 |
+--------+---------------------+---------------------+----------------+----------+---------------------+---------------------+

Not

Örnekler ve istatistikler ters zaman sırasına göre listelenir!

Şablon tarafından ayarlanan uyarı durumlarına göz atın:

$ 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             |
+--------------------------------------+---------------------------------------+-------+----------+---------+------------+--------------------------------+------------------+

nova list komutunu çalıştırarak OS::Heat::AutoScalingGroup’un daha fazla sunucu oluşturduğunuz onaylayın:

$ 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 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

Şimdi tüm fraktalların üretilmesini ve sunucuların bir süre boşta kalmasını bekleyin.

nova list komutunu çalıştırarak OS::Heat::AutoScalingGroup’un gereksiz sunucuları kaldırdığını onaylayın:

$ 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 |
+--------------------------------------+----------+--------+------------+-------------+----------------------+

Not

OS::Heat::AutoScalingGroup sunucuları oluşturulma sırasına göre kaldırır. Yani ilk önce oluşturulan işçi sunucu kaldırılacak ilk sunucudur.

Yığının çıktılar kısmında, şu web API çağrılarını çalıştırabilirsiniz:

  • scale__workers_up_url: Bu url’ye yapılan gönderi işçi sunucu ekleyecektir.

  • scale_workers_down_url: Bu url’ye yapılan gönderi işçi sunucuları kaldıracaktır.

Bunlar Ceilometer uyarılarının nasıl sunucu eklediğini ve kaldırdığını gösterir. Kullanmak için:

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

Tekrar etmek için:

Otomatik ölçeklenen yığın bir API sunucusu, bir servisler sunucusu, ve tek bir işçiye sahip bir otomatik ölçekleme grubu ayarlar. Ayrıca yük altında olduğunda otomatik ölçekleme grubuna işçi sunucular ekleyen ve grup boştayken sunucuları kaldıran ceilometer uyarıları ayarlar. Bunu yapmak için uyarılar URL’lere istek yapar.

Bu şablonda, uyarılar her bir işçi sunucuya eklenmiş metaveriyi kullanır. Metaveri metering.stack=stack_id biçimindedir.

Önek metering’dir. Örneğin, metering.bir_isim.

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

Örnekleri toplayabilir ve tüm sunucular arasındaki istatistikleri şu şekilde bir sorgu kullanarak some_value değerine sahip metering.some_name metaverisi ile hesaplayabilirsiniz:

-q metadata.user_metadata.some_name=some_value

Örneğin:

$ 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

Uyarılar şu biçime sahiptir:

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

Yığınla ve Fraktal uygulamasıyla oynayarak biraz daha zaman geçirin ve nasıl çalıştığını görün.

Not

İleti kuyruğunun işçi sunucuların öldüğünü görmesi biraz daha zaman alabilir.

Sonraki adımlar

Artık Orkestrasyon servisiyle oldukça rahat şekilde çalışabiliyor olmalısınız. Burda kapsamadığımız çağrıları ve daha fazlasını görmek için SDK’nızın birim belgelendirmesine göz atın. Veya öğreticideki şu adımlardan birini deneyin:

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.