nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)

CLB方式:
1.新建一个ipv6的clb,绑定给nginx ingress,可以直接通过svc yaml来实现

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: ipv6
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: 'http:80'    #这条很重要
  name: nginx-ingress-lb-ipv6
  namespace: kube-system
  labels:
    app: nginx-ingress-lb-ipv6
spec:
  ports:
    - name: tcp-80-80
      port: 80
      protocol: TCP
      targetPort: 80
    - name: tcp-443-443
      port: 443
      protocol: TCP
      targetPort: 443
  selector:
    app: ingress-nginx    
  type: LoadBalancer

创建成功以后效果如图
image.png
2.修改nginx ingress的configmap
kubectl -n kube-system edit cm nginx-configuration
在data模块下添加:

compute-full-forwarded-for: "true"
forwarded-for-header: "X-Forwarded-For"
use-forwarded-headers: "true"

效果如图:

image.png
3.测试效果
创建好ingress路由
image.png

在本地修改hosts,将预期域名解析到ipv6地址
image.png
本地测试
image.png

ingress日志:
image.png
NLB方式:
1.新建一个NLB实例给nginx ingress controller(注意这个必须要求集群所在vpc及交换机是支持双栈ipv6的,这里测试的ack集群也是ipv6双栈集群,ipv4的ack集群在双栈vpc下能否实现没有测试)

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: DualStack
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: 'off'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: 'on'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: >-
      cn-chengdu-b:vsw-2vcqjq0tcvvxxxx,cn-chengdu-a:vsw-2vcm16t55w3ycysxxxxx
  name: nginx-ingress-nlb-ipv6
  namespace: kube-system
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: ingress-nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

效果如图:
image.png
2.修改nginx ingress的configmap
在data模块下添加:
use-proxy-protocol: 'true'
效果如图:
image.png
3.测试效果
创建好ingress路由
image.png

修改本地hosts,将域名解析到nlb的ipv6地址上
nlb ipv6地址获取如图
image.png
修改本地hosts
image.png
访问测试:
image.png
image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
64 5
|
13天前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
30天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
1月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
76 0
|
19天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
156 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
244 3
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
136 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1643 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
35 0
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
213 0
下一篇
无影云桌面