Ingress L7透传客户端IP

Ingress-Nginx 默认会通过 X-Forward-ForX-Real-IP 来透传客户端 IP,但是当客户端主动在请求头里指定了 X-Forward-ForX-Real-IP ,会导致服务端获取不到真实的客户端 IP
执行以下命令,开启 kube-system/nginx-configuration configmap的以下配置可实现 Ingress L7 透传客户端 IP

compute-full-forwarded-for: "true"
forwarded-for-header: "X-Forwarded-For"
use-forwarded-headers: "true"
log-format-upstream: >-
    $remote_addr - [$remote_addr] - $remote_user [$time_local] "$request"
    $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length
    $request_time [$proxy_upstream_name] $upstream_addr
    $upstream_response_length $upstream_response_time $upstream_status $req_id
    $host [$proxy_alternative_upstream_name] $proxy_add_x_forwarded_for -
    [$proxy_add_x_forwarded_for]

Configmap - Ingress-Nginx Controller

Kubernetes 中,可以通过配置 Ingress 控制器的注解来实现基于客户端 IP 的会话保持(Session Affinity),即使用 IP 哈希算法进行负载均衡。这种机制可以确保来自同一个客户端 IP 的请求始终被路由到同一个后端服务实例上。 实现该功能的核心配置是通过设置 Ingress 资源的注解 `nginx.ingress.kubernetes.io/load-balance` 为 `"ip_hash"`。这一配置适用于基于 NginxIngress 控制器,例如 [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/)。 以下是一个典型的 Ingress 配置示例: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/load-balance: "ip_hash" spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80 ``` 在上述配置中,`annotations` 部分启用了基于客户端 IP 的哈希负载均衡策略。当客户端首次访问服务时,Nginx Ingress 控制器将客户端 IP 地址进行哈希计算,并根据哈希值选择一个后端 Pod。在后续请求中,相同的客户端 IP 会始终被路由到相同的 Pod 上,从而实现会话保持。 需要注意的是,IP 哈希策略的负载均衡效果依赖于客户端 IP 的分布情况。如果客户端 IP 集中度较高,可能会导致后端 Pod 的负载不均衡。此外,如果后端 Pod 数量发生变化(如扩容或缩容),哈希环的重新分布可能会导致部分客户端被重新分配到新的 Pod 上。 为了进一步优化会话保持的效果,可以结合其他机制,例如: - **健康检查**:确保后端 Pod 始终处于健康状态,避免因 Pod 故障导致会话中断。 - **持久化会话**:在某些场景下,还可以结合 Cookie-based 会话保持机制,以提供更灵活的会话管理方式。 通过合理配置 Ingress 控制器和后端服务,可以有效提升系统的可用性和用户体验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值