通过IP地址访问任意类型组件
本文适用于应用开发者和运维人员
部署到 Rainbond 的对外提供服务的组件如何被访问是本文描述的重点,比如部署的数据库被外网访问、部署的物联网服务被外网访问等等。这些组件都会用到基于 IP 地址加端口的访问策略模式。
前提条件
- 基于应用市场部署一个 Mysql 组件 参考创建组件文档
- 本地准备一个 Mysql 客户端用来测试连接 Mysql 服务
操作流程
1.确认前提条件已经准备就绪,测试应用中已经存在一个 Mysql 组件
2.配置网关策略,进入网关策略管理页面,切换到 TCP/UDP 策略模式下,点击添加策略。与配置 HTTP 策略类似的是 TCP 策略依然包括路由规则和访问目标两个部分。访问目标部分与 HTTP 策略一致。路由规则部分只有一个配置项那就是 IP 和端口的组合。IP 是一个可选列表,其中包括 Rainbond 网关服务所在节点的所有 IP 地址(排除 docker0 网卡和容器网络的网卡),若你需要访问的 IP 地址不在选项中(比如阿里云的 EIP 不会挂载到虚拟机,所以列表中不会显示)请选择 0.0.0.0 为通配 IP 地址。端口我们会根据已使用的端口数据进行自动推荐,当然你可以更改为任何可用的端口号。选择完成后保存即可。
注意保存时若提示"组件端口未打开,是否自动开放"的提示时,请选择是,自动将组件的端口对外服务属性打开,完成服务注册。
3.测试策略是否生效,策略配置后将自动生效。点击访问策略列表中刚新增的策略,在弹出窗中获取连接地址和连接变量信息(包括 Mysql 账户信息)使用本地的 Mysql 客户端进行连接测试。
了解原理
TCP/UDP 协议属于传输层协议,因此支持 TCP/UDP 协议意味着目前几乎全部的应用层通信协议都支持。通过在 Rainbond 网关服务所在节点使用策略配置的 IP 加端口进行监听,将请求代理的后端的组件容器网络上。使用 TCP/UDP 意味着网关不会对请求包进行解析,具有更优秀的性能表现。同时也就意味着不能通过网关做像 HTTP 协议那么多的路由策略。
选择的 IP 地址是有讲究的。Rainbond 网关服务会自动获取运行节点的所有网卡绑定的 IP 地址,并默认排除 docker0 以及容器网络相关的网 卡 IP 地址。也就意味着 IP 地址可选项中会包括局域网 IP,公网 IP。当策略选择明确的 IP 地址时,当前策略只会在 IP 所在节点生效,且仅监听 IP 对应的端口。若选择的 IP 地址是虚拟 IP,可能在节点异常情况下进行漂移,Rainbond 网关可以实时感知到 IP 地址的漂移从而达成网关策略的漂移。若选择的 IP 地址是通配符地址 0.0.0.0,那么就意味着该策略将在所有 Rainbond 网关服务部署节点生效,且直接占用配置的端口。
通过上述的机制,Rainbond 网关可以部署于局域网边缘,充当多个局域网打通的桥梁。
常见问题
-
如何保障端口不冲突
Rainbond 尽可能的确保所有策略之间监听端口不冲突,但遗憾的是宿主机端口可能被其他软件占用而导致冲突。因此建议用户尽可能保障 Rainbond 网关节点的独立性。
-
外网 IP 没有绑定到集群可以使用吗
推荐之间使用通配符 0.0.0.0 作为 IP 地址,然后直接访问外网 IP 地址+端口。但前提是外网 IP 的流量已经映射到某一个 Rainbond 网关节点。
-
网关如何做到内外网隔离
网关的部署模式是灵活的,当某个网关节点只有内网 IP 时,使用此 IP 配置的策略只能通过内网访问。将 Rainbond 网关部署到不同的子网中(前提是其可以与集群所在子网通信),可以实现不同的子网访问集群中的应用。
-
TCP 的策略能访问 HTTP 的应用吗
当然可以,而且在某些特殊情况下还必须使用 TCP 的策略,比如应用本身有配置服务端证书建立了 TLS 监听 ,再比如应用希望有更高的性能。