View a markdown version of this page

Temukan kontainer di 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.

Temukan kontainer di armada kontainer

Pada armada Amazon GameLift Servers kontainer, setiap instance dapat menjalankan beberapa kontainer. Misalnya, Anda dapat menjalankan beberapa replika grup kontainer server game Anda. Anda juga dapat menjalankan grup kontainer per-instance yang menyediakan layanan bersama di seluruh instans.

Server penemuan kontainer memungkinkan proses server game Anda untuk menemukan kontainer lain yang berjalan pada instance yang sama. Container kemudian dapat berkomunikasi satu sama lain di seluruh definisi grup kontainer melalui jaringan lokal instance.

Discovery server adalah layanan HTTP ringan. Amazon GameLift Serversmenjalankannya secara lokal pada setiap instance armada kontainer. Layanan ini menyediakan informasi jaringan berikut untuk setiap kontainer yang berjalan pada instance itu:

  • Nama kontainer yang Anda tentukan dalam definisi grup kontainer.

  • Pengidentifikasi unik wadah.

  • Alamat IP lokal kontainer pada instance.

  • Jenis grup kontainer, baik GAME_SERVER (replika grup kontainer server game) atau PER_INSTANCE (grup kontainer per-instance).

catatan

Server penemuan kontainer hanya tersedia pada armada kontainer terkelola.

Ambil informasi jaringan kontainer

Anda dapat mengambil informasi jaringan kontainer dengan dua cara: dari proses server game dengan SDK Amazon GameLift Servers server, atau dari wadah apa pun dengan memanggil server penemuan secara langsung melalui HTTP.

Mengambil informasi kontainer menggunakan SDK server

Jika proses server game Anda menggunakan SDK Amazon GameLift Servers server, panggil ListContainersNetworkInfo() tindakan untuk mengambil informasi jaringan kontainer. Server SDK menemukan server penemuan dan membuat permintaan untuk Anda. Tindakan mengembalikan informasi jaringan untuk setiap kontainer yang berjalan pada instance yang sama. Pada jenis komputasi lainnya, tindakan mengembalikan kesalahan jenis komputasi yang tidak didukung.

ListContainersNetworkInfo()tersedia di server SDK versi 5.5 atau yang lebih baru untuk bahasa berikut:

Tindakan ini juga tersedia di Amazon GameLift Servers plugin untuk Unreal Engine dan Unity.

Ambil informasi kontainer dengan memanggil server penemuan secara langsung

Beberapa kontainer tidak menggunakan SDK server, seperti container per instance. Wadah ini memanggil server penemuan langsung melalui HTTP. Amazon GameLift Serverspra-set variabel GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1 lingkungan dalam wadah ini. Variabel ini menyimpan alamat server penemuan, termasuk jalur versi API, dan disetel dalam definisi grup penampung server game dan per-instance.

Untuk mengambil informasi jaringan kontainer, kirim GET permintaan HTTP ke endpoint ini. Contoh berikut menggunakan curl:

curl "$GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1"

Server penemuan mengembalikan array JSON dengan satu entri untuk setiap kontainer yang berjalan pada instance:

[ { "containerName": "game-server", "ipAddress": "172.17.0.3", "containerId": "b896159563df43736e5e93ad0547a24fa572648d55b70c70747642afca398b18", "containerGroupType": "GAME_SERVER" }, { "containerName": "per-instance", "ipAddress": "172.17.0.4", "containerId": "3c239ae037aec28bb42212ffa2b9e02524c0c4c361db9bc31dd4c5aecc0b7943", "containerGroupType": "PER_INSTANCE" } ]

Batas tarif permintaan

Server penemuan membatasi setiap kontainer pada instance hingga 10 permintaan per detik. Ini membatasi permintaan yang melebihi batas ini dan mengembalikan kesalahan. Untuk tetap dalam batas ini, kueri server penemuan sekali saat startup. Sebagai alternatif, kueri hanya ketika Anda perlu menyegarkan tampilan instance Anda. Cache hasil dalam wadah Anda dan gunakan kembali nilai cache daripada menanyakan server penemuan secara berulang.

Segarkan cache Anda secara berkala agar tetap terkini. Alamat IP lokal kontainer dapat berubah jika kontainer mogok atau keluar (misalnya, ketika sesi permainannya berakhir).

Contoh: mengumpulkan metrik dari wadah server game

Penggunaan umum server penemuan adalah untuk mengirim telemetri antar kontainer pada instance yang sama tanpa meninggalkan jaringan lokal instans. Pertimbangkan armada yang menjalankan beberapa container server game (GAME_SERVER) dan satu container per instance ()PER_INSTANCE. Container per-instance menjalankan kolektor metrik yang dibagikan oleh semua server game pada instance.

Anda dapat menerapkan koleksi metrik dengan model push atau model tarik:

  • Dorong (emisi metrik) — Saat startup, setiap kontainer server game memanggil. ListContainersNetworkInfo() Wadah menemukan entri dengan tipe grup PER_INSTANCE kontainer. Kemudian membaca alamat IP lokal dari entri itu. Server game mengirimkan metriknya langsung ke kolektor per-instance melalui jaringan lokal instans.

  • Tarik (pengikisan metrik) — Pendekatan sebaliknya juga berfungsi. Container per-instance tidak menggunakan SDK server, sehingga memanggil titik akhir server penemuan secara langsung. Ia menemukan alamat IP dari semua GAME_SERVER kontainer pada instance. Kemudian menggores titik akhir metrik yang diekspos oleh setiap wadah server game melalui jaringan lokal.

Dalam kedua kasus, komunikasi tetap berada di jaringan lokal instans. Setiap kontainer menanyakan server penemuan hanya sesekali daripada secara berulang.