通过Hash_On_Header实现多个Konga实例会话保持

1. 背景

  • Kong和Konga运行在K8S集群中
  • Kong版本为0.14.1(用于Konga服务暴露)
  • Konga版本为0.13.0
  • Konga当前版本创建hash_on_header方式的Upstream负载均衡存在BUG
  • 通过Upstream负载均衡中提供的hash_on_header方式,来实现会话保持

2. 配置内容

2.1 创建Upstream负载均衡

注意:hash_on和hash_fallback选择默认值none,当hash_on选择header时,保存会提示错误(原因为当前Konga版本存在BUG)

通过Hash_On_Header实现多个Konga实例会话保持_第1张图片

2.2 开启Hash_On_Header

登录Kong-Pod内,执行下面命令开启基于Header实现的会话保持(当前Konga版本页面不支持,只能通过adminAPI接口方式来设置)

curl -i -X PATCH \
--url http://localhost:8001/upstreams/konga/ \
--data 'hash_on=header' \
--data 'hash_on_header=konga'

2.3 添加Target

注意:Targets后端地址如使用K8S-Service域名,必须是Headless-Service类型

通过Hash_On_Header实现多个Konga实例会话保持_第2张图片

2.4 创建Service

注意:Url填写内容host部分如果是upstream负载均衡名称,则端口可以忽略

通过Hash_On_Header实现多个Konga实例会话保持_第3张图片

2.5 添加Plugin

通过Hash_On_Header实现多个Konga实例会话保持_第4张图片

通过Hash_On_Header实现多个Konga实例会话保持_第5张图片

2.6 添加Route

通过Hash_On_Header实现多个Konga实例会话保持_第6张图片

3. 测试与验收

  • 开启会话保持前,konga页面中socketjs请求出现很多400状态码
  • 开启会话保持后,konga页面中所有socketjs请求都返回200状态码
  • 开启会话保持后,Kibana日志查询平台统计konga.abc.com域名访问请求,数据显示转发都是同一个Pod-IP

你可能感兴趣的:(kong,kubernetes)