gRPC adalah framework open-source berkinerja tinggi untuk remote procedure call (RPC). Saat menggunakan gRPC untuk komunikasi layanan backend, Anda dapat memanfaatkan Application Load Balancer (ALB) guna melakukan load balancing terhadap trafik gRPC dan menyediakan ingress terpadu. gRPC berkomunikasi melalui protokol HTTP/2, dan ALB mendukung penerusan trafik ke kelompok server backend gRPC melalui pendengar HTTPS.
Informasi latar belakang
gRPC adalah framework open-source berkinerja tinggi untuk remote procedure call. Framework ini menggunakan Protocol Buffers sebagai Interface Definition Language (IDL)-nya dan berkomunikasi melalui HTTP/2.
gRPC mengatasi tantangan komunikasi lintas bahasa antar layanan. IDL-nya menghasilkan kode secara otomatis untuk mendefinisikan dan memanggil layanan jarak jauh. Dengan memanfaatkan pengkodean biner dan multiplexing HTTP/2, gRPC menawarkan kinerja tinggi, latensi rendah, serta transfer data yang efisien.
gRPC cocok untuk arsitektur layanan mikro, komunikasi lintas bahasa, dan sistem terdistribusi skala besar. Framework ini mendukung panggilan unary, streaming permintaan-respons, serta streaming dua arah.
Untuk informasi lebih lanjut tentang gRPC, lihat dokumentasi resmi gRPC.
Skenario
Sebuah perusahaan menerapkan layanan gRPC di dalam virtual private cloud (VPC) di wilayah China (Hangzhou). Di dalam VPC tersebut, sebuah instans ALB dan kelompok server yang mendukung gRPC telah diterapkan. Instans ALB dikonfigurasi dengan pendengar HTTPS yang mengaktifkan HTTP/2, dan kelompok server dikonfigurasi dengan pemeriksaan kesehatan gRPC.
Klien perlu mengakses layanan gRPC yang diterapkan di VPC melalui instans ALB.
Prasyarat
-
Anda telah membuat instans ALB. Untuk informasi selengkapnya, lihat Create and manage an ALB instance.
-
Anda telah menyiapkan server backend dan menerapkan layanan gRPC pada server tersebut. Untuk panduan penerapan, lihat dokumentasi resmi gRPC.
-
Anda telah mendaftarkan nama domain dan menyelesaikan Pendaftaran ICP yang diperlukan. Untuk informasi selengkapnya, lihat Register an Alibaba Cloud domain name dan ICP filing process.
-
Anda telah membeli Sertifikat SSL atau mengunggah sertifikat pihak ketiga ke Certificate Management Service. Sertifikat tersebut harus dikaitkan dengan nama domain Anda. Untuk informasi selengkapnya tentang cara membuat sertifikat, lihat Enable HTTPS access for a web service by using a commercial certificate.
Langkah 1: Buat kelompok server
-
Masuk ke Konsol ALB.
-
Pada bilah navigasi atas, pilih wilayah tempat instans ALB diterapkan.
-
Pada panel navigasi kiri, pilih .
-
Pada halaman Server Groups, klik Create Server Group.
-
Pada kotak dialog Create Server Group, konfigurasikan parameter berikut dan klik Create.
Dokumen ini hanya menjelaskan parameter yang relevan dengan skenario ini. Untuk parameter lainnya, gunakan nilai default atau sesuaikan sesuai kebutuhan.
Parameter
Deskripsi
Server Group Type
Pilih tipe kelompok server. Pada contoh ini, dipilih Server.
VPC
Pilih VPC dari instans ALB Anda. Hanya server dalam VPC ini yang dapat ditambahkan ke kelompok server.
Backend Protocol
Pada contoh ini, pilih gRPC.
Health Check
Aktifkan fitur ini.
Health Check Settings
Klik Modify dan konfigurasikan pengaturan pemeriksaan kesehatan:
-
Health Check Protocol: Pada contoh ini, pilih gRPC.
-
Health Check Method: Pada contoh ini, pilih POST.
-
Health Check Status Codes: Pilih kode status yang menunjukkan respons sehat. Kode ini harus sesuai dengan kode status yang dikembalikan oleh layanan gRPC Anda. Pada contoh ini, kode statusnya adalah
12.
-
-
Pada halaman Server Groups, temukan kelompok server yang telah Anda buat dan klik ID-nya.
-
Klik tab Backend Servers, lalu klik Add Backend Server.
-
Pada panel Add Backend Server, pilih instans ECS yang telah Anda buat dan klik Next.
-
Pada langkah Ports/Weights, atur port dan bobot untuk setiap instans ECS, lalu klik OK.
CatatanPort yang dikonfigurasi untuk instans ECS harus sesuai dengan port yang digunakan oleh layanan gRPC. Pastikan juga aturan security group untuk instans tersebut mengizinkan trafik pada port ini.
Langkah 2: Konfigurasikan pendengar HTTPS
-
Masuk ke Konsol Application Load Balancer (ALB).
-
Pada bilah navigasi atas, pilih wilayah tempat instans Anda diterapkan.
-
Pada panel navigasi kiri, klik Instances.
-
Pada halaman Instances, temukan instans yang ingin Anda kelola dan klik Create Listener pada kolom Actions.
-
Pada halaman Configure Listener, konfigurasikan parameter berikut. Gunakan nilai default untuk parameter lainnya atau sesuaikan sesuai kebutuhan. Lalu, klik Next.
Parameter
Deskripsi
Listener Protocol
Pilih HTTPS.
Listener Port
Pada contoh ini, digunakan port 443.
CatatanJika protokol backend kelompok server diatur ke gRPC, protokol pendengar harus HTTPS, dan HTTP/2.0 harus diaktifkan.
-
Pada halaman Configure SSL Certificate, konfigurasikan parameter berikut. Gunakan nilai default untuk parameter lainnya atau sesuaikan sesuai kebutuhan. Lalu, klik Next.
Parameter
Deskripsi
Server Certificate
Pilih Sertifikat SSL yang telah disiapkan.
-
Pada halaman Select Server Group, konfigurasikan parameter berikut. Gunakan nilai default untuk parameter lainnya atau sesuaikan sesuai kebutuhan. Lalu, klik Next.
Parameter
Deskripsi
Server Group
Pilih kelompok server gRPC yang telah Anda buat.
-
Pada halaman Configuration Review, periksa konfigurasi. Jika konfigurasi sudah benar, klik Submit dan tunggu hingga pendengar berhasil dibuat.
Langkah 3: Konfigurasikan resolusi DNS
Untuk lingkungan produksi, kami merekomendasikan untuk memetakan nama domain kustom ke nama domain instans ALB dengan membuat Rekaman CNAME.
Pada panel navigasi kiri, pilih .
Pada halaman Instances, salin nama DNS dari instans ALB yang telah dibuat.
Ikuti langkah-langkah berikut untuk menambahkan Rekaman CNAME.
CatatanJika nama domain Anda didaftarkan melalui penyedia selain Alibaba Cloud, Anda harus menambahkan nama domain tersebut ke konsol DNS Alibaba Cloud sebelum dapat mengonfigurasi resolusi DNS. Untuk informasi selengkapnya, lihat Manage domain names. Jika nama domain Anda didaftarkan melalui Alibaba Cloud, lanjutkan ke langkah berikut.
Masuk ke Konsol DNS Alibaba Cloud.
Pada halaman Public Zone, temukan nama domain target, lalu klik Settings pada kolom Operations.
Pada halaman Settings, klik Add Record.
Pada panel Add Record, konfigurasikan Rekaman CNAME dengan mengatur parameter berikut, lalu klik OK.
Parameter
Deskripsi
Record Type
Pilih CNAME dari daftar drop-down.
Hostname
Awalan nama domain Anda. Tutorial ini menggunakan @.
CatatanUntuk menggunakan domain root, atur hostname menjadi
@.Query Source
Pilih Default.
Record Value
Masukkan nama DNS dari instans ALB yang telah Anda salin.
TTL
Time to live (TTL) adalah durasi penyimpanan cache catatan DNS pada server DNS. Gunakan nilai default.
Langkah 4: Verifikasi konektivitas
Setelah menyelesaikan langkah-langkah di atas, klien dapat mengakses layanan gRPC melalui ALB. Gunakan alat seperti grpcurl untuk menguji konektivitas.
Anda tidak dapat langsung mengakses layanan gRPC dari browser web. Kami merekomendasikan penggunaan alat seperti grpcurl untuk menguji konektivitas.
Pada klien, jalankan perintah grpcurl -insecure -v <Nama domain>:<Port pendengar> <Nama layanan gRPC>/<Metode> untuk mengakses layanan gRPC pada instans ECS.
Tanggapan yang mirip dengan berikut ini menegaskan bahwa klien dapat mengakses layanan gRPC melalui ALB.
[root@iZbp1xxx.0Z ~]# grpcurl -insecure -v xxx.com:443 helloworld.Greeter/SayHello
Resolved method descriptor:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
Request metadata to send:
(empty)
Response headers received:
accept-encoding: identity,gzip
content-type: application/grpc
date: Mon, 04 Jul 2022 08:53:01 GMT
grpc-accept-encoding: identity,deflate,gzip
vary: Accept-Encoding
Response contents:
{
"message": "remoteip:47.xxx.xxx.195 x-forwarded-for:47.xxx.xxx.xx5 user-agent:grpcurl/v1.8.0 grpc-go/1.30.0 hostname:iZbp12xxx0kZ server addr:192.168.1.239 "
}
Response trailers received:
(empty)
Sent 0 requests and received 1 response
Dokumen terkait
-
Untuk informasi selengkapnya tentang parameter dan pertimbangan untuk pendengar HTTPS, lihat Add an HTTPS listener.
-
Untuk informasi selengkapnya tentang parameter dan pertimbangan untuk kelompok server, lihat Create and manage server groups.
-
Untuk informasi selengkapnya tentang parameter dan pertimbangan untuk pemeriksaan kesehatan, lihat ALB health checks.