Büyük ölçekli mikroservis ortamlarında, Envoy proxy'nin Transport Layer Security (TLS) işlemlerini hızlandırmak için Multi-Buffer özelliğini etkinleştirebilirsiniz. Bu özellik, veri paketlerinin şifreleme ve çözme işlemlerini hızlandırarak yüksek hacimli eşzamanlı HTTPS isteklerini verimli bir şekilde işler, ağ gecikmesini azaltır ve sistem aktarım hızı ile güvenliğini artırır.
Ön koşullar
Sürüm 1,10 veya üzeri bir ASM Enterprise Edition ya da Ultimate Edition örneği oluşturmuş olmanız gerekir. Talimatlar için bkz. ASM örneği oluşturma.
-
Bir ACK kümesi oluşturmuş olmanız gerekir. Kümedeki düğümler, Multi-Buffer'ı destekleyen Intel Ice Lake CPU mimarisine dayalı bir örnek ailesi kullanmalıdır. Talimatlar için bkz. ACK yönetilen kümesi oluşturma.
Arka plan bilgileri
Ağ güvenliği teknolojisi geliştikçe TLS, ağ iletişiminin temel bir unsuru haline gelmiştir. Bir TLS oturumu el sıkışma ve veri aktarımı olmak üzere iki ana aşamadan oluşur. El sıkışma sırasında, paylaşılan bir oturum anahtarını belirlemek için asimetrik şifreleme kullanılır. Veri aktarımı sırasında ise iletilen verileri güvence altına almak için bu anahtarı kullanan simetrik şifreleme devreye girer.
Mikroservis mimarisinde Envoy, hem bir giriş ağ geçidi hem de bir sidecar proxy olarak çalışır ve büyük miktarda TLS isteğini işler. El sıkışma aşamasında gereken asimetrik kriptografi CPU yoğun bir işlemdir ve büyük ölçekli dağıtımlarda bir performans darboğazına neden olabilir. ASM, Envoy'daki TLS işlemeyi hızlandırmak için Intel'in Multi-Buffer teknolojisiyle entegre olur.
Multi-Buffer teknolojisi, birden fazla bağımsız kriptografik arabelleği aynı anda işlemek için Intel CPU AVX-512 komut setini kullanır. Bu sayede birden fazla şifreleme ve çözme işlemi tek bir yürütme döngüsünde tamamlanarak verimlilik önemli ölçüde artar. Bu özellik için ek donanıma gerek yoktur; yalnızca belirli bir komut setine sahip bir CPU yeterlidir. Alibaba Cloud'un Ice Lake işlemcileri en yeni AVX-512 komut setiyle donatılmıştır.
Yordam
Yöntem 1: Genel olarak etkinleştirme
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
Base Information sayfasında sağ taraftaki Settings öğesini tıklayın.
-
Settings Update panelinde Enable MultiBuffer-based TLS encryption and decryption performance optimization seçeneğini işaretleyin ve OK düğmesini tıklayın.
g7 genel amaçlı örnek ailesinden düğümler kullanıyorsanız, Multi-Buffer'ı etkinleştirmek saniye başına sorgu (QPS) sayısını %75'e kadar artırabilir. ECS Bare Metal Instance düğümleri kullanıldığında performans kazancı daha da yüksektir.
Yöntem 2: Ağ geçidi düzeyinde etkinleştirme
Yeni bir ASM ağ geçidi için
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
-
Ingress Gateway sayfasında Create düğmesini tıklayın. Create sayfasının Advanced Options bölümünde TLS performance optimization seçeneğini işaretleyin, ilgili ayarları yapılandırın ve ardından Create düğmesini tıklayın.
Parametreler hakkında daha fazla bilgi için bkz. Giriş ağ geçidi oluşturma.
Parameter
Description
supported nodeaffinity
Düğüm etiketlerine göre performans optimizasyonu için düğümleri seçer.
Poll Delay(ms)Genellikle bu parametreyi ayarlamanız gerekmez.
Multi-Buffer, birden fazla kriptografik işlemi toplu işler halinde işler. Örneğin, sekiz işlemden oluşan bir toplu işi işlemek üzere yapılandırılırsa, yürütmeden önce sekiz istek kuyruğa alınana kadar bekler. İstek hacmi yüksekse toplu iş hızlıca dolar. Hacim düşükse bekleme süresi uzun olabilir. Bir anket gecikmesi ayarlamak, Multi-Buffer'ı toplu iş dolu olmasa bile şu anda kuyruktaki istekleri işlemeye zorlayarak düşük hacimli trafik için bekleme süresini azaltır.
Mevcut bir ASM ağ geçidi için
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
-
Parametreler hakkında daha fazla bilgi için bkz. Giriş ağ geçidi oluşturma.
Ingress Gateway sayfasında hedef ağ geçidinin adını tıklayın. sayfasında Advanced Options bölümünü bulun. Performance Optimization yanındaki
simgesini tıklayın, TLS performance optimization seçeneğini işaretleyin, parametreleri yapılandırın ve ardından Submit düğmesini tıklayın.
Parameter
Description
supported nodeaffinity
Düğüm etiketlerine göre performans optimizasyonu için düğümleri seçer.
Poll Delay(ms)Genellikle bu parametreyi ayarlamanız gerekmez.
Multi-Buffer, birden fazla kriptografik işlemi toplu işler halinde işler. Örneğin, sekiz işlemden oluşan bir toplu işi işlemek üzere yapılandırılırsa, yürütmeden önce sekiz istek kuyruğa alınana kadar bekler. İstek hacmi yüksekse toplu iş hızlıca dolar. Hacim düşükse bekleme süresi uzun olabilir. Bir anket gecikmesi ayarlamak, Multi-Buffer'ı toplu iş dolu olmasa bile şu anda kuyruktaki istekleri işlemeye zorlayarak düşük hacimli trafik için bekleme süresini azaltır.
Yöntem 3: Pod düzeyinde etkinleştirme
Bu yöntem ASM sürüm 1,14,3 veya üzerini gerektirir. Örneğinizi yükseltmek için bkz. ASM örneğini yükseltme.
Pod'un Multi-Buffer'ı destekleyen bir düğüme zamanlandığından emin olun.
-
Pod'a belirli bir ek açıklama (annotation) ekleyin.
Aşağıda örnek bir ek açıklama gösterilmektedir:
proxy.istio.io/config: | privateKeyProvider: cryptomb: pollDelay: 10ms Değişikliklerin uygulanması için pod'u yeniden başlatın.
SSS
Desteklenmeyen düğümlerde Multi-Buffer etkinleştirilirse ne olur?
Envoy proxy bir uyarı günlüğe kaydeder ve Multi-Buffer özelliği etkili olmaz.
2021-11-09T15:24:03.269127Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269158Z info cache returned workload trust anchor from cache ttl=23h59m59.730845791s
2021-11-09T15:24:03.269177Z info proxyConfig: config_path:"/etc/istio/proxy" binary_path:"/usr/local/bin/envoy" service_cluster:"istio-ingressgateway" drain_duration:<seconds:45 > parent_shutdown_duration:<seconds:60 > discovery_address:"istiod.istio-system.svc:15012" proxy_admin_port:15000 control_plane_auth_policy:MUTUAL_TLS stat_name_length:189 concurrency:<> tracing:<zipkin:<address:"zipkin.istio-system:9411" > > proxy_metadata:<key:"DNS_AGENT" value:"" > status_port:15020 termination_drain_duration:<seconds:5 > multi_buffer:<enabled:true poll_delay:<nanos:20000000 > >
2021-11-09T15:24:03.269185Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269211Z info cache returned workload certificate from cache ttl=23h59m59.730792927s
2021-11-09T15:24:03.269223Z info pollDelay config: 20ms
2021-11-09T15:24:03.269456Z info sds SDS: PUSH resource=ROOTCA
2021-11-09T15:24:03.269589Z info sds SDS: PUSH resource=default
2021-11-09T15:24:03.270330Z warning envoy config gRPC config for type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret rejected: Multi-buffer CPU instructions not available.
2021-11-09T15:24:03.271696Z warn ads ADS:SDS: ACK ERROR router~172.18.96.137~istio-ingressgateway1-d7447cb55-khr8s.istio-system~istio-system.svc.cluster.local-2 Internal:Multi-buffer CPU instructions not available.
2021-11-09T15:24:04.309379Z info Initialization took 1.267025329s
2021-11-09T15:24:04.309416Z info Envoy proxy is ready
2021-11-09T15:24:04.458149Z warning envoy config gRPC config for type.googleapis.com/envoy.config.cluster.v3.Cluster rejected: Error adding/updating cluster(s) outbound|15021||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|80||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|443||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available.
Sürüm 1,10 veya üzeri ASM Enterprise Edition ve Ultimate Edition örnekleri, bu özellik için uyarlamalı bir kontrol sağlar. Bir hizmet veya ağ geçidi pod'u Intel Ice Lake modeli olmayan bir düğüme zamanlanırsa, kontrol düzlemi hızlandırma yapılandırmasını itmez ve TLS hızlandırma o pod için devre dışı kalır.
Bir düğüme Multi-Buffer nasıl eklenir ve etkinleştirilir?
Kubernetes kümenize yeni bir düğüm ekleyin. Düğüm, Intel Ice Lake CPU mimarisine dayalı bir örnek ailesinden bir örnek kullanmalıdır. Talimatlar için bkz. Mevcut düğümleri ekleme.
Yeni eklenen düğümde
multibuffer-support:trueetiketini ayarlayın. Daha fazla bilgi için bkz. Düğüm etiketlerini ve taint'leri yönetme.-
ASM ağ geçidi tanımınıza aşağıdaki YAML yapılandırmasını ekleyin. Talimatlar için bkz. ASM ağ geçidi için CRD alanları.
Bu işlem, ağ geçidi örneğinin yeni eklenen ve Multi-Buffer özellikli bir düğüme zamanlanmasını sağlamak için düğüm yakınlığı ekler.
affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: feature.node.kubernetes.io/mb-feature-enabled operator: In values: - 'true' weight: 1 -
ASM Enterprise Edition veya Ultimate Edition örneğiniz için Multi-Buffer özelliğini etkinleştirin. Talimatlar için bu konunun önceki bölümlerinde anlatılan yordamlara bakın.
Özelliği etkinleştirdikten sonra yeni düğüm, TLS işlemeyi hızlandırmak için Multi-Buffer'ı kullanabilir.
İlgili belgeler
ASM; hizmet keşfi kapsam belirleme, sidecar kaynak önerileri ve uyarlamalı yapılandırma itme optimizasyonu gibi özellikler sunar. Bu özellikler, kontrol düzleminin yapılandırma itme verimliliğini optimize eder ve sidecar'ların yapılandırma boyutunu azaltır. Daha fazla bilgi için bkz. Yapılandırma itme optimizasyonuna genel bakış.