Istio ingressgateway健康检查(阿里SLB检查)
https证书的设置位置可以有很多种,比如云SLB、Nginx、K8s Ingress、Istio Ingressgateway,公司原运维人员总喜欢把证书挂载Nginx上,即:SLB->Nginx https -> K8s Ingress或SLB -> Nginx https -> Istio Ingressgateway#mermaid-svg-q9DFPz8TEYVX
参考:
阿里云 - 健康检查概述
阿里云 - 使用SLB部署HTTPS业务(单向认证)
Github - Istio ingress-gateway support for health check #9385
https证书挂载
Istio Ingressgateway的健康检查是由一次Https证书切换引出的,先简单介绍Https证书的挂载位置。
https证书的设置位置可以有很多种,比如云SLB、Nginx、K8s Ingress、Istio Ingressgateway,公司原运维人员总喜欢把证书挂载Nginx上,即:
而K8s Ingress和Istio Ingressgateway也都可以挂载证书,即:
但其实最推荐的方式还是把Https证书挂载到SLB上,减少代理层数提高通信效率(移除Nginx)且将Https验证交给SLB(降低应用集群格外的https验证负载)
而这次切换则将Https证书挂载到SLB上,以阿里云为例,效果如下:
即将SLB上443端口的流量都引入Istio Ingressgateway对应http端口,在SLB终结ssl的验证,而后SLB与后端服务通过http进行通信,以提供系统性能。
Istio Ingressgateway健康检查
在SLB将端口流量转发到后端服务器时,推荐的方式是提供后端服务的健康检查(配置健康检查能够让负载均衡自动排除健康状况异常的后端服务器),而此处将443端口的流量都转发到了Istio ingressgateway,而ingressgateway如何进行健康检查呢?
例如后端服务器组为
192.168.1.10:30080
192.168.1.11:30080
192.168.1.12:30080
而阿里SLB https协议只支持http形式(get | head)的健康检查(不支持tcp式的端口探测),如下图:
查看Istio Ingressgateway deployment配置会发现,其内部暴露–statusPort端口,且支持readiness检查
而SLB想利用这个httpGet检查,就需要将–statusPort 15020这个端口通过NodePort的方式暴露出来,进而查看istio-ingressgateway service定义发现istio在安装时已将该15020端口暴露为NodePort 3xxxx。
最终我们只需要在SLB配置对istio-ingressgateway service中暴露的NodePort进行健康检查即可,配置如下:
完成
更多推荐
所有评论(0)