Memahami status klien Traffic Director
Saat Anda menggunakan Traffic Director untuk menangani jaringan aplikasi, pertimbangkan dua komponen utama berikut:
- Lapisan infrastruktur. Lapisan infrastruktur, seperti proxy file bantuan Envoy atau library gRPC tanpa proxy, dikonfigurasi untuk menangani jaringan atas nama aplikasi Anda.
- Bidang kontrol, Traffic Director. Bidang kontrol menghasilkan konfigurasi untuk, dan mendistribusikan konfigurasi ke, lapisan infrastruktur.
Saat proxy Envoy atau library gRPC diinisialisasi, proxy akan menggunakan xDS API untuk terhubung ke Traffic Director. Proxy atau library bertindak sebagai klien untuk Traffic Director. Setelah koneksi dibuat antara klien dan Traffic Director, Traffic Director mengirimkan informasi konfigurasi kembali ke klien dan memperbarui konfigurasi sesuai kebutuhan.
Terkadang ada baiknya untuk memahami klien mana yang terhubung ke Traffic Director atau memeriksa konfigurasi yang dihasilkan Traffic Director untuk kliennya. Misalnya, Anda mungkin ingin men-debug masalah, atau mungkin ingin memahami pengaruh tindakan yang Anda lakukan saat mengonfigurasi Traffic Director memengaruhi konfigurasi yang dilihat klien.
Traffic Director mendukung Client Status Discovery Service (CSDS) API. Anda menggunakan klien CSDS untuk mengkueri API ini. Hal ini memungkinkan Anda melihat klien mana yang terhubung ke Traffic Director dan memeriksa konfigurasi yang dihasilkan Traffic Director untuk kliennya.
Klien CSDS adalah alat open source yang dapat Anda peroleh dari repositori Envoy. Diagram berikut menggambarkan cara klien CSDS membuat kueri Traffic Director untuk informasi tentang CSDS API Traffic Director.
Klien CSDS terhubung ke Traffic Director dan menampilkan nomor project dan nama jaringan, beserta serangkaian kredensial. Traffic Director kemudian dapat merespons dengan informasi tentang berbagai klien Traffic Director yang terhubung dengannya.
Untuk mengetahui informasi selengkapnya tentang klien CSDS, lihat file README.
Prasyarat
Untuk terhubung ke CSDS API, Anda memerlukan klien CSDS. Anda bisa mendapatkan klien dengan salah satu dari dua cara berikut:
- Anda dapat membuat klien menggunakan Cloud Shell.
- Anda dapat membuat klien pada mesin pengembangan lokal.
Membangun klien CSDS menggunakan Cloud Shell
Untuk menggunakan Cloud Shell guna membangun klien CSDS, lakukan hal berikut:
- Reset Cloud Shell menggunakan petunjuk di Menonaktifkan atau mereset Cloud Shell. Hal ini untuk memastikan bahwa konfigurasi yang ada tidak mengganggu build Anda.
- Di Konsol Google Cloud, buka sesi Cloud Shell baru.
Jalankan perintah berikut untuk mendapatkan kode sumber yang Anda gunakan untuk mem-build klien CSDS:
git clone https://github.com/envoyproxy/envoy-tools.git
Buka direktori klien CSDS dan jalankan perintah berikut:
cd envoy-tools/csds-client/ make init make build
Setelah build selesai, uji dengan perintah berikut:
csds-client -help
Jika build berhasil, Anda akan melihat teks bantuan untuk klien.
Membangun klien CSDS pada mesin pengembangan lokal
Anda dapat mendownload dan membangun klien CSDS di komputer lokal dengan mengikuti
petunjuk di
file README
di repositori open source. Untuk melakukannya,
Anda juga harus menyiapkan Go dan alat make
di lingkungan Anda. Jika Anda memilih untuk tidak melakukannya, gunakan petunjuk sebelumnya untuk Cloud Shell, yang menyediakan Go dan alat make
untuk Anda.
Prasyarat tambahan
Pastikan ID node setiap klien bersifat unik dalam mesh layanan. Jika beberapa klien berbagi ID node yang sama, hanya satu konfigurasi yang ditampilkan, yaitu konfigurasi untuk klien yang terakhir terhubung ke Traffic Director.
Jika menggunakan paket referensi Google, Anda tidak perlu menetapkan ID node dalam file bootstrap secara manual. ID node akan dibuat untuk Anda. Jika tidak menggunakan paket referensi, Anda harus menetapkan ID node secara manual di setiap file bootstrap.
Pastikan Anda memiliki akses ke akun pengguna yang memiliki izin Identity and Access Management (IAM) yang diperlukan untuk mengonfigurasi Traffic Director. Petunjuk berikut menggunakan Google Cloud CLI untuk membuat dan otomatis menyediakan kredensial yang diperlukan oleh klien CSDS. Atau, Anda dapat menggunakan klien CSDS dan memberikan kredensial secara langsung.
Menentukan klien mana yang saat ini terhubung dengan Traffic Director
Anda dapat menggunakan klien CSDS untuk menentukan klien yang terhubung ke konfigurasi Traffic Director Anda.
Untuk mendapatkan informasi ini, Anda memerlukan detail berikut:
ID project tempat kredensial dibuat.
Jika Anda menggunakan API perutean layanan, akan terjadi salah satu dari hal berikut, bergantung pada resource mana yang diambil klien xDS:
Jika Anda menggunakan API lama, masukkan nama jaringan VPC yang Anda tentukan saat mengonfigurasi Traffic Director. Jaringan ini adalah jaringan yang ditentukan oleh aturan penerusan peta aturan perutean.
API pemilihan rute layanan
Dari akun yang memiliki izin yang benar, jalankan perintah berikut:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Buat file baru dalam format YAML dengan konten berikut.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE"
Ganti nilai berikut:
PROJECT_NUMBER
: ID projectMESH_OR_SCOPE
: jika klien xDS mengambil resource Mesh, gunakan awalanmesh:
yang diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalanscope:
yang diikuti dengan nama parameter cakupan
Jalankan klien CSDS, yang menggunakan kredensial yang dihasilkan oleh gcloud CLI. Ganti
PATH_TO_CSDS_REQUEST_YAML_FILE
dengan jalur ke file YAML yang Anda buat di langkah sebelumnya.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
Kolom
Client ID
menampilkan client ID klien yang terhubung ke Traffic Director. Client ID ini disediakan menggunakan kolomnode_id
dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke Traffic Director.
API lama
Dari akun yang memiliki izin yang benar, jalankan perintah berikut:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Buat file baru dalam format YAML dengan konten berikut.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Ganti nilai berikut:
PROJECT_NUMBER
: ID unik project Google CloudNETWORK_NAME
: jaringan VPC yang ditentukan oleh aturan penerusan peta aturan perutean
Jalankan klien CSDS, yang menggunakan kredensial yang dihasilkan oleh gcloud CLI. Ganti
PATH_TO_CSDS_REQUEST_YAML_FILE
dengan jalur ke file YAML yang Anda buat di langkah sebelumnya.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
Kolom
Client ID
menampilkan client ID klien yang terhubung ke Traffic Director. Client ID ini disediakan menggunakan kolomnode_id
dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke Traffic Director.
Memeriksa konfigurasi untuk klien Traffic Director tertentu
Anda dapat memeriksa konfigurasi yang dikirim Traffic Director ke klien tertentu menggunakan client ID, yang Anda peroleh di bagian sebelumnya.
Anda dapat memeriksa konfigurasi mendetail proto resource untuk menentukan
versi xDS API mana yang digunakan klien tertentu. Misalnya, jika Anda melihat envoy.api.v2.Cluster
dalam konfigurasi, berarti klien menggunakan API v2.
Jika Anda melihat envoy.api.v3.Cluster
dalam konfigurasi, berarti klien menggunakan API v3.
API pemilihan rute layanan
Perbarui file YAML yang Anda buat di Menentukan klien yang saat ini terhubung ke Traffic Director. Tambahkan kolom
node-id
yang menggunakan client ID sebagai nilainya.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE_NAME"
Ganti nilai berikut:
CLIENT_ID
: ID klien yang konfigurasinya Anda periksa—misalnya,projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
PROJECT_NUMBER
: ID unik project Google CloudMESH_OR_SCOPE
: jika klien xDS mengambil resource Mesh, gunakan awalanmesh:
yang diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalanscope:
yang diikuti dengan nama parameter cakupan
Jalankan klien CSDS. Menjalankan klien ini akan menghasilkan file JSON. File ini berisi konfigurasi yang dikirim ke klien Traffic Director.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Ganti nilai berikut:
PATH_TO_CSDS_REQUEST_YAML_FILE
: jalur ke file YAML AndaFILENAME.JSON
: nama untuk file yang menyimpan output klien CSDS
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Anda dapat memeriksa konfigurasi xDS mendetail dengan melihat file JSON. Output ini berisi status setiap konfigurasi xDS yang dikirim oleh Traffic Director ke klien dengan menggunakan streaming gRPC gabungan (ADS).
API lama
Perbarui file YAML yang Anda buat di Menentukan klien yang saat ini terhubung ke Traffic Director. Tambahkan kolom
node-id
yang menggunakan client ID sebagai nilainya.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Ganti nilai berikut:
CLIENT_ID
: ID klien yang konfigurasinya Anda periksa—misalnya,f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
PROJECT_NUMBER
: ID unik project Google CloudNETWORK_NAME
: Jaringan VPC yang ditentukan oleh aturan penerusan pada peta aturan perutean
Jalankan klien CSDS. Menjalankan klien ini akan menghasilkan file JSON. File ini berisi konfigurasi yang dikirim ke klien Traffic Director.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Ganti nilai berikut:
PATH_TO_CSDS_REQUEST_YAML_FILE
: jalur ke file YAML AndaFILENAME.JSON
: nama untuk file yang menyimpan output klien CSDS
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Anda dapat memeriksa konfigurasi xDS mendetail dengan melihat file JSON. Output ini berisi status setiap konfigurasi xDS yang dikirim oleh Traffic Director ke klien dengan menggunakan streaming gRPC gabungan (ADS).
Nilai status
Tabel berikut mencantumkan nilai status konfigurasi xDS yang mungkin Anda lihat.
Nilai | Deskripsi |
---|---|
UNKNOWN |
(Default) Informasi status tidak tersedia atau tidak diketahui. |
SYNCED |
Traffic Director mengirim konfigurasi ke klien dan menerima ACK dari klien. |
ERROR |
Traffic Director mengirim konfigurasi ke klien dan menerima NACK dari klien. |
STALE |
Traffic Director mengirim konfigurasi ke klien, tetapi tidak menerima ACK atau NACK dari klien. |
NOT_SENT |
Konfigurasi gagal dikirim. |
N/A |
Klien CSDS tidak menyertakan ID node. Semua streaming yang terhubung akan ditampilkan, tetapi status konfigurasi tidak tersedia. |
Visualisasi dan pemantauan
Alat open source klien CSDS memiliki fitur tambahan yang mungkin ingin Anda gunakan, seperti visualisasi dan pemantauan berkelanjutan. Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat file README di repositori open source.
Pesan error
Anda mungkin melihat pesan error berikut dari klien CSDS saat mengaktifkan Traffic Director API hanya di project Anda:
rpc error: code = NotFound desc = Requested entity was not found.
Ini normal. Konfigurasi Traffic Director dicakup per jaringan. Jika Anda belum membuat jaringan dan menjalankan klien CSDS, Anda akan melihat pesan error ini.
Batasan
- Informasi endpoint tidak disertakan dalam respons CSDS karena informasi ini tidak tersedia di CSDS v3 API.
- ID node setiap klien harus unik dalam mesh layanan. Jika beberapa klien memiliki ID node yang sama, hanya satu konfigurasi yang akan ditampilkan, yaitu konfigurasi untuk klien yang terakhir terhubung ke Traffic Director.
- Terkadang Anda mungkin melihat garis miring terbalik (\) di kolom ID node pada file YAML. Jika hal ini terjadi, konversikan garis miring terbalik dengan menggunakan garis miring terbalik tambahan saat Anda membuat kueri CSDS API untuk mendapatkan informasi konfigurasi. Ini adalah masalah umum.
Langkah selanjutnya
- Untuk menemukan informasi pemecahan masalah Traffic Director umum, lihat Memecahkan masalah deployment yang menggunakan Envoy.
- Untuk mengatasi masalah konfigurasi saat men-deploy layanan gRPC tanpa proxy, lihat Memecahkan masalah deployment yang menggunakan gRPC tanpa proxy.