全部产品

透明劫持

通过透明劫持功能,应用无需改造即可获得服务治理和观测能力。应用开启透明劫持功能后,出入应用的业务流量将会被 Sidecar Proxy 自动拦截,继而按照您在控制台配置的规则进行观测与治理。

注意

透明劫持当前仅适用于 HTTP 协议的服务端应用,后续版本将会同时适用于客户端和服务端,也将支持更多协议。

透明劫持流程

透明劫持流程图如下:

123

透明劫持流程说明如下:

  1. Init 流程(0):下方紫色虚线表示 Init 流程。

    当 Pod 启动时,通过 Init Container 特权容器开启流量劫持,并设置流量劫持规则(分为 Inbound 规则和 Outbound 规则)。Init Container 在设置结束后立即退出。

  2. Inbound 流程(1、2、3):左边橙色实线表示 Inbound 流程。

    1. 请求发给 APP 前被 traffic intercetion 劫持。

    2. traffic intercetion 根据 Inbound 规则,将请求转发到 Sidecar。

    3. Sidecar 将请求转发给 APP。

  3. Outbound 流程(4、5、6):右边黑色实线表示 Outbound 请求。

    1. App 发出的 Outbound 请求被 traffic interception 劫持。

    2. traffic interception 根据 Outbound 规则将请求转发给 Sidecar。

    3. Sidecar 处理之后将请求回复给请求者。

创建透明劫持规则

  1. 添加应用。

    1. 登录 SOFAStack 控制台

    2. 在左侧菜单栏选择 中间件 > 微服务平台 > 服务网格 > 透明劫持

    3. 单击 添加应用,然后配置以下参数:

      参数

      说明

      应用名称

      填写需进行透明劫持的目标应用名称。

      仅支持英文、数字和短划线(-)。

      添加端口

      单击 添加,然后输入应用的端口号。目前仅支持 HTTP 协议。

      您可以添加多个端口号。

      添加节点

      单击 添加,然后输入目标节点的 IP 地址,集群类型仅支持虚拟机。

      您可以添加多个节点。

    4. 单击 提交

  2. 开启透明劫持,并配置透明劫持参数。

    1. 在透明劫持列表,单击目标应用名称。

    2. 透明管理 页签,打开目标节点的 透明劫持状态 开关。

      若有多个节点,可选中目标节点,然后单击 开启透明劫持

    3. 单击 确定。

    4. 返回透明劫持列表,单击目标应用右侧的 参数配置,然后配置透明劫持参数。mv

      • 入方向:在流量进入时,劫持黑名单中端口范围之外的所有TCP流量。

        单击 添加,然后添加您无需劫持的端口范围。取值范围为[1025,65535],默认劫持 80 和大于 1024 的端口。

      • 出方向:在流量流出时,劫持黑名单网段范围和端口范围之外的TCP流量。

        网段端口段 添加无需劫持的端口和网段范围。端口的取值范围与入方向一致。

    5. 单击 确定

  3. 运行透明劫持脚本。

    透明劫持开启并配置完成后,您需要下载并安装透明劫持脚本。

    注意

    • 在控制台页面中开启或关闭透明劫持功能后,必须运行透明劫持脚本,以安装或卸载 Sidecar。

    • Sidecar 安装完成后,若修改了劫持参数配置,您必须重新运行脚本,进行 Sidecar 的卸载或安装。

    1. 透明劫持 页面,单击右上角的 查看环境信息版本号

    2. 在目标应用节点上下载透明劫持脚本。

      目前支持在上海非金融云地域下载,链接如下:

    3. 在目标节点上执行以下命令修改脚本权限。

      chmod +x sofamesh.sh
    4. 执行以下透明劫持脚本(bash 脚本),安装并启动 Sidecar proxy。

      sofamesh.sh install \
      --tenant <租户名> \                                           //选项也可缩写为-t,可在透明劫持页面上单击右上角“查看环境信息”获取。
      --workspace <工作空间名称> \                          //选项也可缩写为 -w,可在透明劫持页面上单击右上角“查看环境信息”获取。
      --instanceid <中间件实例 ID> \                         //选项也可缩写为 -i,可在透明劫持页面上单击右上角“查看环境信息”获取。
      --appname <应用名称>\                                   //选项也可缩写为 -n,必须与您添加应用时的应用名称保持一致。
      --accesskey <阿里云 AccessKey Id>\                //选项也可缩写为 -a。
      --secretkey <阿里云 AccessKey SecretKey>\    //选项也可缩写为 -s。
      --artifacts <安装包链接> \                                 //选项也可缩写为 -f,脚本依赖的安装包下载链接,下载地址参见下方参数说明。
      --verbose                                                          //选项也可缩写为-v,以打印更详细的执行安装过程。
      说明

      脚本执行完成后,节点完成初始化,请求将被 MOSN劫持转发。

  4. 治理应用。

    1. 在透明劫持列表,单击目标应用名称。

    2. 应用详情 页面右上角,单击 应用治理,然后配置最大请求数。

      最大请求数不能超过 2147483647,设置为 0 则表示无限制。

    3. 单击 提交

      配置完成后,单击 应用治理记录 页签即可查看应用治理记录,包括了修改人、修改时间、针对的端口号以及修改值变化信息,如下图所示。mv

删除透明劫持规则

对于不再需要的透明劫持规则,您可以随时删除。

  1. 在透明劫持列表,单击目标应用名称。

  2. 节点管理 页签,删除所有节点。

  3. 回到透明劫持列表,单击目标应用右侧的 删除,然后单击 确定