Jetpack

Jetpack bir kümenin her düğümünde gereklidir. Azure CycleCloud tarafından bir kümede düğüm olmak üzere sağlanan her sanal makineye otomatik olarak yüklenir. Jetpack üç ana işlev sağlar:

  • Düğüm Yapılandırması -- CycleCloud, sağlanan vm'nin yapılandırmasını çalışan bir küme düğümüne otomatikleştirmek için betikleri ve Chef'i kullanır. Chef istemcisinin yanı sıra VM'nin yapılandırması için gerekli kaynaklar Jetpack'e eklenir.
  • Dağıtılmış Eşitleme -- Jetpack, düğüm ile CycleCloud uygulama sunucusu arasındaki iletişimi yönetir. Bu, CycleCloud'un sağlama VM'lerinin durumunu izlemesine ve kümedeki birden çok düğümün düzenlemesini eşitlemesine olanak tanır.
  • HealthCheck -- Jetpack, iyi durumda olmayan VM'lerin sonlandırılabilmesi için VM'lerin sistem durumunu belirlemek için HealthCheck kullanır.

Jetpack Yüklemesi

CycleCloud kullanarak bir kümeyi ilk kez başlattığınızda Jetpack yükleyicisi Azure Depolama Hesabınızda önbelleğe alınır. Küme VM'leri sağlandıkça, Jetpack yükleyicisini Azure Depolama önbelleğinizden indirip vm'ye yükleyen önyükleme işleminin bir parçası olarak özel bir betik uzantısı yürütülür.

Jetpack yükleyicisi:

  • Jetpack dosyalarını tek bir dizin ağacına açar:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Vm'yi küme düğümü olarak yapılandıran sistem başlatma betikleri oluşturur
  • HealthCheck hizmetini yükler
  • Jetpack Komut Satırı Aracı'nı şu şekilde yükler:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Linux'ta udev kuralları oluşturur
  • Ortam değişkenini ayarlar CYCLECLOUD_HOME

Not

Jetpack görüntüye önceden yüklenmişse, özel betik uzantısı Jetpack'i yeniden yüklemez. Bunun yerine, düğümün CycleCloud bağlantısını doğrulayan ve düğümü yapılandırmaya devam etmeden önce ve jetpackd hizmetlerini başlatan healthcheck bir başlatma adımı çalıştırılır.

Jetpack Alt Dizinleri

Directory Description
bin Yararlı ikili dosyalar ve betikler.
config Kullanıcı tanımlı ve küme tanımlı yapılandırma dosyaları ve betikleri.
logs Küme birleştirilerek ve düğümün yakınsanarak oluşturulan günlükler, özellikle ilgi çekici olan, yakınsanan Chef tariflerinin sonuçlarını içeren chef-client.log .
run Sistem tarafından oluşturulan çalışma zamanı dosyaları. Bu dosyalara doğrudan erişmenizi önermiyoruz.
system İç dosyalar. Yayından yayına önemli ölçüde değişebilecekleri için bu dizindeki hiçbir dosyayı doğrudan kullanmanızı önermeyiz.

HealthCheck

HealthCheck hizmeti, bir VM'nin küme düğümü olarak geçerli kullanılabilirliğini belirlemek için kullanıcı tanımlı betikleri yürütür. Daha fazla bilgi için lütfen HealthCheck belgelerine bakın.

Jetpack Komut Satırı Aracı

Jetpack komut satırı aracı, geçerli VM'yi işlemek ve Azure CycleCloud ile etkileşim kurmak için kullanışlı bir alt komut kümesi sağlar.

Komut Açıklama
jetpack autoscale Bu düğümün ait olduğu kümeyi otomatik ölçeklendirme.
jetpack config Bir yapılandırma değeri alın.
jetpack converge Chef yakınsama gerçekleştirin.
jetpack download Azure Depolama'daki bir projeden blob kaynağı indirin.
jetpack keepalive Sistem sonlandırmayı HealthCheck Hizmeti tarafından geciktirin.
jetpack log CycleCloud kümesi kullanıcı arabirimine bir ileti günlüğe kaydetme.
jetpack run_on_shutdown Düğüm sonlandırmadan önce çağrılacak bir betik ekleyin.
jetpack send CycleCloud sunucusuna rastgele bir AMQP iletisi gönderin.
jetpack shutdown CycleCloud tarafından VM'nin kapatılmasını isteyin.
jetpack test VM'ye atanan projelerle ilişkili testleri çalıştırın.
jetpack users CycleCloud'un bu VM'de yöneteceği kullanıcıları listeleyin.
jetpack report_issue Günlük dosyalarını VM'den Azure Depolama'ya arşivler

jetpack otomatik ölçeklendirme

jetpack autoscale düğümün ait olduğu küme için otomatik ölçeklendirme hedeflerini ayarlar. Kümeler çekirdeklere, örnek sayısı veya özel tanımlara göre ölçeklendirilebilir.

100 çekirdeğe ölçeklendirmek için:

jetpack autoscale --corecount=100

'gpu' nodearray'sini 5 düğüme ölçeklendirmek için:

jetpack autoscale --instancecount 5 --name=gpu

Otomatik ölçeklendirmeyi özelleştirmek için, ölçeklendirmek istediğiniz nodearray tanımını içeren bir json dosyasının diske yazılması gerekir. 100 çekirdeğe göre ölçeklendirmek için:

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

jetpack yapılandırması

jetpack config CycleCloud tarafından vm'ye geçirilen bilgileri getirir. Bu, şu işlemleri ortaya çıkarır:

  • Ohai aracılığıyla sağlanan tüm sistem özellikleri
  • VM'nin Azure meta verilerinin bir alt kümesi
  • üst CycleCloud kümesi hakkında bilgi.

jetpack yakınsama

jetpack converge düğümle ilişkili tüm CycleCloud projelerini indirir ve düğüm için tüm Chef tariflerini ve cluster-init betiklerini çalıştıran bir Chef yakınsama işlemi başlatır.

jetpack indirme

jetpack download düğüme projeyle birlikte yüklenen bir blobu indirir. Blob'un ait olduğu projeyi belirtmeniz gerekir.

Projenin bir parçası example-project olarak geçerli dizine yüklenen blob big-file.zip indirmek için:

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive başarısız bir HealthCheck nedeniyle VM'nin sonlandırılmasına gecikmek için HealthCheck hizmetiyle etkileşim kurar. Sonlandırma sabit bir süre veya süresiz olarak geciktirilebilir. Varsayılan olarak sonlandırma bir saat geciktirilir.

Sistem sonlandırmayı bir saat geciktirmek için:

jetpack keepalive

Sistem sonlandırmayı altı saat geciktirmek için:

jetpack keepalive 6h

HealthCheck hizmetini tamamen devre dışı bırakmak için, yani sonlandırmayı süresiz olarak geciktirmek için:

jetpack keepalive forever

Not

Windows VM'lerinde forever HealthCheck için yalnızca seçeneği kullanılabilir

jetpack günlüğü

jetpack log CycleCloud'a bir günlük iletisi gönderir. İleti, uygulama sunucusu günlüğünde (genellikle /opt/cycle_server/cycle_server.log), ana olay günlüğünde ve Küme kullanıcı arabirimi sayfasında görünür.

Her iletinin iki özelliği vardır: düzey ve öncelik.

level özelliği iletinin türünü gösterir. Geçerli düzeyler 'bilgi', 'uyar' ve 'hata'dır. Düzey, belirli bir iletinin önemini göstermez; örneğin, bazı hatalar önemsizdir ve bazı bilgilendirme iletileri kritiktir.

Öncelik, iletinin önemini gösterir. Geçerli öncelik değerleri 'düşük', 'orta' ve 'yüksek' değerleridir. Sayfayı düşük öncelikli iletilerle dolmasını önlemek için Küme Kullanıcı Arabirimi sayfasında yalnızca orta veya daha yüksek önceliğe sahip iletiler görüntülenir.

Küme kullanıcı arabirimi sayfasında görünecek bir bilgi günlüğü iletisi göndermek için:

jetpack log 'system is now ready'

Küme kullanıcı arabirimi sayfasında görünmesini istemediğiniz düşük öncelikli bir günlük iletisi göndermek için:

jetpack log 'system is now ready' --priority low

Varsayılan olarak, hata düzeyine sahip iletiler yüksek önceliğe sahiptir. Hata iletisi göndermek için:

jetpack log 'the machine cannot process jobs' --level error

Önemsiz bir hata iletisi göndermek için:

jetpack log 'the machine cannot process jobs' --level error --priority low

jetpack run_on_shutdown

jetpack run_on_shutdown düğüm sonlandırmadan önce çağrılmak üzere bir bash betiği kaydeder.

komut, betiğin mutlak yolunu bağımsız değişken olarak alır.

Düğüm Azure tarafından sonlandırıldığında Sonlandırma Bildirimleri etkinleştirilirse, Jetpack sonlandırma hakkında bilgilendirilir ve düğüm kapanmadan önce betiği çalıştırmayı dener.

Düğümlerin etkinleştirmek için Sonlandırma Bildirimlerini etkinleştirmesirun_on_shutdowngerekir.

jetpack run_on_shutdown /tmp/example.sh

Bu komut Windows düğümleri için desteklenmez.

jetpack gönderme

jetpack send CycleCloud'a bir AMQP iletisi gönderir. CycleCloud için eklenti geliştirmediğiniz sürece önerilmez gelişmiş bir komutdur.

Belirtilen AMQP yönlendirme anahtarlarına sahip rastgele dizeler veya dosyalar gönderebilirsiniz.

jetpack kapatma

jetpack shutdown CycleCloud'un düğümü sonlandırmasını istemektedir. Kapatma isteğinin nedenini (boşta ve iyi durumda değil) belirtmenin yanı sıra düğümün nasıl sonlandırılacağını (terminate vs deallocate) belirtmek için komuta seçenekler geçirilebilir.

İyi durumda olmayan bir düğümü kapatmak için:

jetpack shutdown --unhealthy

Düğümü serbest bırakmak için:

jetpack shutdown --deallocate

jetpack testi

jetpack test düğüme atanan projelere dahil edilen tüm testleri çalıştırır ve sonuçları stdout'a yazdırır.

jetpack kullanıcıları

jetpack users , CycleCloud'un düğümde yöneteceği kullanıcıları listeler. Kullanıcılar kümeye atanıp kaldırıldıkçe bu liste zaman içinde değişebilir.

Düğüme atanan kullanıcıların kullanıcı dostu bir çıktısını almak için:

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

Betik kullanımı kolay JSON çıkışı almak için:

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue günlük dizinlerini VM'den arşivleyerek isteğe bağlı olarak Azure Depolama'ya yükler ve dış erişim için imzalı bir URL oluşturur. Günlükler düğümün Locker tarafından başvuruda bulunılan Azure Depolama hesabına yüklenir. Azure Depolama'da bir arşivi imzalarken elde edilen SAS belirtecinin 30 gün boyunca salt okunur erişimi olur.

Kullanım:

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

Arşiv için varsayılan Jetpack günlüklerini ($JETPACK_HOME/logs) karşıya yükleyin ve imzalayın:

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

Arşiv için, varsayılan olmayan bir günlük dizinini karşıya yükleyin ancak imzalayın:

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

Günlükleri yerel VM'de arşivleyebilmek için:

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip