alexzzh
alexzzh
- ngx_stream_upstream_check_module 在我们项目中测试发现存在的问题: - [内存泄漏,fail时须判断peer_shm[index].sockaddr != NULL并调用ngx_slab_free_locked(shpool, peer_shm[index].sockaddr)释放地址占用的共享内存空间](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1249) - [可能会复用正在删除的节点,delete值需要考虑为PEER_DELETING的情况](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1188) - [多余的判断,因为使用的是 || ,index >= check_ctx->peers_shm->max_number没意义,正常流时,反而会增加一次判断 ](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L361) - [应该返回共享内存数组下标(peer[i].index),而不是进程本地数组下标(i),这里会导致返回错误的节点甚至会引起崩溃(在我的项目中)。多进程时,每个进程本地数组节点顺序并不能保证一致,只有共享内存数组节点是一致的](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1311) - [访问共享内存时数据时没有加锁保护 1](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1514) - [访问共享内存时数据时没有加锁保护 2](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1484) - [共享内存锁(shpool->mutex)和节点锁存在使用混乱 1](https://github.com/alibaba/tengine/blob/master/modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c#L1370) - [共享内存锁(shpool->mutex)和节点锁存在使用混乱...
项目上需要使用主动健康检查功能而且可能需要结合第三方动态域名解析模块动态增删探测节点,而该模块不支持动态API且存在一些问题,所以新开发了[ngx_health_detect_module](https://github.com/alexzzh/ngx_health_detect_module/tree/master)并修复了发现的bug,该模块功能等同于ngx_healthcheck_module模块 + restful api动态增删探测节点功能(开关控制,可关闭) - 在我们项目中测试发现存在的问题在此处列出来仅供参考 - [连接失败时没有清理连接状态以及共享内存节点状态,需要调用ngx_stream_upstream_check_clean_event](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_stream_upstream_check_module.c#L714) - [此时应该显示的是共享内存数组index而不是进程本地数组Index,会造成每个进程返回的状态index不一致,i ==> peer[i].index](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_healthcheck_status.c#LL529C20-L529C20) - [共享内存名称每次都不一样,所以共享内存节点永远不会复用](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_http_upstream_check_module.c#L3523) - [探测方式为TCP时不能配置长短连接](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_http_upstream_check_module.c#L551) - [查询状态时参数index是共享内存数组的index,不应该和进程本地数组个数做对比,应该对比共享内存数组个数,也没有判断 peer[index].delete 是否为1过滤已删除节点](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_http_upstream_check_module.c#L787) - [没有先判断 peer[index].delete 标志过滤已删除节点](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_healthcheck_status.c#L416) - [访问共享内存时数据时没有加锁保护 1](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_http_upstream_check_module.c#L2265) - [访问共享内存时数据时没有加锁保护 1](https://github.com/zhouchangxun/ngx_healthcheck_module/blob/master/ngx_http_upstream_check_module.c#L2266)
Our project needs to use the proactive health detect function and may need to be combined with the thid-part dynamic domain name resolution module to dynamically adding or deleting upstream...
### Ⅰ. Describe what this PR did - 在 feat/istio-1.19.0 分支上 ,使得 gateway api支持配置`ssl cipher suites `以及 `ssl protocol version` ### Ⅱ. Does this pull request fix one issue? -...
## Why do you need it? 项目中需要使用gateway api,同时网关需要完成和客户端之间的tls卸载以及验证客户端证书(mtls) ## How could it be? ## what we want 使用 gateway api时,可以为不同的监听端口指定验证客户端的证书,形如: ``` apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: higress-gateway namespace: higress-system...
### Ⅰ. Describe what this PR did - 可以控制"控制平面"是否忽略`主动`向数据平面推送配置的请求 - 默认允许推送,不改变原来的行为 - 在 `mesh config`中增加全局变量 ``` % cat mesh accessLogEncoding: TEXT configSources: - address: xds://192.168.199.123:15051 - address: k8s:// defaultConfig: discoveryAddress:...
## Why do you need it? - 在需要`极高稳定性`的客户环境下,客户"强制"规定在某个时间范围不允许进行配置变更,此时不能假设此阶段不会有人(误)操作或者控制平面一定不会推送配置,故需要软件层增加一种"protect"机制,从技术层面切断控制平面主动向数据平面推送的路径。 ## How could it be? - 方案1: [PR](https://github.com/alibaba/higress/pull/912) - 方案2: [PR](https://github.com/alibaba/higress/pull/888) - 废弃 - 考虑到higress controller 类似于mcp server,会识别全局配置 configmap(envoyfilter)、 ingress资源、 wasmplugin资源转换成istio 的crd,并基于mcp-over-xds协议通过xDS...
## Why do you need it? - 使用gateway api 在 Gateway 资源中增加多个listener端口时,需要同时修改higress-gateway的service的ports字段,中添加对应端口,才能访问成功 - 希望将来higress全面支持gateway api时,这两个增加端口的操作可以联动,不需要二次操作 ## How could it be? - 希望将来higress全面支持gateway api时,这两个增加端口的操作可以联动,不需要二次操作 ## Other related information
## Why do you need it? 使用gateway api时,用户现场要求支持双栈 ## How could it be? - 数据平面envoy有两种配置方式可以达到该需求 - 方式1: 同一个listener,同一个端口,支持配置多地址,一个ipv4,一个ipv6 - 方式2: 使用两个listener,同一个端口,一个listener配置ipv4地址,一个listener配置ipv6地址 - 使用gateway api时,控制平面配置? ## Other related information Add any...