open-hand / choerodon-cluster-agent

choerodon cluster agent
Apache License 2.0
16 stars 30 forks source link

Feature/fix websocket healthcheck #2

Closed donbing007 closed 5 years ago

donbing007 commented 5 years ago

基于0.11.1增加了健康检查的实现. 原来 agent 只会单方面回应 pong 消息.我认为这是不够的,agent-devops 之间的网络任何一个结点将链接断掉两边是不会有通知的. 所以不能只靠 tcp 的异常信息来确认链接是否可用,是否需要重新创建新的链接.

agent 如果不能及时发现连接不可用,那么集群就会无法正确操作命令了.我认为这是猪齿鱼应该是最核心需要保障的.

这里增加了 agent 端的 ping 实现.

https://github.com/choerodon/choerodon-starters/pull/18 这是对于 devops 增加健康检测实现的 pr.

vinkdong commented 5 years ago

HI @donbing007 , 感谢你提交PR, 有以下几个问题

  1. 在添加Ping方法前有遇到什么问题导致agent无法自动重连,能否告知一下如何重现?
  2. PR中应该只包含您的提交
  3. 不应该简单的注释掉其他测试
  4. 我们已经重构了agent,能否测试以下release-0.18分支是否兼容您使用的版本,0.11对于我们来说太久远了。新版本已经做了很多优化,建议您同时升级平台版本。
donbing007 commented 5 years ago

HI @donbing007 , 感谢你提交PR, 有以下几个问题

  1. 在添加Ping方法前有遇到什么问题导致agent无法自动重连,能否告知一下如何重现?
  2. PR中应该只包含您的提交
  3. 不应该简单的注释掉其他测试
  4. 我们已经重构了agent,能否测试以下release-0.18分支是否兼容您使用的版本,0.11对于我们来说太久远了。新版本已经做了很多优化,建议您同时升级平台版本。

我们现在用的是devops-0.11.1版本,因为我们自定义了东西而猪齿鱼的新版本改动很大. 我在群里咨询过,给我的答案是对于 devops-0.11.1最近可以兼容的 agent 兼容的是0.11.*

所以我基于 agent-0.11.1版本做了修改,增加了健康检查.

  1. 原先 agent 利用了 websocket 组件的默认方法回复了 pong 消息.这没有问题,可是却没有主动发起 ping 去测试链接可用性. 这样不能在第一时间发现连接失去了活性,特别是通过公网.比如网络中某个结点把链接断开...两端都不会被通知到的.(顺便 tcp_keeplive 这个是操作系统级别的,默认是2小时).

    要重现的话,你可以试着把运行 devops 的主机的网线拔掉...:)

  2. 那个 Dockfile 却实不是我修改的,你能帮我检查一下看看这个 Dockerfile 文件的修改对于我这个版本是必要的吗?好像是你们同事的修改.

  3. 这个是我的疏忽,不过因为这个测试没有通过我才暂时注解掉的.我会修改.

  4. 我粗略看过所有版本,直到 master 好像在这块代码都没怎么动啊.client.go 中.都有上述问题的. 或者你可以开一个 hotfix 的分支我把 PR 提到这个分支上.比如基于0.11.1的 hotfix 分支.

顺便我已经提交了对于 devops 依赖的 websocket-helper 0.7.1的 pr,你的同事好像已经合了.也是处理了健康检测的问题.