Bagikan melalui


Cara mengonfigurasi dan menjalankan tugas startup untuk Azure Cloud Service (klasik)

Penting

Cloud Services (klasik) sekarang tidak lagi digunakan untuk pelanggan baru dan akan dihentikan untuk semua pelanggan pada 31 Agustus 2024. Penyebaran baru sebaiknya menggunakan Azure Resource Manager yang baru berdasarkan model penyebaran Azure Cloud Services (dukungan tambahan) .

Anda bisa menggunakan tugas startup untuk melakukan operasi sebelum peran dimulai. Operasi yang mungkin ingin Anda lakukan termasuk memasang komponen, mendaftarkan komponen COM, mengatur kunci registri, atau memulai proses yang berjalan lama.

Catatan

Tugas startup tidak berlaku untuk Virtual Machines, hanya untuk Web Layanan Awan dan peran Pekerja.

Cara kerja tugas startup

Tugas startup adalah tindakan yang dilakukan sebelum peran Anda dimulai dan didefinisikan dalam file ServiceDefinition.csdef dengan menggunakan elemen Tugas dalam elemen Startup. Tugas startup yang sering adalah file batch, tetapi juga dapat menjadi aplikasi konsol, atau file batch yang memulai skrip PowerShell.

Variabel lingkungan meneruskan informasi ke tugas startup, dan penyimpanan lokal dapat digunakan untuk meneruskan informasi dari tugas startup. Misalnya, variabel lingkungan dapat menentukan jalur ke program yang ingin Anda instal, dan file dapat ditulis ke penyimpanan lokal yang kemudian dapat dibaca nanti oleh peran Anda.

Tugas startup Anda bisa mencatat informasi dan kesalahan ke direktori yang ditentukan oleh variabel lingkungan TEMP. Selama tugas startup, variabel lingkungan TEMP diselesaikan ke direktori C:\Resources\temp\[guid].[rolename]\RoleTemp saat berjalan di cloud.

Tugas startup juga dapat dijalankan beberapa kali di antara reboot. Misalnya, tugas startup akan dijalankan setiap kali peran didaur ulang, dan daur ulang peran mungkin tidak selalu melibatkan reboot. Tugas startup harus ditulis sedemikian rupa sehingga memungkinkan untuk dijalankan beberapa kali tanpa masalah.

Tugas startup harus diakhiri dengan errorlevel (atau kode keluar) nol agar proses startup selesai. Jika tugas startup diakhiri dengan errorlevel selain nol, peran tidak akan dimulai.

Urutan startup peran

Berikut ini daftar prosedur startup peran di Azure:

  1. Instans ditandai sebagai Memulai dan tidak menerima lalu lintas.

  2. Semua tugas startup dijalankan sesuai dengan atribut taskType mereka.

    • Tugas sederhana dijalankan secara sinkron, satu per satu.

    • Latar belakang dan tugas latar depan dimulai secara asinkron, sejajar dengan tugas startup.

      Peringatan

      IIS mungkin tidak sepenuhnya dikonfigurasi selama tahap tugas startup dalam proses startup, sehingga data khusus peran mungkin tidak tersedia. Tugas startup yang memerlukan data khusus peran harus menggunakan Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart.

  3. Proses host peran dimulai dan situs dibuat di IIS.

  4. Metode Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart dipanggil.

  5. Instans ditandai sebagai Siap dan lalu lintas dialihkan ke instans.

  6. Metode Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.Run dipanggil.

Contoh tugas startup

Tugas startup ditentukan di file ServiceDefinition.csdef, di elemen Tugas. Atribut commandLine menentukan nama dan parameter file batch startup atau perintah konsol, atribut executionContext menentukan tingkat hak istimewa tugas startup, dan atribut taskType menentukan bagaimana tugas akan dijalankan.

Dalam contoh ini, variabel lingkungan, MyVersionNumber, dibuat untuk tugas startup dan diatur ke nilai "1.0.0.0".

ServiceDefinition.csdef:

<Startup>
    <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" >
        <Environment>
            <Variable name="MyVersionNumber" value="1.0.0.0" />
        </Environment>
    </Task>
</Startup>

Dalam contoh berikut, file batch Startup.cmd menulis baris "Versi saat ini adalah 1.0.0.0" ke file StartupLog.txt di direktori yang ditentukan oleh variabel lingkungan TEMP. Baris EXIT /B 0 memastikan bahwa tugas startup diakhiri dengan errorlevel nol.

ECHO The current version is %MyVersionNumber% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B 0

Catatan

Di Visual Studio, properti Salin ke Direktori Output untuk file batch startup Anda harus diatur ke Salin Selalu untuk memastikan bahwa file batch startup Anda disebarkan dengan benar ke proyek Anda di Azure (approot\bin untuk peran Web, dan approot untuk peran pekerja).

Deskripsi atribut tugas

Berikut ini menjelaskan atribut elemen Tugas dalam file ServiceDefinition.csdef:

commandLine - Menentukan baris perintah untuk tugas startup:

  • Perintah, dengan parameter baris perintah opsional, yang memulai tugas startup.
  • Sering kali ini adalah nama file dari file .cmd atau .bat batch.
  • Tugas ini relatif terhadap folder AppRoot\Bin untuk penyebaran. Variabel lingkungan tidak diperluas dalam menentukan jalur dan file tugas. Jika perluasan lingkungan diperlukan, Anda dapat membuat skrip .cmd kecil yang memanggil tugas startup Anda.
  • Bisa berupa aplikasi konsol atau file batch yang memulai skrip PowerShell.

executionContext - Menentukan tingkat hak istimewa untuk tugas startup. Tingkat hak istimewa dapat dibatasi atau ditinggikan:

  • terbatas
    Tugas startup berjalan dengan hak istimewa yang sama dengan peran. Ketika atribut executionContext untuk elemen Runtime juga terbatas, maka hak istimewa pengguna digunakan.
  • ditinggikan
    Tugas startup berjalan dengan hak istimewa administrator. Ini memungkinkan tugas startup untuk menginstal program, membuat perubahan konfigurasi IIS, melakukan perubahan registri, dan tugas tingkat administrator lainnya, tanpa meningkatkan tingkat hak istimewa peran itu sendiri.

Catatan

Tingkat hak istimewa tugas startup tidak perlu sama dengan peran itu sendiri.

taskType - Menentukan cara tugas startup dijalankan.

  • sederhana
    Tugas dijalankan secara sinkron, satu per satu, dalam urutan yang ditentukan dalam file ServiceDefinition.csdef. Ketika satu tugas startup sederhana berakhir dengan errorlevel nol, tugas startup sederhana dijalankan. Jika tidak ada tugas startup sederhana lagi untuk dijalankan, maka peran itu sendiri akan dimulai.

    Catatan

    Jika tugas sederhana diakhiri dengan errorlevel bukan nol, instans akan diblokir. Tugas startup sederhana berikutnya, dan peran itu sendiri, tidak akan dimulai.

    Untuk memastikan bahwa file batch Anda berakhir dengan errorlevel nol, jalankan perintah EXIT /B 0 di akhir proses file batch Anda.

  • latar belakang
    Tugas dijalankan secara asinkron, sejalan dengan startup peran.

  • latar depan
    Tugas dijalankan secara asinkron, sejalan dengan startup peran. Perbedaan utama antara proses di latar depan dan latar belakang adalah bahwa proses di latar depan mencegah peran dari daur ulang atau mati hingga tugas berakhir. Proses di latar belakang tidak memiliki batasan ini.

Variabel lingkungan

Variabel lingkungan adalah cara untuk meneruskan informasi ke tugas startup. Misalnya, Anda dapat meletakkan jalur ke blob yang berisi program untuk diinstal, atau nomor port yang akan digunakan peran Anda, atau pengaturan untuk mengontrol fitur tugas startup Anda.

Ada dua jenis variabel lingkungan untuk tugas startup; variabel lingkungan statis dan variabel lingkungan berdasarkan anggota kelas RoleEnvironment. Keduanya berada di bagian Lingkungan dari file ServiceDefinition.csdef, dan keduanya menggunakan elemen Variabel dan atribut nama.

Variabel lingkungan statis menggunakan atribut nilaidari elemen Variabel. Contoh di atas membuat variabel lingkungan MyVersionNumber yang memiliki nilai statis "1.0.0.0". Contoh lain adalah membuat variabel lingkungan StagingOrProduction yang dapat Anda atur secara manual ke nilai "penahapan" atau "produksi" untuk melakukan tindakan startup yang berbeda berdasarkan nilai variabel lingkungan StagingOrProduction.

Variabel lingkungan berdasarkan anggota kelas RoleEnvironment tidak menggunakan nilai atribut dari elemen Variabel. Sebaliknya, elemen anak RoleInstanceValue, dengan nilai atribut XPath yang sesuai, digunakan untuk membuat variabel lingkungan berdasarkan anggota tertentu dari kelas RoleEnvironment. Nilai untuk atribut XPath untuk mengakses berbagai nilai RoleEnvironment dapat ditemukan di sini.

Misalnya, untuk membuat variabel lingkungan yang "benar" saat instans berjalan di emulator komputasi, dan "salah" saat berjalan di cloud, gunakan elemen Variabel dan RoleInstanceValue berikut:

<Startup>
    <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
        <Environment>

            <!-- Create the environment variable that informs the startup task whether it is running
                in the Compute Emulator or in the cloud. "%ComputeEmulatorRunning%"=="true" when
                running in the Compute Emulator, "%ComputeEmulatorRunning%"=="false" when running
                in the cloud. -->

            <Variable name="ComputeEmulatorRunning">
                <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
            </Variable>

        </Environment>
    </Task>
</Startup>

Langkah berikutnya

Pelajari cara melakukan beberapa tugas startup umum dengan Cloud Service Anda.

Paket Cloud Service Anda.