文档首页 > > 最佳实践> 如何让云手机实例使用单独的EIP?

如何让云手机实例使用单独的EIP?

分享
更新时间: 2019/05/16 14:43

场景

默认情况下,在同一台云手机服务器上的所有云手机实例只能使用同一个EIP访问公网,造成IP密度偏大。

为满足对IP密度有较高需求的用户,我们使用单台ECS作为代理,通过NAT转换配合虚拟IP的方式,提供给每台云手机实例单独的EIP访问公网。并且可以通过调用代理ECS的标准化接口更换云手机实例的EIP。

方案设计

该方案的架构如图1所示。

  • 架构核心:单虚拟机代理+NAT方案。

    云手机实例在云手机服务器内通过NAT将云手机私有IP转换为云手机服务器的VIP,再将流量通过VPC对等连接导入代理ECS所处VPC,通过ECS的eth5网卡作为接收端将流量引入代理ECS内部,再根据策略路由找到每部云手机所对应ECS_VIP的网口,并由与ECS_VIP绑定的EIP将云手机流量转发至公网。若您需要更换云手机实例的EIP,只需更换代理ECS的EIP即可。

  • 架构薄弱环节:单点ECS作为转发。

    如果ECS性能或稳定性出现故障,则会影响整体业务,对可靠性要求高的场景可通过keepalived的主备模式来提高可靠性。

图1 方案架构

预设条件

  • 您创建一台ECS和6张网卡(eth0-eth5)。其中,eth0-eth4分别配置20个VIP(VIP作为子接口需要配置在eth上),每个VIP绑定一个EIP,eth5用来接收云手机的流量。
  • 确保ECS所处VPC与云手机服务器所处VPC的网段(172.31.0.0/16)不重叠,或者ECS所处子网与云手机服务器所处子网网段不重叠。
  • 云手机服务器bond0网口上绑定100个VIP。
  • 您申请到足够数量的EIP。
  • 该方案需要云手机技术人员配合完成,请您在开始操作前先新建工单,请参考新建工单

新建工单

  1. 登录管理控制台。
  2. 在页面右上角,选择“工单 > 新建工单”。

    系统进入“新建工单”页面。

    图2 新建工单
  3. 单击“产品类问题”区域的“云手机”。
  4. 单击“技术咨询”。
  5. 单击“新建工单”。
  6. 在“新建工单”页面,填写相关参数。

    其中,“问题描述”项请填写“通过代理ECS让云手机实例使用单独的EIP,需云手机技术人员配合”。

  7. 填写完毕后,勾选协议并单击“提交”。

配置流程

  1. 关闭代理ECS所有网卡“源/目的检查”(代理ECS需使用虚拟IP地址)。

    1. 登录管理控制台。
    2. 选择“计算 > 弹性云服务器”。
    3. 在弹性云服务器列表中的右上角,输入代理ECS的名称、IP地址或ID,并进行搜索
    4. 在弹性云服务器列表中,单击代理ECS的名称。

      系统跳转至该代理ECS详情页面。

    5. 选择“网卡”页签,查看代理ECS的所有网卡。
      图3 查看ECS网卡
    6. 逐一关闭所有网卡的“源/目的检查”
      图4 关闭源/目的检查

  2. 配置VPC对等连接。(如图1所示,假设云手机服务器所在VPC的名称为VPC-A,代理ECS所在VPC的名称为VPC-B。)

    1. 在服务列表中选择“计算 > 云手机”。

      进入云手机页面。

    2. 在左侧导航栏,选择“云手机 > 云手机服务器管理”。
    3. 在云手机服务器实例列表,展开任意一台服务器的详情,记录下“项目ID”、“VPC ID”和“VPC网段”的信息,如图5所示。
      图5 服务器详情
    4. 在服务列表中选择网络 > 虚拟私有云

      进入虚拟私有云页面。

    5. 在左侧导航栏,选择“对等连接”
    6. 单击“创建对等连接”
    7. 在弹出框中根据界面提示配置参数。
      其中“帐户”选择“其他帐户”,“ 对端项目 ID”填写 2.c记录的“项目ID”,对端VPC ID填写 2.c中记录的“VPC ID”。
      图6 创建对等连接
    8. 单击“确定”。等待5分钟左右,等待对等连接状态为“已接受”。
    9. 查看对等连接ID。

      单击对等连接名称,进入详情页面,“ID”即“对等连接ID”。如图7所示。

      图7 对等连接ID
    10. 在VPC-A内添加本端路由。

      以代理ECS所处子网网段作为目的地址,下一跳地址为对等连接ID。

    11. 在VPC-B内添加本端路由。

      2.c记录的“VPC网段”作为目的地址(172.31.0.0/16),下一跳地址选择对等连接ID。

      验证:在云手机服务器中ping ECS的私网IP,成功返回则证明VPC对等连接已连通

    12. 本端路由添加路由规则,将所有出网流量下一跳地址设为对等连接ID。

  3. 配置VPC-B的路由。

    在VPC-B添加自定义路由,将从任何地址(也可以自定义为云手机服务器所处子网网段)访问该VPC的请求的下一跳地址设为代理ECS的eth5网卡对应的私有IP。

  4. 配置代理ECS SNAT、策略路由及关闭IP地址过滤

    1. 执行以下命令,虚拟IP绑定虚拟网卡。

      ifconfig eth${n}:${m} ${ecs_vip_m}

      说明:

      n对应第几张网卡,m对应该VIP的24-32位相对应的十进制数。

      e.g. ifconfig eth0:100 192.168.50.100

      图8 查看生效
    2. 执行以下命令,添加路由表(分为出方向表和入方向表)。

      ip rule add from ${bms_vip_n} table ${n}

      e.g. ip rule add from 172.31.244.100 table 100(出方向表)

      ip rule add to ${bms_ip网段} table ${n}

      e.g. ip rule add to 172.31.244.0/24 table 500(入方向表)

    3. 执行以下命令,配置策略路由(分为出方向策略和入方向策略)。

      ip route add default via ${ecs_网关} dev eth${n}:${m} table ${k}

      e.g. ip route add default via 192.168.150.1 dev eth0:100 table 100

      ip route add default via ${ecs_网关} dev eth5 table 500

      e.g. ip route add default via 192.168.150.1 dev eth5 table 500

    4. 执行以下命令,查看网口绑定。

      ifconfig ${eth_n}:${m}

    5. 查看VIP与虚拟网口绑定是否生效。

    6. 执行以下命令,将云手机服务器发来的报文源地址通过SNAT转变为虚拟IP。

      iptables -t nat -A POSTROUTING -s ${bms_vip_n} -j SNAT --to ${ecs_vip_n}

      e.g. iptables -t nat -A POSTROUTING -s 172.31.244.100 -j SNAT --to 192.168.150.100

    7. 执行以下命令,查看是否生效。

      iptables -nvL -t nat|grep SNAT

    8. 执行以下命令,关闭eth0-eth5网卡IP过滤。

      sysctl -w net.ipv4.conf.all.arp_filter=0

      sysctl -w net.ipv4.conf.all.rp_filter=0

      net.ipv4.conf.default.arp_filter=0

      net.ipv4.conf.default.rp_filter=0

    9. 执行以下命令,查看是否生效。

      sysctl -a |grep filter

验证

通过云手机访问某台您可以登录的服务器,在服务器进行抓包,通过报文判断源地址是否为该手机对应的EIP。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区