Pemecahan masalah pengaturan App Mesh - AWS App Mesh

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

Pemecahan masalah pengaturan App Mesh

Topik ini merinci masalah umum yang mungkin Anda alami dengan penyiapan App Mesh.

Tidak dapat menarik gambar wadah Utusan

Gejala

Anda menerima pesan galat berikut dalam tugas Amazon ECS. ID akun Amazon ECR dan Wilayah dalam pesan berikut mungkin berbeda, tergantung pada repositori Amazon ECR tempat Anda menarik gambar kontainer.

CannotPullContainerError: Error response from daemon: pull access denied for 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy, repository does not exist or may require 'docker login'

Penyelesaian

Kesalahan ini menunjukkan bahwa peran eksekusi tugas yang digunakan tidak memiliki izin untuk berkomunikasi ke Amazon ECR dan tidak dapat menarik gambar wadah Envoy dari repositori. Peran eksekusi tugas yang ditetapkan ke tugas Amazon ECS Anda memerlukan kebijakan IAM dengan pernyataan berikut:

{ "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-west-2:111122223333:repository/aws-appmesh-envoy", "Effect": "Allow" }, { "Action": "ecr:GetAuthorizationToken", "Resource": "*", "Effect": "Allow" }

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWSSupport.

Tidak dapat terhubung ke layanan manajemen App Mesh Envoy

Gejala

Proxy Utusan Anda tidak dapat terhubung ke layanan manajemen Utusan App Mesh. Anda melihat:

  • Koneksi ditolak kesalahan

  • Batas waktu koneksi

  • Kesalahan saat menyelesaikan titik akhir layanan manajemen Utusan App Mesh

  • kesalahan gRPC

Penyelesaian

Pastikan proxy Utusan Anda memiliki akses ke internet atau ke titik akhir VPC pribadi dan grup keamanan Anda mengizinkan lalu lintas keluar di port 443. Titik akhir layanan manajemen Utusan publik App Mesh mengikuti format nama domain (FQDN) yang sepenuhnya memenuhi syarat.

# App Mesh Production Endpoint appmesh-envoy-management.Region-code.amazonaws.com # App Mesh Preview Endpoint appmesh-preview-envoy-management.Region-code.amazonaws.com

Anda dapat men-debug koneksi Anda ke EMS menggunakan perintah di bawah ini. Ini mengirimkan permintaan gRPC yang valid namun kosong ke Layanan Manajemen Utusan.

curl -v -k -H 'Content-Type: application/grpc' -X POST https://appmesh-envoy-management.Region-code.amazonaws.com:443/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources

Jika Anda menerima pesan ini kembali, koneksi Anda ke Layanan Manajemen Utusan berfungsi. Untuk men-debug kesalahan terkait gRPC, lihat kesalahan di Utusan yang terputus dari layanan manajemen App Mesh Envoy dengan teks kesalahan.

grpc-status: 16 grpc-message: Missing Authentication Token

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWSSupport.

Utusan terputus dari layanan manajemen App Mesh Envoy dengan teks kesalahan

Gejala

Proxy Envoy Anda tidak dapat terhubung ke layanan manajemen App Mesh Envoy dan menerima konfigurasinya. Log proxy Envoy Anda berisi entri log seperti berikut ini.

gRPC config stream closed: gRPC status code, message

Penyelesaian

Dalam kebanyakan kasus, bagian pesan dari log harus menunjukkan masalah. Tabel berikut mencantumkan kode status gRPC paling umum yang mungkin Anda lihat, penyebabnya, dan resolusinya.

kode status gRPC Penyebab Penyelesaian
0 Pemutusan hubungan yang anggun dari layanan manajemen Utusan. Tidak ada masalah. App Mesh terkadang memutus proxy Envoy dengan kode status ini. Utusan akan terhubung kembali dan terus menerima pembaruan.
3 Endpoint mesh (virtual node atau virtual gateway), atau salah satu sumber daya yang terkait, tidak dapat ditemukan. Periksa kembali konfigurasi Envoy Anda untuk memastikan bahwa ia memiliki nama yang sesuai dari sumber daya App Mesh yang diwakilinya. Jika resource App Mesh Anda terintegrasi dengan AWS sumber daya lain, seperti AWS Cloud Map ruang nama atau sertifikat ACM, pastikan sumber daya tersebut ada.
7 Proxy utusan tidak berwenang untuk melakukan tindakan, seperti terhubung ke layanan manajemen utusan, atau mengambil sumber daya terkait. Pastikan Anda membuat kebijakan IAM yang memiliki pernyataan kebijakan yang sesuai untuk App Mesh dan layanan lainnya dan lampirkan kebijakan tersebut ke pengguna IAM atau peran yang digunakan proxy Utusan Anda untuk terhubung ke layanan manajemen Utusan.
8 Jumlah proxy Utusan untuk resource App Mesh tertentu melebihi kuota layanan tingkat akun. Lihat App Mesh kuota layanan App Mesh Mesh Jaring Aplikasi informasi tentang kuota akun default dan cara meminta kenaikan kuota.
16 Proxy Envoy tidak memiliki kredensyal otentikasi yang valid untuk. AWS Pastikan bahwa Utusan memiliki kredensyal yang sesuai untuk terhubung ke AWS layanan melalui pengguna atau peran IAM. Masalah yang diketahui, #24136, di Utusan untuk versi v1.24 dan sebelumnya gagal mengambil kredensyal jika proses Envoy menggunakan lebih dari deskriptor file. 1024 Ini terjadi ketika Utusan melayani volume lalu lintas tinggi. Anda dapat mengonfirmasi masalah ini dengan memeriksa log Utusan di tingkat debug untuk teks "”. A libcurl function was given a bad argument Untuk mengurangi masalah ini, tingkatkan ke versi Envoy atau yang lebih baru. v1.25.1.0-prod

Anda dapat mengamati kode status dan pesan dari proxy Utusan Anda dengan Amazon CloudWatch Insights menggunakan kueri berikut:

filter @message like /gRPC config stream closed/ | parse @message "gRPC config stream closed: *, *" as StatusCode, Message

Jika pesan kesalahan yang diberikan tidak membantu, atau masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah.

Pemeriksaan kesehatan wadah utusan, pemeriksaan kesiapan, atau penyelidikan keaktifan gagal

Gejala

Proxy Envoy Anda gagal dalam pemeriksaan kesehatan dalam tugas Amazon ECS, instans Amazon EC2, atau pod Kubernetes. Misalnya, Anda menanyakan antarmuka administrasi Utusan dengan perintah berikut dan menerima status selain. LIVE

curl -s http://my-app.default.svc.cluster.local:9901/server_info | jq '.state'

Penyelesaian

Berikut ini adalah daftar langkah-langkah remediasi tergantung pada status yang dikembalikan oleh proxy Utusan.

  • PRE_INITIALIZINGatau INITIALIZING — Proxy Envoy belum menerima konfigurasi, atau tidak dapat menghubungkan dan mengambil konfigurasi dari layanan manajemen App Mesh Envoy. Utusan mungkin menerima kesalahan dari layanan manajemen utusan ketika mencoba untuk terhubung. Untuk informasi selengkapnya, lihat kesalahan diUtusan terputus dari layanan manajemen App Mesh Envoy dengan teks kesalahan.

  • DRAINING— Proxy utusan telah mulai menguras koneksi sebagai tanggapan /drain_listeners atas permintaan /healthcheck/fail atau pada antarmuka administrasi Utusan. Kami tidak menyarankan untuk menjalankan jalur ini pada antarmuka administrasi kecuali Anda akan menghentikan tugas Amazon ECS, instans Amazon EC2, atau pod Kubernetes.

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWSSupport.

Pemeriksaan kesehatan dari penyeimbang beban ke titik akhir mesh gagal

Gejala

Titik akhir mesh Anda dianggap sehat oleh pemeriksaan kesehatan kontainer atau probe kesiapan, tetapi pemeriksaan kesehatan dari penyeimbang beban ke titik akhir mesh gagal.

Penyelesaian

Untuk mengatasi masalah ini, selesaikan tugas-tugas berikut.

  • Pastikan bahwa grup keamanan yang terkait dengan titik akhir mesh Anda menerima lalu lintas masuk pada port yang telah Anda konfigurasi untuk pemeriksaan kesehatan Anda.

  • Pastikan bahwa pemeriksaan kesehatan berhasil secara konsisten ketika diminta secara manual; misalnya, dari host benteng dalam VPC Anda.

  • Jika Anda mengonfigurasi pemeriksaan kesehatan untuk node virtual, maka kami sarankan untuk menerapkan titik akhir pemeriksaan kesehatan di aplikasi Anda; misalnya, /ping untuk HTTP. Ini memastikan bahwa proxy Envoy dan aplikasi Anda dapat dirutekan dari penyeimbang beban.

  • Anda dapat menggunakan jenis penyeimbang beban elastis apa pun untuk simpul virtual, tergantung pada fitur yang Anda butuhkan. Untuk informasi selengkapnya, lihat fitur Elastic Load Balancing.

  • Jika Anda mengonfigurasi pemeriksaan kesehatan untuk gateway virtual, maka sebaiknya gunakan penyeimbang beban jaringan dengan pemeriksaan kesehatan TCP atau TLS pada port pendengar gateway virtual. Ini memastikan bahwa pendengar gateway virtual di-bootstrap dan siap menerima koneksi.

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWSSupport.

Gateway virtual tidak menerima lalu lintas di port 1024 atau kurang

Gejala

Gateway virtual Anda tidak menerima lalu lintas di port 1024 atau kurang, tetapi menerima lalu lintas pada nomor port yang lebih besar dari 1024. Misalnya, Anda menanyakan statistik Utusan dengan perintah berikut dan menerima nilai selain nol.

curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "update_rejected"

Anda mungkin melihat teks yang mirip dengan teks berikut di log Anda yang menjelaskan kegagalan untuk mengikat ke port istimewa:

gRPC config for type.googleapis.com/envoy.api.v2.Listener rejected: Error adding/updating listener(s) lds_ingress_0.0.0.0_port_<port num>: cannot bind '0.0.0.0:<port num>': Permission denied

Penyelesaian

Untuk mengatasi masalah ini, pengguna yang ditentukan untuk gateway harus memiliki kemampuan linuxCAP_NET_BIND_SERVICE. Untuk informasi selengkapnya, lihat Capabilities in the Linux Programmer's Manual, parameter Linux dalam parameter definisi Tugas ECS, dan Menetapkan kapabilitas untuk sebuah container dalam dokumentasi Kubernetes.

penting

Fargate harus menggunakan nilai port yang lebih besar dari 1024.

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWSSupport.