View a markdown version of this page

Validasi dan pecahkan masalah penyebaran armada kontainer - GameLift Server Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Validasi dan pecahkan masalah penyebaran armada kontainer

Penyebaran armada, yang disebut penyebaran dalam topik ini, adalah proses yang Amazon GameLift Servers digunakan untuk mengganti kontainer pada instance armada kontainer dengan kontainer yang menggunakan pengaturan baru armada, seperti versi definisi grup kontainer baru. Alih-alih mengganti setiap kontainer yang berjalan sekaligus, penerapan pertama-tama memverifikasi bahwa kontainer baru dapat meng-host sesi permainan dan kemudian mengganti sisanya secara bertahap untuk menangkap perubahan buruk sebelum mereka menyebarkan ke seluruh armada. Armada kontainer memulai penyebaran dalam tiga situasi:

  • Saat Anda membuat armada dengan definisi grup kontainer. Jika CreateContainerFleetpermintaan Anda menyertakan definisi grup kontainer server game, pembuatan armada memulai penerapan yang menginstal kontainer Anda pada instance baru armada. Jika Anda membuat armada tanpa definisi grup kontainer, tidak ada instance yang diterapkan dan armada tidak memiliki penerapan hingga Anda menambahkan definisi grup kontainer server game.

  • Saat Anda memperbarui definisi grup kontainer armada atau pengaturan kontainer lainnya. UpdateContainerFleetmemulai penerapan saat pembaruan mengubah kontainer yang dijalankan armada, misalnya saat Anda menentukan versi definisi grup kontainer server game baru. Pembaruan yang tidak mengubah pengaturan ini tidak memulai penerapan. Untuk informasi tentang setelan mana yang memulai penerapan, lihatPerbarui GameLift Peladen Amazon armada kontainer terkelola.

  • Saat Anda menambahkan lokasi ke armada aktif. Amazon GameLift Serversmemulai penyebaran di lokasi baru menggunakan definisi grup kontainer yang dikonfigurasi armada. Lokasi yang ada tidak digunakan kembali. Anda tidak dapat menambahkan lokasi saat penerapan lain sedang berlangsung.

Untuk melihat detail penerapan, panggil DescribeFleetDeployment, yang mengembalikan FleetDeploymentobjek. Ini mencakup ID penerapan, status, dan konfigurasi, bersama dengan versi definisi grup kontainer yang digunakan dan versi rollback. DeploymentDetails.LatestDeploymentIdProperti armada mengidentifikasi penyebaran terbarunya.

catatan

Penerapan hanya berlaku untuk armada kontainer terkelola.

Konfigurasikan penerapan

Penyebaran DeploymentConfigurationadalah seperangkat aturan yang mengontrol bagaimana penyebaran berlangsung di seluruh armada dan apa yang terjadi jika gagal. Untuk informasi tentang nilai dan default setiap setelan, lihat DeploymentConfigurationdi Referensi API. Amazon GameLift Servers

Anda mengatur konfigurasi penerapan saat memanggil UpdateContainerFleet atau mengedit armada di konsol. CreateContainerFleettidak menerima konfigurasi penerapan, jadi penerapan pertama armada selalu menggunakan nilai default.

Bagaimana GameLift Peladen Amazon memvalidasi penerapan

Saat penerapan dimulai, Amazon GameLift Servers pertama-tama memvalidasi grup kontainer server game di setiap lokasi armada. Ini menjalankan kontainer baru pada sebagian kecil dari kapasitas armada yang ada dan memeriksa apakah mereka menjadi sehat. Grup kontainer server game baru sehat ketika kontainer server game memanggil ProcessReady() untuk melaporkan bahwa ia siap untuk meng-host sesi game.

Validasi awal ini memeriksa grup kontainer server game. Jika armada Anda juga menggunakan definisi grup kontainer per instans, Amazon GameLift Servers perbarui grup tersebut setelah memperbarui grup server game. Amazon GameLift Serversmemeriksa grup per-instance secara terpisah sebelum penerapan selesai; mereka tidak menggunakan pemeriksaan server game. ProcessReady()

Validasi gagal jika grup kontainer server game baru tidak menjadi sehat sebelum Amazon GameLift Servers berhenti menunggu. Untuk informasi tentang alasan umum dan cara menyelidikinya, lihatDebug penerapan yang terganggu.

Jika validasi gagal, Amazon GameLift Servers terapkan penerapan ImpairmentStrategy dan tetapkan status penerapan ke IMPAIRED (forMAINTAIN) atau ROLLBACK_IN_PROGRESS (for). ROLLBACK Hanya setelah validasi berhasil di suatu lokasi, Amazon GameLift Servers ganti wadah yang tersisa yang menjalankan server game Anda di sana.

Berapa lama validasi dibutuhkan

Validasi membutuhkan waktu lebih lama ketika kapasitas yang Amazon GameLift Servers digunakan untuk validasi adalah hosting sesi game yang dilindungi. Armada NewGameSessionProtectionPolicy menentukan perlindungan default untuk sesi permainan baru. Nilai yang valid adalah NoProtection dan FullProtection. Penerapan ProtectionStrategy menentukan apakah penerapan menghormati perlindungan itu. Nilai yang valid adalah WITH_PROTECTION dan IGNORE_PROTECTION.

Ketika armada telah NewGameSessionProtectionPolicy disetel ke FullProtection dan penerapan telah ProtectionStrategy disetelWITH_PROTECTION, Amazon GameLift Servers memungkinkan batas waktu validasi yang lebih lama untuk sesi game yang dilindungi berakhir. Dengan kombinasi lainnya, ia menggunakan batas waktu yang lebih pendek.

penting

Jika kontainer baru Anda tidak pernah menjadi sehat, dan armada menggunakan FullProtection dengan WITH_PROTECTION penerapan, penyebaran dapat tetap dalam IN_PROGRESS status hingga sesi game yang dilindungi berakhir sebelum melaporkan kegagalan. Untuk mendapatkan sinyal yang lebih cepat, gunakan gambar kontainer baru IGNORE_PROTECTION saat Anda mengujinya, atau batalkan penerapannya sendiri. Untuk petunjuk tentang membatalkan penerapan, lihat. Membatalkan penerapan dengan memulai yang baru

Jika Anda melindungi sesi permainan individu dengan UpdateGameSessionNewGameSessionProtectionPolicyarmada yangNoProtection, Amazon GameLift Servers tidak memperpanjang penantiannya. Jika sesi game tersebut tidak berakhir tepat waktu, validasi dapat gagal meskipun konfigurasi baru berfungsi.

Lacak status penyebaran

Untuk melacak penyebaran di Amazon GameLift Serverskonsol, buka armada dan pilih tab Deployment. Untuk melacaknya dengan AWS Command Line Interface (AWS CLI), gunakan list-fleet-deploymentsuntuk menemukan ID penerapan, dan kemudian describe-fleet-deploymentuntuk detail penerapan tunggal.

Untuk informasi tentang nilai status penerapan dan arti masing-masing, lihat DeploymentStatusdi Referensi Amazon GameLift Servers API.

Debug penerapan yang terganggu

Penerapan yang terganggu berarti bahwa kontainer baru tidak menjadi sehat selama validasi: tidak ada kontainer server game yang dipanggil ProcessReady() sebelum Amazon GameLift Servers berhenti menunggu, seringkali karena kontainer keluar atau gagal memulai. Penyebabnya biasanya di image container atau server game. Cari tahu mengapa wadah keluar atau mengapa server game tidak pernah dilaporkan siap.

Tinjau log peristiwa armada

Log peristiwa armada mencatat apa yang Amazon GameLift Servers diamati selama penyebaran. Lihat di tab Acara armada di konsol, atau hubungi describe-fleet-events. Kode peristiwa berikut relevan dengan penerapan yang gagal:

  • GAME_SERVER_CONTAINER_GROUP_CRASHEDdan PER_INSTANCE_CONTAINER_GROUP_CRASHED — grup kontainer keluar atau gagal memulai. Ketika Amazon GameLift Servers memiliki kode keluar kontainer, itu termasuk kode dalam pesan acara.

  • GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHYdan INSTANCE_REPLACED_UNHEALTHY — Amazon GameLift Servers mengganti grup kontainer atau instance yang tidak menjadi sehat. Ini dapat berulang di seluruh lokasi armada saat penyebaran gagal.

  • SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT— kontainer server game menggunakan port yang tidak cocok dengan port yang dideklarasikan dalam definisi grup kontainer.

  • LOCATION_STATE_UPDATINGdan LOCATION_STATE_ACTIVE — ini menandai penyebaran di setiap lokasi, yang membantu Anda mengatur acara lain dengan penerapan yang menghasilkannya.

  • COMPUTE_LOG_UPLOAD_FAILED— pengumpulan log untuk wadah berhenti berfungsi, jadi log dari wadah itu mungkin tidak lengkap atau hilang.

Baca log kontainer

LogConfigurationSet armada kontainer di mana Amazon GameLift Servers mengirimkan output standar setiap kontainer: CLOUDWATCH (default),S3, atauNONE. Tetap atur ke CLOUDWATCH atau S3 lebih sehingga output kontainer tersedia saat penerapan gagal. Ketika kontainer gagal sebelum server game Anda mulai berjalan, misalnya karena titik masuk kontainer mengacu pada file yang tidak ada dalam gambar, output ini adalah satu-satunya catatan kegagalan. Untuk informasi tentang pencatatan kontainer, lihatPerbedaan logging: Armada yang Dikelola EC2 vs Kontainer.

Connect ke wadah yang rusak

Jika Anda menerapkan dengan strategi MAINTAIN penurunan nilai, Anda dapat terhubung ke wadah yang Amazon GameLift Servers menyimpan dan memeriksanya secara langsung. Gunakan ini untuk memeriksa izin file, mengonfirmasi file mana yang sebenarnya berisi gambar, dan jalankan server game yang dapat dieksekusi dengan tangan untuk melihat apa yang dilaporkan. Untuk petunjuk tentang menghubungkan ke wadah, lihatConnect ke kontainer.

Masalah penyebaran umum

Gejala-gejala berikut umum terjadi pada penyebaran yang gagal atau lambat, bersama dengan penyebab biasanya.

Wadah mulai dan keluar segera, berulang-ulang.

Jika titik masuk kontainer tidak dapat berjalan, periksa hal berikut:

  • Verifikasi bahwa skrip peluncuran dan server game yang dapat dieksekusi ditandai dapat dieksekusi dalam gambar.

  • Konfirmasikan bahwa arsitektur CPU executable cocok dengan tipe instance armada.

  • Periksa apakah gambar berisi penerjemah dan pustaka bersama yang dibutuhkan oleh executable.

Untuk informasi tentang membuat gambar yang Amazon GameLift Servers dapat dijalankan, lihatBuat gambar kontainer untuk GameLift Server Amazon.

Penyebarannya lambat tetapi tidak ada yang gagal.

WITH_PROTECTIONPenyebaran menunggu sesi permainan yang dilindungi berakhir, baik selama validasi maupun saat menggantikan kontainer armada. Periksa sesi permainan aktif armada sebelum Anda memperlakukan penyebaran yang lama sebagai kegagalan. Untuk informasi tentang waktu tunggu validasi, lihatBerapa lama validasi dibutuhkan.

Membatalkan penerapan dengan memulai yang baru

Untuk membatalkan penyebaran dan mengembalikan armada ke konfigurasi sebelumnya, panggil UpdateContainerFleet atau edit armada di konsol untuk memulai penerapan baru yang membalikkan perubahan. Kasus yang paling umum adalah versi definisi grup kontainer baru, yang dikembalikan oleh prosedur berikut. Amazon GameLift Serversmerekam versi yang digunakan armada saat terakhir aktif pada penerapan yang sedang berlangsung sebagai RollbackGameServerBinaryArn danRollbackPerInstanceBinaryArn, jadi Anda tidak perlu mencari tahu versi mana yang akan kembali. Jika penerapan juga mengubah pengaturan lain, seperti konfigurasi log atau rentang port koneksi, atur kembali ke UpdateContainerFleet permintaan yang sama.

Sebelum Anda mulai, konfigurasikan AWS CLI untuk akun Anda dan identifikasi rumah armada Wilayah AWS. Prosedur ini memerlukan penerapan yang sedang berlangsung dan versi definisi grup kontainer sebelumnya untuk dipulihkan. Gunakan list-fleet-deployments untuk menemukan ID penyebaran. Untuk petunjuk, lihat Lacak status penyebaran.

Dalam perintah, ganti fleet-id dengan ID armada Anda, deployment-id dengan ID penyebaran yang sedang berlangsung, dan fleet-home-region dengan rumah armada. Wilayah AWS

Untuk mengganti penerapan yang sedang berlangsung dengan versi penampung sebelumnya (AWS CLI)
  1. Gunakan AWS CLI perintah berikut untuk mendapatkan versi untuk kembali ke:

    aws gamelift describe-fleet-deployment \ --fleet-id fleet-id \ --deployment-id deployment-id \ --region fleet-home-region

    Sebagai tanggapan, RollbackGameServerBinaryArn pegang versi definisi grup kontainer server game yang digunakan armada saat terakhir aktif. Jika armada memiliki grup kontainer per-instance, simpan versi RollbackPerInstanceBinaryArn tersebut.

  2. Gunakan AWS CLI perintah berikut untuk memulai penerapan baru dengan versi itu. Ganti rollback-game-server-cgd-arn dengan RollbackGameServerBinaryArn nilai dari langkah 1. Jika armada memiliki grup kontainer per-instance, lewati juga --per-instance-container-group-definition-name nilainya. RollbackPerInstanceBinaryArn

    aws gamelift update-container-fleet \ --fleet-id fleet-id \ --game-server-container-group-definition-name rollback-game-server-cgd-arn \ --region fleet-home-region
  3. Konfirmasikan bahwa penyebaran sebelumnya melaporkan CANCELLED status dan bahwa penerapan baru melaporkan COMPLETE saat selesai.

catatan

Membatalkan penerapan dengan cara ini bukanlah penghentian instan. Penyebaran baru berjalan melalui langkah-langkah yang sama seperti yang lain, termasuk validasi, sehingga armada membutuhkan waktu untuk menyelesaikannya. Versi yang berhasil dijalankan armada sebelumnya biasanya divalidasi dengan cepat.

Untuk informasi selengkapnya, lihat topik berikut.