Jetpack

Jetpack diperlukan pada setiap simpul kluster. Ini secara otomatis diinstal oleh Azure CycleCloud pada setiap komputer virtual yang disediakan untuk menjadi simpul dalam kluster. Jetpack menyediakan tiga fungsi utama:

  • Konfigurasi Node -- CycleCloud menggunakan skrip dan Chef untuk mengotomatiskan konfigurasi VM yang disediakan ke dalam node kluster yang berfungsi. Klien Chef serta sumber daya yang diperlukan untuk konfigurasi VM disematkan dalam Jetpack.
  • Sinkronisasi Terdistribusi -- Jetpack mengelola komunikasi antara simpul dan server aplikasi CycleCloud. Ini memungkinkan CycleCloud untuk memantau status VM provisi dan menyinkronkan orkestrasi beberapa simpul dalam kluster.
  • HealthCheck -- Jetpack menggunakan HealthCheck untuk menentukan kesehatan VM sehingga VM yang tidak sehat dapat dihentikan.

Penginstalan Jetpack

Alat penginstal Jetpack di-cache di Akun Azure Storage saat Anda pertama kali memulai kluster menggunakan CycleCloud. Saat VM kluster disediakan, ekstensi skrip kustom dijalankan sebagai bagian dari proses boot yang mengunduh alat penginstal Jetpack dari cache Azure Storage Anda dan kemudian menginstalnya di VM.

Alat penginstal Jetpack:

  • Membongkah file Jetpack ke satu pohon direktori:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Membuat skrip startup init sistem yang mengonfigurasi VM sebagai node kluster
  • Menginstal layanan HealthCheck
  • Menginstal Alat Baris Perintah Jetpack untuk:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Membuat aturan udev di Linux
  • Mengatur variabel lingkungan CYCLECLOUD_HOME

Catatan

Jika Jetpack telah diinstal sebelumnya pada gambar, ekstensi skrip kustom tidak akan menginstal ulang Jetpack. Sebagai gantinya, langkah inisialisasi akan dijalankan yang akan memvalidasi koneksi simpul ke CycleCloud dan memulai healthcheck layanan dan jetpackd sebelum terus mengonfigurasi simpul.

Subdirektori Jetpack

Direktori Deskripsi
bin Biner dan skrip yang berguna.
config File konfigurasi dan skrip yang ditentukan pengguna dan kluster.
logs Log yang dihasilkan dengan bergabung dengan kluster dan konvergensi simpul, yang menarik adalah chef-client.log yang berisi hasil dari resep Chef konvergensi.
run File runtime yang dihasilkan oleh sistem. Kami tidak menyarankan untuk mengakses file-file ini secara langsung.
system File internal. Kami tidak merekomendasikan langsung menggunakan file apa pun di direktori ini karena dapat berubah secara signifikan dari rilis ke rilis.

Pemeriksaan Kesehatan

Layanan HealthCheck menjalankan skrip yang ditentukan pengguna untuk menentukan kelayakan VM saat ini sebagai node kluster. Silakan lihat dokumentasi HealthCheck untuk informasi selengkapnya.

Alat Baris Perintah Jetpack

Alat baris perintah Jetpack menyediakan serangkaian subperintah yang berguna untuk memanipulasi VM saat ini dan berinteraksi dengan Azure CycleCloud.

Perintah Deskripsi
jetpack autoscale Skalakan otomatis kluster tempat simpul ini berada.
jetpack config Mengambil nilai konfigurasi.
jetpack converge Jalankan konvergungan Chef.
jetpack download Unduh sumber daya blob dari proyek di Azure Storage.
jetpack keepalive Penundaan penghentian sistem oleh HealthCheck Service.
jetpack log Catat pesan ke antarmuka pengguna kluster CycleCloud.
jetpack run_on_shutdown Tambahkan skrip yang akan dipanggil sebelum penghentian simpul.
jetpack send Kirim pesan AMQP arbitrer ke server CycleCloud.
jetpack shutdown Minta penonaktifan VM oleh CycleCloud.
jetpack test Jalankan pengujian yang terkait dengan proyek yang ditetapkan ke VM.
jetpack users Cantumkan pengguna yang akan dikelola CycleCloud pada VM ini.
jetpack report_issue Mengarsipkan file log dari VM ke Azure Storage

skala otomatis jetpack

jetpack autoscale menetapkan target penskalaan otomatis untuk kluster tempat simpul berada. Kluster dapat diskalakan berdasarkan inti, jumlah instans, atau definisi kustom.

Untuk menskalakan ke 100 core:

jetpack autoscale --corecount=100

Untuk menskalakan nodearray 'gpu' menjadi 5 simpul:

jetpack autoscale --instancecount 5 --name=gpu

Untuk menyesuaikan skala otomatis, file json harus ditulis ke disk yang berisi definisi nodearray yang ingin Anda skalakan. Untuk menskalakan sebesar 100 core:

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

konfigurasi jetpack

jetpack config mengambil informasi yang diteruskan ke VM oleh CycleCloud. Ini mengekspos:

  • semua properti sistem tersedia melalui Ohai
  • subset metadata Azure VM
  • informasi tentang kluster CycleCloud induk.

jetpack bertemu

jetpack converge mengunduh semua proyek CycleCloud yang terkait dengan simpul, dan memulai proses konverge Chef yang menjalankan semua resep Chef dan skrip cluster-init untuk simpul.

unduhan jetpack

jetpack download mengunduh blob yang diunggah dengan proyek ke simpul. Anda harus menentukan proyek tempat blob berada.

Untuk mengunduh big-file.zip blob yang diunggah sebagai bagian example-project dari proyek ke direktori saat ini:

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

keepalive jetpack

jetpack keepalive berinteraksi dengan layanan HealthCheck untuk menunda penghentian VM karena HealthCheck yang gagal. Penghentian dapat ditunda selama periode tetap atau tanpa batas waktu. Secara default, penghentian tertunda selama satu jam.

Untuk menunda penghentian sistem satu jam:

jetpack keepalive

Untuk menunda penghentian sistem selama enam jam:

jetpack keepalive 6h

Untuk menonaktifkan layanan HealthCheck sepenuhnya, yaitu penghentian penundaan tanpa batas waktu:

jetpack keepalive forever

Catatan

Hanya opsi yang forever tersedia untuk HealthCheck pada VM Windows

log jetpack

jetpack log mengirim pesan log kembali ke CycleCloud. Pesan akan muncul di log server aplikasi (biasanya /opt/cycle_server/cycle_server.log), log peristiwa utama, dan halaman Antarmuka Pengguna Kluster.

Setiap pesan memiliki dua properti: tingkat dan prioritas.

Properti tingkat menunjukkan jenis pesan. Tingkat yang valid adalah 'info', 'warn', dan 'error'. Tingkat tidak menunjukkan pentingnya pesan tertentu - misalnya, beberapa kesalahan sepele dan beberapa pesan informasi penting.

Prioritas menunjukkan pentingnya pesan. Nilai prioritas yang valid adalah 'rendah', 'sedang', dan 'tinggi'. Hanya pesan dengan prioritas sedang atau lebih tinggi yang ditampilkan di halaman Antarmuka Pengguna Kluster untuk menghindari membanjiri halaman dengan pesan berprioritas rendah.

Untuk mengirim pesan log informasi yang akan muncul di halaman Antarmuka Pengguna Kluster:

jetpack log 'system is now ready'

Untuk mengirim pesan log berprioritas rendah yang tidak ingin Anda munculkan di halaman Antarmuka Pengguna Kluster:

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

Secara default, pesan dengan tingkat kesalahan memiliki prioritas tinggi. Untuk mengirim pesan kesalahan:

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

Untuk mengirim pesan kesalahan sepele:

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

run_on_shutdown jetpack

jetpack run_on_shutdown mendaftarkan skrip bash untuk dipanggil sebelum penghentian simpul.

Perintah mengambil jalur absolut ke skrip sebagai argumen.

Ketika simpul dihentikan oleh Azure, jika Pemberitahuan Penghentian diaktifkan, Jetpack akan diberi tahu tentang penghentian dan mencoba menjalankan skrip sebelum node dimatikan.

Simpul harus mengaktifkan Pemberitahuan Penghentian untuk mengaktifkan run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Perintah ini tidak didukung untuk simpul Windows.

pengiriman jetpack

jetpack send mengirim pesan AMQP ke CycleCloud. Ini adalah perintah tingkat lanjut yang tidak disarankan kecuali Anda mengembangkan plugin untuk CycleCloud.

Anda dapat mengirim string atau file arbitrer dengan kunci perutean AMQP tertentu.

penonaktifan jetpack

jetpack shutdown meminta agar CycleCloud mengakhiri simpul. Opsi dapat diteruskan ke perintah untuk menentukan alasan permintaan matikan (diam vs tidak sehat) serta cara mengakhiri simpul (mengakhiri vs batalkan alokasi).

Untuk mematikan simpul yang tidak sehat:

jetpack shutdown --unhealthy

Untuk membatalkan alokasi simpul:

jetpack shutdown --deallocate

uji jetpack

jetpack test menjalankan pengujian apa pun yang disertakan dengan proyek yang ditetapkan ke simpul dan mencetak hasilnya ke stdout.

pengguna jetpack

jetpack users mencantumkan pengguna yang akan dikelola CycleCloud pada simpul. Daftar ini dapat berubah dari waktu ke waktu saat pengguna ditetapkan dan dihapus ke kluster.

Untuk mendapatkan cetakan yang mudah digunakan dari pengguna yang ditetapkan ke simpul:

$ jetpack users

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

Untuk mendapatkan output JSON yang ramah skrip:

$ jetpack users --json

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

report_issue jetpack

jetpack report_issue mengarsipkan direktori log dari VM, secara opsional mengunggahnya ke Azure Storage dan membuat URL yang ditandatangani untuk akses eksternal. Log akan diunggah ke akun Azure Storage yang direferensikan oleh Locker simpul. Saat menandatangani arsip di Azure Storage, token SAS yang dihasilkan akan memiliki akses baca saja selama 30 hari.

Penggunaan:

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

Untuk mengarsipkan, unggah, dan tanda tangani log Jetpack default ($JETPACK_HOME/logs):

$ 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

Untuk mengarsipkan, unggah tetapi tidak menandatangani direktori log non-default:

$ 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

Untuk hanya mengarsipkan log pada VM lokal:

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