弹性网卡

百度智能云弹性网卡可在多个云主机间自由迁移。通过在云主机上绑定多个弹性网卡,实现高可用网络方案;也可以在弹性网卡上绑定多个内网 IP,每内网IP都可以绑定一个EIP,用户在配置好IP地址后通过配置应用策略即可实现不同业务流量以不同源IP从网卡流出,实现单主机多IP部署。

目前弹性网卡在公测阶段,如需使用可申请公测

云主机的网卡分为两种类型:

  • 主网卡:虚机实例上的原生网卡(eth0),在虚机实例创建时自动生成并配置。主网卡不可进行插拔、迁移等操作,与云主机的生命周期保持一致。
  • 弹性网卡:为用户单独创建并挂载在虚机实例上,用户可以在虚机创建、虚机停机或运行时挂载弹性网卡。用户挂载并配置好网卡后通过配置系统路由即可实现不同流量走不同网卡。

产品限制:

  • BCC实例与弹性网卡必须在同一可用区、同一VPC,可以在不同子网,挂载不同的安全组。
  • BCC网络增强型实例不支持弹性网卡。
  • 在一台实例上挂载多个弹性网卡不能提高实例内网带宽性能。
  • BCC主网卡不属于弹性网卡,不在弹性网卡列表中,主网卡在BCC详情页面中配置。
  • 每个VPC可支持10个弹性网卡。
  • 单网卡上IP数量最少1个,最多20个。
  • 云主机可挂载弹性网卡数量=min(主机核数,8)。
  • 云主机绑定的网卡上可配置IP数量:
内存 IP数量
1G 2
2-8G 8
12-32G 16
大于32G 20

创建弹性网卡

  1. 在VPC实例列表页,选择已创建的VPC实例,点击进入详情页面。
  2. 导航栏选择"弹性网卡",点击"创建弹性网卡"按键。
  3. 填写下列配置信息:

    配置项 说明
    当前地域 支持北京、保定、广州、苏州、武汉、香港,通过左上角区域进行切换
    网卡名称 用户自定义弹性网卡名称
    所在子网 弹性网卡所属的子网
    安全组 弹性网卡绑定的安全组,最少1个,最多10个
    IP地址 默认自动分配一个主IP,可自行添加辅助IP
    描述 编辑弹性网卡相关描述信息
  4. 点击“确定”,弹性网卡创建完成。
    liebiao.JPG

挂载弹性网卡

  1. 在BCC实例列表页,选择已创建的BCC实例,点击进入详情页面。
  2. 导航栏选择"网卡",进入网卡页面。
  3. 在弹性网卡中,点击”挂载网卡“,出现挂载网卡弹框,选择需要挂载的弹性网卡。
  4. 点击确定,即完成挂载弹性网卡。

说明:

  • 云主机镜像暂时无法自动识别弹性网卡,在挂载主机后,您需要配置弹性网卡使其能被识别。
  • 云主机挂载弹性网卡前,需先在VPC中创建弹性网卡实例。
  • 挂载主机后,如需卸载,在页面中点击“卸载网卡”即可完成卸载。
  • 云主机释放时,弹性网卡不会关联释放。

配置弹性网卡

根据您的实例使用的镜像不同,部分镜像需要手动配置弹性网卡,才能使绑定在实例上的弹性网卡被系统识别。

背景信息

前提条件

  • 目前BCC公共镜像默认安装了NetworkManager,NetworkManager 会影响网络设置,特别是路由表。在绑定弹性网卡前,请先登录虚机禁用NetworkManager。

禁用NetworkManager的命令

发行版 禁用命令
CentOS 6 service NetworkManager stop
chkconfig NetworkManager off
Ubuntu 14 (需要卸载network-manager) service network-manager stop
apt-get --purge remove -y network-manager
Debian 7 service network-manager stop
update-rc.d -f network-manager remove
CentOS 7 / Ubuntu 16 / Debian8 / Debian9 systemctl stop NetworkManager
systemctl disable NetworkManage

弹性网卡配置工具

  • 完成禁用指令且将弹性网卡绑定到 BCC 实例后,需要根据镜像版本分别执行以下弹性网卡配置才能生效。
  • Windwos系统需要手动配置。

CentOS:bcc_elastic_net_centos.sh

Ubuntu:(暂不支持ubuntu18.04)bcc_elastic_net_ubuntu.sh

Debian:bcc_elastic_net_debian.sh

配置工具会创建静态路由,重启网络或者实例后,无需再次进行路由的设置。

运行配置工具

  • 进入创建的BCC服务器,并为配置工具添加可执行权限,

  • 完成挂载弹性网卡操作后,执行配置工具。

  • 对网卡进行修改IP,解绑及重新绑定等操作时,需要再次运行配置工具。

如下所示:

----------------------------------
  Disable NetworkManager.
  Begin to config network...
    create/recreate network config file [OK]
  Begin to create route table...
    add 192.168.32.212 to route table: rt_ens3 [OK]
    add 192.168.32.228 to route table: rt_ens3 [OK]
    add 192.168.32.209 to route table: rt_ens6 [OK]
    add 192.168.32.210 to route table: rt_ens6 [OK]
    add 192.168.32.211 to route table: rt_ens6 [OK]
    add 192.168.32.226 to route table: rt_ens7 [OK]
    add 192.168.32.227 to route table: rt_ens7 [OK]
    add 192.168.32.229 to route table: rt_ens7 [OK]
  Restart network...  [OK]
----------------------------------

配置完成后,可通过ip addr命令查看IP是否已启用(以centos为例)

[root@instance-h1q92lvr ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:7d:2d:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.212/20 brd 192.168.47.255 scope global eth0
    inet 192.168.32.228/20 brd 192.168.47.255 scope global secondary eth0:1
    inet6 fe80::f816:3eff:fe7d:2dad/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:a6:69:8f brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.209/20 brd 192.168.47.255 scope global eth1
    inet 192.168.32.210/20 brd 192.168.47.255 scope global secondary eth1:1
    inet 192.168.32.211/20 brd 192.168.47.255 scope global secondary eth1:2
    inet6 fe80::f816:3eff:fea6:698f/64 scope link 
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:93:e5:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.226/20 brd 192.168.47.255 scope global eth2
    inet 192.168.32.227/20 brd 192.168.47.255 scope global secondary eth2:1
    inet 192.168.32.229/20 brd 192.168.47.255 scope global secondary eth2:2
    inet6 fe80::f816:3eff:fe93:e544/64 scope link 
       valid_lft forever preferred_lft forever

windows系统配置弹性网卡

配置前准备工作

在给您的windows系统实例配置弹性网卡前,需要先将弹性网卡绑定在实例上。您可以根据需求在一个弹性网卡上分配一个或多个辅助私网IP地址。通过使用多个私网IP地址,能提高windows实例高利用率和实现负载故障时的流量转移。

配置方法

以windows server 2012R2为例说明windows系统配置辅助IP的过程。

1.打开网络与共享中心,选择更改适配器设置。
111.png
2.在弹出的页面中选择一个网卡,右键属性。
222.png
3.选择TCP/IPV4,点击属性。
333.png
4.在弹出的对话框中选择“使用下面的ip地址”,这时需要填写ip地址,子网掩码,DNS服务器等信息,这些信息可以通过在命令行下输入命令 ipconfig /all 获取,输完命令或显示很多信息,记下其中的IPv4 Address (IPv4 地址)、Subnet Mask (子网掩码)、Default Gateway (默认网关) 和 DNS Servers (DNS 服务器)这些值。
444.png
5.接下来回到刚才弹出的对话框配置静态ip地址。依次填入获取到的IP地址,子网掩码,默认网关,DNS服务器地址等信息,如下图所示,点击确定,设置过程中会有间断数秒钟的断网,这个是正常现象。
555.png
6.配置好静态IP后,如果您在控制台添加了辅助ip,还需要继续添加辅助ip。

7.在刚才的“Internet协议版本 4 TCP/IP属性”对话框界面点击高级,在弹出的对话框中点击添加,进行添加IP的操作,将在控制台添加的辅助IP依次填写就完成了。
666.png
8.要验证辅助ip确实已添加至操作系统中,可以在命令行下输入config /all 查看刚才添加的ip是否已经存在。

CentOS系统配置弹性网卡

配置前准备工作

  1. 为防止 cloud-init 重置您的自定义网络配置,请禁用cloud-init中的网络配置,编辑 /etc/cloud/cloud.cfg,添加以下内容。

    network: {config: disabled}

  2. BCC实例中安装了NetworkManager,NetworkManager可能会修改路由设置,因此需要禁用 NetworkManager。

  • CentOS 7 禁用NetworkManager

    systemctl stop NetworkManager
    systemctl disable NetworkManager
    
  • CentOS 6 禁用NetworkManager

    service NetworkManager stop
    chkconfig NetworkManager off
    

配置网卡

  1. 获取网络接口名称(网卡名称)
  • BCC实例添加弹性网卡后,可通过以下命令获取弹性网卡的名称。

    ls /sys/class/net
    
  • 输出结果(示例)

    eth0 eth1 eht2 lo
    
  • BCC实例默认的主网卡名称为eth0或ens3(部分BCC实例主网卡名为ens3)。以上结果中,添加的弹性网卡为eth1,eth2。

  1. 为弹性网卡创建配置文件,以eth1为例。

    vim /etc/sysconfig/network-scripts/ifcfg-eth1
    

添加以下内容:

DEVICE=eth1
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=no
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    HWADDR=fa:16:3e:6a:14:b5
    DEFROUTE=no

注意:

  • 需要将弹性网卡的MAC地址写入到配置文件中。(可通过cat /sys/class/net/[网卡名称]/address查看弹性网卡的MAC地址)。
  • 为了防止更改默认路由,需要在弹性网卡的配置文件中添加DEFROUTE=no选项。

如果网卡上有多个IP,需要将网卡上的辅助IP添加到配置文件中。

DEVICE=eth1
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=no
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    HWADDR=fa:16:3e:6a:14:b5
    DEFROUTE=no
    IPADDR1=192.168.32.210
    PREFIX1=24
    IPADDR2=192.168.32.211
    PREFIX2=24
  1. 重启网络

    systemctl restart network  /  service network restart
    

配置路由

为了保证数据能够通过正确的网络接口(网卡),您必须为弹性网卡创建新的路由表及规则。

  1. 创建路由表

编辑 /etc/iproute2/rt_tables,分别为每一个弹性网卡创建一个路由表。

10 rt_eth1
    20 rt_eth2
  1. 设置路由规则(以eth1为例)

在终端中运行以下命令:

ip route add default via 192.168.32.1 dev eth1 table rt_eth1

    ip rule add 192.168.32.209 dev eth1 table rt_eth1
    ip rule add 192.168.32.210 dev eth1 table rt_eth1
    ip rule add 192.168.32.211 dev eth1 table rt_eth1

    ip rule add from 192.168.32.209 lookup rt_eth1
    ip rule add from 192.168.32.210 lookup rt_eth1
    ip rule add from 192.168.32.211 lookup rt_eth1

注:

  • 192.168.32.209 / 210 / 211为弹性网卡的IP。
  • 192.168.32.1为弹性网卡的默认网关。

设置完成后,可以通过 ip route show table rt_eth1 查看弹性网卡上每个 IP 的路由。

  1. 创建弹性网卡的静态路由文件(以eth1为例)

为弹性网卡创建静态路由和规则文件,当BCC实例启动或重启网络时都会保留路由和规则,无需再次手动添加。

创建 route-eth1 静态路由文件,vim /etc/sysconfig/network-scripts/route-eth1,添加以下内容:

default via 192.168.32.1 dev eth1 table rt_eth1

    192.168.32.209 dev eth1 table rt_eth1
    192.168.32.210 dev eth1 table rt_eth1
    192.168.32.211 dev eth1 table rt_eth1

创建或编辑 rule-eth1 的规则文件,vim /etc/sysconfig/network-scripts/rule-eth1,添加以下内容:

from 192.168.32.209 lookup rt_eth1
    from 192.168.32.210 lookup rt_eth1
    from 192.168.32.211 lookup rt_eth1

Ubuntu/Debian系统配置弹性网卡

配置前准备工作

  1. 为防止 cloud-init 重置您的自定义网络配置,请禁用cloud-init中的网络配置,编辑 /etc/cloud/cloud.cfg ,添加以下内容:

    network: {config: disabled}
    
  2. BCC实例中安装了NetworkManager,NetworkManager可能会修改路由设置,因此需要禁用 NetworkManager,并保证系统重启后,NetworkManager仍处于禁用状态。

  • Ubuntu14 需要卸载NetworkManager

    service network-manager stop
    apt-get --purge remove -y network-manager
    
  • CentOS 6 禁用NetworkManager

    systemctl stop NetworkManager
    systemctl disable NetworkManager
    

配置网卡

  1. 获取网络接口名称(网卡名称)

BCC实例添加弹性网卡后,可通过以下命令获取弹性网卡的名称。

ls /sys/class/net

输出结果(示例)

eth0 eth1 eht2 lo

BCC实例默认的主网卡名称为eth0或ens3(部分BCC实例主网卡名为ens3)。以上结果中,添加的弹性网卡为eth1,eth2。

  1. 编辑 /etc/network/interfaces

编辑/etc/network/interfaces网络接口文件,修改为以下内容:

auto lo
    iface lo inet loopback
    source /etc/network/interfaces.d/*

对于BCC Ubuntu16实例,编辑 /etc/network/interfaces.d/50-cloud-init.cfg,将其修改为以下内容:

auto ens3
    iface ens3 inet dhcp

同时修改文件名为ens3.cfg

mv /etc/network/interfaces.d/50-cloud-init.cfg  /etc/network/interfaces.d/ens3.cfg
  1. 为弹性网卡创建配置文件,以eth1为例。

在/etc/network/interfaces.d/目录下新建eth1.cfg文件

vim /etc/network/interfaces.d/eth1.cfg

添加以下内容:

auto eth1
    iface eth1 inet dhcp
    hwaddress=fa:16:3e:6a:14:b5

注意:

  • 需要将弹性网卡的MAC地址写入到配置文件中。(可通过cat /sys/class/net/[网卡名称]/address查看弹性网卡的MAC地址)。

如果网卡上有多个IP,需要将网卡上的辅助IP添加到配置文件中。

auto eth1
    iface eth1 inet dhcp
    hwaddress=fa:16:3e:6a:14:b5

    iface eth1 inet static
    address 192.168.32.210
    netmask 255.255.240.0

    iface eth1 inet static
    address 192.168.32.211
    netmask 255.255.240.0
  1. 创建 restrict-default-route 文件,以防止默认路由被覆盖。

vim /etc/dhcp/dhclient-enter-hooks.d/restrict-default-route,添加以下内容:

case ${interface} in
      eth0)           #  ubuntu16/debian9为ens3
        ;;
      *)
        unset new_routers
        ;;
    esac
  1. 重启网络。
  • Ubuntu14

    ifdown eth1 && ifup eth1
    
  • Ubuntu16

    systemctl restart networking
    

配置路由

为了保证数据能够通过正确的网络接口(网卡),您必须为弹性网卡创建新的路由表及规则。

  1. 创建路由表

编辑 /etc/iproute2/rt_tables,分别为每一个弹性网卡创建一个路由表。

10 rt_eth1
    20 rt_eth2
  1. 设置路由规则(以eth1为例)。

在终端中运行以下命令:

ip route add default via 192.168.32.1 dev eth1 table rt_eth1

    ip rule add 192.168.32.209 dev eth1 table rt_eth1
    ip rule add 192.168.32.210 dev eth1 table rt_eth1
    ip rule add 192.168.32.211 dev eth1 table rt_eth1

    ip rule add from 192.168.32.209 lookup rt_eth1
    ip rule add from 192.168.32.210 lookup rt_eth1
    ip rule add from 192.168.32.211 lookup rt_eth1

注:

  • 192.168.32.209 / 210 / 211为弹性网卡的IP
  • 192.168.32.1为弹性网卡的默认网关

设置完成后,可以通过 ip route show table rt_eth1 查看弹性网卡上每个 IP 的路由。

  1. 创建弹性网卡的静态路由文件(以eth1为例)。

编辑/etc/network/interfaces.d/eth1.cfg

auto eth1
    iface eth1 inet dhcp
    hwaddress=fa:16:3e:6a:14:b5

    iface eth1 inet static
    address 192.168.32.210
    netmask 255.255.240.0

    iface eth1 inet static
    address 192.168.32.211
    netmask 255.255.240.0

    # default gateway for eth1
    up ip route add default via 192.168.32.1 dev eth1 table rt_eth0

    # route for every IP
    up ip route add 192.168.32.210 dev eth1 table rt_eth0
    up ip route add 192.168.32.211 dev eth1 table rt_eth0

    # policy rule for every IP
    up ip rule add from 192.168.32.210  lookup rt_eth0
    up ip rule add from 192.168.32.210  lookup rt_eth0