Archery icon indicating copy to clipboard operation
Archery copied to clipboard

关于在桥接模式中SSH隧道无法链接的问题

Open chinahuhq opened this issue 3 years ago • 8 comments

目前遇到的问题/使用障碍

使用版本是1.8.1。 因为archery部署在云下,生产服务器在云上不直接开放数据库端口,需要通过前置机连接,发现一直报connection refused,goinception中有日志,archery中没有日志,经查询 #951 ,发现需要修改docker网络模式,后经过排查代码发现,/sql/utils/ssh_tunnel.py 中存在如下代码 image 尝试将127.0.0.1修改为archery,连接成功

希望如何解决/实现它

希望可以修改为,例如动态配置的方式,在项目部署前期就可以识别到,其次可以添加的项目文档中,作为docker部署目录下要注意的一点,减少使用者构建成本。

其他信息

如果有其他类似的产品功能或者图片信息,可在此提交

chinahuhq avatar Jan 26 '22 10:01 chinahuhq

谢谢,果然解决了。 使用docker部署,SSH隧道连接,在SQL上线的时候就会出线这个问题。 我是把那个ssh_tunnel.py 文件映射出来修改,因为是在docker,启动之后就会还原回去。

jyworker avatar Mar 28 '22 07:03 jyworker

解决+1,感谢大佬

michael-liumh avatar Apr 15 '22 07:04 michael-liumh

已添加 FAQ 说明: https://github.com/hhyo/Archery/wiki/FAQ

michael-liumh avatar Aug 24 '22 02:08 michael-liumh

helm部署到k8s的话需要改:

  1. 在env中添加,获取POD的IP添加到环境变量中
  - name: ARCHERY_POD_IP
    valueFrom:
      fieldRef:
        fieldPath: status.podIP
  1. 在/opt/archery/sql/utils/ssh_tunnel.py(需要挂载出来)修改
  • 开头添加:

import os

  • 语句 return "127.0.0.1", self.server.local_bind_port 更改为:

return os.getenv('ARCHERY_POD_IP'), self.server.local_bind_port

xuzheng0017 avatar Dec 12 '22 08:12 xuzheng0017