xxl-job / xxl-job-executor-go

xxl-job 执行器(golang 客户端)
MIT License
431 stars 105 forks source link

feat(executor): 新增了执行器可以自定义监听地址的参数 #28

Closed Luckyboys closed 2 years ago

Luckyboys commented 2 years ago

在 Istio 中,如果监听地址使用本机地址,会导致流量无法转发到执行器服务。 但是如果把 0.0.0.0 作为执行器地址传入,最终通知到 XXL-Job 调度服务会使用 0.0.0.0 的 IP 进行调度,导致无法调度成功。

因此需要把监听地址和调度地址进行配置上的分离, 从而可以实现监听地址使用 0.0.0.0,的同时, 还可以发送本机(Pod)地址给调度中心进行注册和调度。

Luckyboys commented 2 years ago

@rushuinet 麻烦 Review 一下

rushuinet commented 2 years ago

可以设置的真实的ip为监听地址,没必要设置个0.0.0.0

Luckyboys commented 2 years ago

这个 PR 的目的是为了解决,如果使用本机地址(Pod 地址)监听的话,Istio 会无法转发调度中心发送的请求到具体的容器中的问题。 Istio 的转发实际上使用的是127.0.0.1这个地址去转发过来的。所以需要监听地址是127.0.0.1要么就是0.0.0.0 但是如果配置了ExecutorIp是127.0.0.1的话,就会导致调度中心不知道这个请求 IP。

所以才需要区分监听 IP 和执行器的 IP。 否则执行器尽管配置了 ExecutorIP 为容器的 IP,也没办法收到通过调度中心发送的请求。

Luckyboys commented 2 years ago

或者,请问 @rushuinet 有更好的办法可以解决这个问题吗? 因为我们只在 Kubernetes 上使用 XXL-Job 的时候,的确是没有这个问题的。 但是我们把服务网格换到 Istio 之后,由于网络管理是通过 sidecar 形式的 istio-proxy 去管理流量的,就会出现这个问题。