Jetpack

Pakiet Jetpack jest wymagany w każdym węźle klastra. Jest on automatycznie instalowany przez usługę Azure CycleCloud na każdej aprowizowanej maszynie wirtualnej, aby stać się węzłem w klastrze. Jetpack oferuje trzy główne funkcje:

  • Konfiguracja węzła — usługa CycleCloud używa skryptów i programu Chef do automatyzacji konfiguracji aprowizowanej maszyny wirtualnej w węźle klastra roboczego. Klient chef, a także niezbędne zasoby do konfiguracji maszyny wirtualnej są osadzone w usłudze Jetpack.
  • Synchronizacja rozproszona — Jetpack zarządza komunikacją między węzłem a serwerem aplikacji CycleCloud. Dzięki temu usługa CycleCloud może monitorować stan aprowizujących maszyn wirtualnych i synchronizować aranżację wielu węzłów w klastrze.
  • HealthCheck — Jetpack używa narzędzia HealthCheck w celu określenia kondycji maszyn wirtualnych, aby można było zakończyć działanie maszyn wirtualnych w złej kondycji.

Instalacja jetpack

Instalator Jetpack jest buforowany na koncie usługi Azure Storage po pierwszym uruchomieniu klastra przy użyciu usługi CycleCloud. W miarę aprowizowania maszyn wirtualnych klastra niestandardowe rozszerzenie skryptu jest wykonywane w ramach procesu rozruchu, który pobiera instalator Jetpack z pamięci podręcznej usługi Azure Storage, a następnie instaluje go na maszynie wirtualnej.

Instalator Jetpack:

  • Rozpakowuje pliki Jetpack do pojedynczego drzewa katalogów:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Tworzy skrypty uruchamiania inicjatora systemu, które konfigurują maszynę wirtualną jako węzeł klastra
  • Instaluje usługę HealthCheck
  • Instaluje narzędzie wiersza polecenia Jetpack w celu:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Tworzy reguły udev w systemie Linux
  • Ustawia zmienną środowiskową CYCLECLOUD_HOME

Uwaga

Jeśli pakiet Jetpack został wstępnie zainstalowany na obrazie, rozszerzenie niestandardowego skryptu nie zainstaluje ponownie pakietu Jetpack. Zamiast tego zostanie uruchomiony krok inicjowania, który zweryfikuje połączenie węzła z usługą CycleCloud i uruchomi healthcheck usługi i jetpackd przed kontynuowaniem konfigurowania węzła.

Podkatalogi Jetpack

Directory Opis
bin Przydatne pliki binarne i skrypty.
config Zdefiniowane przez użytkownika i pliki konfiguracji zdefiniowane przez klaster oraz skrypty.
logs Dzienniki generowane przez dołączenie do klastra i konwergentne węzły są chef-client.log , które zawierają wyniki z zbieżnych przepisów chef.
run Pliki środowiska uruchomieniowego generowane przez system. Nie zalecamy bezpośredniego uzyskiwania dostępu do tych plików.
system Pliki wewnętrzne. Nie zalecamy bezpośredniego używania żadnych plików w tym katalogu, ponieważ mogą one znacząco zmienić się z wydania na wydanie.

Sprawdzanie kondycji

Usługa HealthCheck wykonuje skrypty zdefiniowane przez użytkownika w celu określenia bieżącej rentowności maszyny wirtualnej jako węzła klastra. Aby uzyskać więcej informacji, zobacz dokumentację HealthCheck .

Narzędzie wiersza polecenia Jetpack

Narzędzie wiersza polecenia Jetpack udostępnia przydatny zestaw poleceń podrzędnych do manipulowania bieżącą maszyną wirtualną i interakcji z usługą Azure CycleCloud.

Polecenie Opis
jetpack autoscale Autoskaluj klaster, do którego należy ten węzeł.
jetpack config Pobieranie wartości konfiguracji.
jetpack converge Wykonaj zbieżne polecenie Chef.
jetpack download Pobierz zasób obiektu blob z projektu w usłudze Azure Storage.
jetpack keepalive Opóźnienie zakończenia systemu przez usługę HealthCheck Service.
jetpack log Rejestrowanie komunikatu w interfejsie użytkownika klastra CycleCloud.
jetpack run_on_shutdown Dodaj skrypt, który ma być wywoływany przed kończeniem węzła.
jetpack send Wyślij dowolny komunikat AMQP do serwera CycleCloud.
jetpack shutdown Zażądaj zamknięcia maszyny wirtualnej według usługi CycleCloud.
jetpack test Uruchom testy skojarzone z projektami przypisanymi do maszyny wirtualnej.
jetpack users Wyświetl listę użytkowników, którymi będzie zarządzać usługa CycleCloud na tej maszynie wirtualnej.
jetpack report_issue Archiwizowanie plików dziennika z maszyny wirtualnej do usługi Azure Storage

autoskalowywanie jetpack

jetpack autoscale Ustawia obiekty docelowe skalowania automatycznego dla klastra, do którego należy węzeł. Klastry można skalować według rdzeni, liczby wystąpień lub definicji niestandardowych.

Aby skalować do 100 rdzeni:

jetpack autoscale --corecount=100

Aby przeskalować element nodearray "gpu" do 5 węzłów:

jetpack autoscale --instancecount 5 --name=gpu

Aby dostosować autoskalowanie, plik json musi być zapisany na dysku zawierający definicję nodearray, którą chcesz skalować. Aby skalować o 100 rdzeni:

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

jetpack config

jetpack config Pobiera informacje przekazywane do maszyny wirtualnej przez CycleCloud. Uwidacznia:

  • wszystkie właściwości systemowe udostępnione za pośrednictwem Ohai
  • podzestaw metadanych platformy Azure maszyny wirtualnej
  • informacje o nadrzędnym klastrze CycleCloud.

jetpack zbiegają się

jetpack converge pobiera wszystkie projekty CycleCloud skojarzone z węzłem i uruchamia proces zbieżnego programu Chef, który uruchamia wszystkie przepisy programu Chef i skrypty inicjowania klastra dla węzła.

pobieranie pakietu jetpack

jetpack download pobiera obiekt blob przekazany z projektem do węzła. Należy określić projekt, do którego należy obiekt blob.

Aby pobrać big-file.zip obiektów blob przekazanych w ramach projektu do bieżącego example-project katalogu:

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

jetpack keepalive

jetpack keepalive współdziała z usługą HealthCheck, aby opóźnić zakończenie maszyny wirtualnej z powodu niepowodzenia kontroli kondycji. Zakończenie może być opóźnione przez określony okres lub na czas nieokreślony. Domyślnie zakończenie jest opóźnione przez jedną godzinę.

Aby opóźnić zakończenie systemu o jedną godzinę:

jetpack keepalive

Aby opóźnić zakończenie systemu o sześć godzin:

jetpack keepalive 6h

Aby całkowicie wyłączyć usługę HealthCheck, tj. opóźnienie zakończenia na czas nieokreślony:

jetpack keepalive forever

Uwaga

forever Tylko opcja jest dostępna dla opcji HealthCheck na maszynach wirtualnych z systemem Windows

dziennik jetpack

jetpack log wysyła komunikat dziennika z powrotem do usługi CycleCloud. Komunikat pojawi się w dzienniku serwera aplikacji (zazwyczaj /opt/cycle_server/cycle_server.log), głównym dzienniku zdarzeń i stronie Interfejs użytkownika klastra.

Każdy komunikat ma dwie właściwości: poziom i priorytet.

Właściwość level wskazuje typ komunikatu. Prawidłowe poziomy to "info", "warn" i "error". Poziom nie wskazuje znaczenia danego komunikatu — na przykład niektóre błędy są proste i niektóre komunikaty informacyjne krytyczne.

Priorytet wskazuje znaczenie komunikatu. Prawidłowe wartości priorytetu to "niski", "średni" i "wysoki". Na stronie interfejsu użytkownika klastra są wyświetlane tylko komunikaty o priorytcie lub wyższym, aby uniknąć powodzi strony z komunikatami o niskim priorytcie.

Aby wysłać komunikat dziennika informacyjnego, który będzie wyświetlany na stronie interfejsu użytkownika klastra:

jetpack log 'system is now ready'

Aby wysłać komunikat dziennika o niskim priorytcie, który nie ma być wyświetlany na stronie Interfejs użytkownika klastra:

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

Domyślnie komunikaty o poziomie błędu mają wysoki priorytet. Aby wysłać komunikat o błędzie:

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

Aby wysłać trywialny komunikat o błędzie:

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

jetpack run_on_shutdown

jetpack run_on_shutdown rejestruje skrypt powłoki bash, który ma być wywoływany przed kończeniem węzła.

Polecenie przyjmuje ścieżkę bezwzględną do skryptu jako argument.

Po zakończeniu działania węzła przez platformę Azure, jeśli powiadomienia o zakończeniu są włączone, pakiet Jetpack zostanie powiadomiony o zakończeniu działania skryptu i próbie uruchomienia skryptu przed zamknięciem węzła.

Węzły muszą włączyć powiadomienia o zakończeniu , aby włączyć run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

To polecenie nie jest obsługiwane w przypadku węzłów systemu Windows.

jetpack send

jetpack send wysyła komunikat AMQP do usługi CycleCloud. Jest to zaawansowane polecenie, które nie jest zalecane, chyba że tworzysz wtyczki dla usługi CycleCloud.

Możesz wysyłać dowolne ciągi lub pliki z określonymi kluczami routingu amQP.

zamknięcie jetpack

jetpack shutdown żąda, aby usługa CycleCloud zakończyła węzeł. Opcje można przekazać do polecenia, aby określić przyczynę żądania zamknięcia (bezczynności i złej kondycji), a także jak zakończyć węzeł (zakończ a cofnij przydział).

Aby zamknąć węzeł w złej kondycji:

jetpack shutdown --unhealthy

Aby cofnąć przydział węzła:

jetpack shutdown --deallocate

test jetpack

jetpack test uruchamia wszystkie testy dołączone do projektów przypisanych do węzła i wyświetla wyniki do stdout.

użytkownicy jetpack

jetpack users wyświetla listę użytkowników, którymi będzie zarządzać usługa CycleCloud w węźle. Ta lista może zmieniać się wraz z upływem czasu, gdy użytkownicy są przypisywani i usuwani z klastra.

Aby uzyskać przyjazny dla użytkownika wydruk dla użytkowników przypisanych do węzła:

$ jetpack users

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

Aby uzyskać dane wyjściowe JSON przyjazne dla skryptów:

$ 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 archiwa rejestruje katalogi z maszyny wirtualnej, opcjonalnie przekazując je do usługi Azure Storage i tworząc podpisany adres URL na potrzeby dostępu zewnętrznego. Dzienniki zostaną przekazane do konta usługi Azure Storage, do których odwołuje się funkcja Locker węzła. Podczas podpisywania archiwum w usłudze Azure Storage wynikowy token SAS będzie miał dostęp tylko do odczytu przez 30 dni.

Użycie:

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

Aby zarchiwizować, przekaż i podpisać domyślne dzienniki Jetpack ($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

Aby zarchiwizować, przekaż, ale nie podpisz domyślnego katalogu dziennika:

$ 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

Aby po prostu zarchiwizować dzienniki na lokalnej maszynie wirtualnej:

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