浮动 IP #
极限网关内置浮动 IP 功能,可以实现双机热备、故障转移的能力,极限网关天然提供四层网络流量的高可用,无需再额外考虑增加额外的软件和设备来保障因为停机、网络故障等造成的代理服务中断。
注意:
- 该特性目前仅支持 Mac OS、Linux 操作系统。且需要网关以 root 身份运行。
- 此特性依赖目标系统的
ping
和ifconfig
命令,请确保相关包默认已安装。- 一组启用浮动 IP 的网关所在网卡地址应该在一个子网,且内网广播互通(网关实际 IP 和浮动 IP 要求只最后一位地址不一样,如:
192.168.3.x
)。
功能演示 #
什么是浮动 IP #
极限网关基于浮动 IP 来实现高可用,浮动 IP 也叫虚拟 IP 或者动态 IP,我们知道每台服务器之间都必须要有 IP 才能进行通信,一台服务器的 IP 一般是固定的并且一般要提前分配好, 如果这台服务器因为故障挂了的话,这个 IP 以及上面部署的业务也就不能访问了。 而一个浮动 IP 通常是一个公开的、可以路由到的 IP 地址,并且不会自动分配给实体设备。项目管理者临时分配这个动态 IP 到一个或者多个实体设备。 这个实体设备有自动分配的静态 IP 用于内部网间设备的通讯。这个内部网使用私有地址,这些私有地址不能被路由到。通过浮动 IP 内网实体的服务才能被外网识别和访问。
为什么需要浮动 IP #
在一个配置好浮动 IP 的典型切换场景是,当出现当前绑定浮动 IP 的机器出现故障的时候,浮动 IP 地址会飘到网络中的另一台设备。新设备无延迟的接替当掉的设备,并对外提供服务。 从而实现网络服务的高可用,对应业务的消费方来说,只需要指定浮动 IP 就可以了。 浮动 IP 非常有用,在某些特定的场景,比如客户端或者 SDK 只允许配置一个服务 IP 地址,所以这个 IP 一定要是高可用的,而极限网关正好解决了这个问题。 使用两个独立的极限网关服务器,最好部署在独立的物理服务器上,两台极限网关构成一组双机热备的状态,任意网关出现故障都能保障前端业务的正常访问。
如何开启浮动 IP #
极限网关开启浮动 IP 的操作非常简单,通过修改配置文件 gateway.yml
,增加如下配置:
floating_ip:
enabled: true
极限网关能够自动检测网络网卡设备信息,自动绑定虚拟 IP 到内网通信的端口,非常智能,对于使用起来非常简单,默认监听的 IP 为当前机器所在网段的 *.*.*.234
。
假设你当前机器所在的物理 IP 是 192.168.3.35
,那么默认的浮动 IP 是 192.168.3.234
,这个默认处理只是为了方便配置和快速启动,如果你需要使用自定义的浮动 IP 的话,也可以通过补充完整的参数来设置。
相关参数设置 #
有关浮动 IP 更多完整的配置参数样例如下:
floating_ip:
enabled: true
ip: 192.168.3.234
netmask: 255.255.255.0
interface: en1
各参数说明如下:
名称 | 类型 | 说明 |
---|---|---|
enabled | bool | 是否开启浮动 IP,默认是 false |
interface | string | 网卡设备名称,如果不指定,会选择第一个监听非本机地址的设备名称,如果服务器有多张网卡,建议手动设置 |
ip | string | 监听的浮动 IP 地址,默认是当前物理网卡所在网段的 *.*.*.234 地址,建议手动设置浮动 IP 地址,浮动 IP 地址不能和已有 IP 冲突 |
netmask | string | 浮动 IP 的子网掩码,默认是网卡所在子网掩码,或者 255.255.255.0 |
echo.port | int | 网关节点之间用于心跳检测的端口,请确定双向端口放行,默认 61111 |
echo.dial_timeout_in_ms | int | 网关节点之间心跳检测的拨号超时时间,默认 10000 |
echo.timeout_in_ms | int | 网关节点之间心跳检测的超时时间,默认 10000 |