Four, Kvm virtual network management

One, Linux Bridge                                                                     

Network virtualization is virtualization technology is the most complex part, is also very important resource.

First we create linux-bridge bridge named br0, if a new one on this bridge vm, as shown below:

 

 

VM2 virtual NIC vnet1 also connected to br0 on. Now  between VM1 and VM2 can communicate simultaneously VM1 and VM2 can also be network communication with the outside.

View network status:

 

 

With brctl show displays the current status of the bridge connecting:

 

 

brctl command:

 

 

 

Two, Implementation Methods of Vlan introduction

 LAN represents  the Local the Network Area , a local area network, commonly used  Hub and a  Switch connected  LAN computers. Generally, two computers connected to the same  Hub or  Switch when they are in the same  LAN in.

 

A  LAN denotes a broadcast domain.  The implication is: all members of the LAN will receive broadcast packets sent by any one member.

 

VLAN 表示 Virtual LAN。一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。

 

 

 

 

 

 

比方说,有两组机器,Group A 和 B,我们想配置成 Group A 中的机器可以相互访问,Group B 中的机器也可以相互访问,但是 A 和 B 中的机器无法互相访问。 一种方法是使用两个交换机,A 和 B 分别接到一个交换机。 另一种方法是使用一个带 VLAN 功能的交换机,将 A 和 B 的机器分别放到不同的 VLAN 中。

 

VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包(比如 arp)无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的。

 

现在的交换机几乎都是支持 VLAN 的。 通常交换机的端口有两种配置模式: Access 和 Trunk。如下图

 

 

Access

这些端口被打上了 VLAN 的标签,表明该端口属于哪个 VLAN 不同 VLAN 用 VLAN ID 来区分,VLAN ID 范围是 1-4096。 Access 口都是直接与计算机网卡相连的,这样从该网卡出来的数据包流入 Access 口后就被打上了所在 VLAN 的标签。 Access 口只能属于一个 VLAN。

 

 

Trunk

假设有两个交换机 A 和 B。 A 上有 VLAN1(红)、VLAN2(黄)、VLAN3(蓝);B 上也有 VLAN1、2、3,那如何让 AB 上相同 VLAN 之间能够通信呢?

 

 

办法是将 A 和 B 连起来,而且连接 A 和 B 的端口要允许 VLAN1、2、3 三个 VLAN 的数据都能够通过。这样的端口就是Trunk口了。 VLAN1, 2, 3 的数据包在通过 Trunk 口到达对方交换机的过程中始终带着自己的 VLAN 标签。

 

三、Linux Bridge实现Vlan原理

KVM 虚拟化环境下实现 VLAN 架构,如下图

 

 

eth0 是宿主机上的物理网卡,有一个命名为 eth0.10 的子设备与之相连。 eth0.10 就是 VLAN 设备了,其 VLAN ID 就是 VLAN 10。 eth0.10 挂在命名为 brvlan10 的 Linux Bridge 上,虚机 VM1 的虚拟网卡 vent0 也挂在 brvlan10 上。

这样的配置其效果就是: 宿主机用软件实现了一个交换机(当然是虚拟的),上面定义了一个 VLAN10。 eth0.10,brvlan10 和 vnet0 都分别接到 VLAN10 的 Access口上。而 eth0 就是一个 Trunk 口。VM1 通过 vnet0 发出来的数据包会被打上 VLAN10 的标签。

 

eth0.10 的作用是:定义了 VLAN10

brvlan10 的作用是:Bridge 上的其他网络设备自动加入到 VLAN10 中

 

增加一个 VLAN20,如下图

 

 

这样虚拟交换机就有两个 VLAN 了,VM1 和 VM2 分别属于 VLAN10 和 VLAN20

对于新创建的虚机,只需要将其虚拟网卡放入相应的 Bridge,就能控制其所属的 VLAN。

VLAN 设备总是以母子关系出现,母子设备之间是一对多的关系。 一个母设备(eth0)可以有多个子设备(eth0.10,eth0.20 ……),而一个子设备只有一个母设备。

 

四、Linux Bridge实现Vlan

(1)查看核心是否提供VLAN 功能,执行

# dmesg | grep -i 802

或者检查/proc/net/vlan目录是否存在。

如果沒有提供VLAN 功能,/proc/net/vlan目录是不存在的。

 

 

如果8021q模块没有载入系统,则可以通过使用modprobe模组命令载入802.1q模组,並且利用lsmod命令确认模组是否已经载入到核心内。

# modprobe 8021q

# lsmod | grep 8021q

 

 

设置开机载入8021q模块(可选)

在/etc/sysconfig/modules下增加一个8021q.modules文件,文件内容为modprobe 8021q

# vi /etc/sysconfig/modules/8021q.modules

modprobe 8021q

 

(2)安装查看用于查看Vlan配置的工具————vconfig

提前装备好vconfig-1.9-16.el7.x86_64.rpm

#rpm -ivh vconfig-1.9-16.el7.x86_64.rpm

#rpm -qa vconfig

 

 

 

(3)创建vlan接口

创建vlan接口前,在设备上添加一块网卡ens34,

网络配置如右图:

 

 

 

nmyui这个命令是由 systemctl status NetworkManager 管理

 

 

注意:

BOOTPROTO=static

基于网卡ens34建立vlan10,vlan20接口:ens34.10,ens34.20:

#vconfig add ens34 10

#vconfig add ens34 20

 

 

 

 

 

#cd /etc/sysconfig/network-scripts/

#cp ifcfg-ens34 ifcfg-ens34.10        -- 创建ens33.10接口配置文件

编辑ifcfg-ens34.10文件,增加/修改下面内容:

#vim ifcfg-ens34.10

VLAN=yes

TYPE=vlan

PHYSDEV=ens34

VLAN_ID=10

NAME=ens34.10

ONBOOT=yes

ZONE=trusted

DEVICE=ens34.10

BRIDGE=brvlan-10

 

#cp ifcfg-ens34.10 ifcfg-ens34.20

编辑ifcfg-ens34.20文件,增加/修改下面内容:

#vim ifcfg-ens34.20

VLAN=yes

TYPE=vlan

PHYSDEV=ens34

VLAN_ID=20

NAME=ens34.20

ONBOOT=yes

ZONE=trusted

DEVICE=ens34.20

BRIDGE=brvlan-20

 

(4)分别建立网桥brvlan-10,brvlan-20

#brctl addbr brvlan-10

#brctl addbr brvlan-20

#brctl show

 

 

 

(5)编辑网桥brvlan-10配置文件:

#vim ifcfg-brvlan-10

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-10

DEVICE=brvlan-10

ONBOOT=yes

 

编辑网桥brvlan-20配置文件:

#vim ifcfg-brvlan-20

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-20

DEVICE=brvlan-20

ONBOOT=yes

 

(6)将网桥brvlan-10接到网口ens34.10,brvlan-20接到网口ens34.20

#brctl addif brvlan-10 ens34.10

#brctl addif brvlan-20 ens34.20

#brctl show

 

 

 

(7)重新启动网络服务

#systemctl restart network

 

 

 

五、Vlan模式测试虚机

先将NetworkManager服务关闭

(1)在宿主机中已经提前创建好了虚机 VM1

在 virt-manager 中将 VM1 的虚拟网卡挂到 brvlan-10 上

 

 

 

(2)从VM1克隆一台虚机VM2

yum install virt* -y

virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.qcow2

(3)启动VM1和VM2,并配置ip

一个10.10.10.10/24

一个10.10.10.20/24

 

 

(4)查看 Bridge,发现 brvlan10 已经连接了 vnet0 vnet1设备。

 

要想通外网,重新给虚拟机配置网卡就可以

 

 

 

六、网卡配置bond(绑定)

 

 

(1)网卡bond(绑定),也称作网卡捆绑。就是将两个或者更多的物理网卡绑定成一个虚拟网卡。网卡是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用部署中是一种常用的技术。

      多网卡绑定实际上需要提供一个额外的软件的bond驱动程序实现。通过驱动程序可以将多块网卡屏蔽。对TCP/IP协议层只存在一个Bond网卡,在Bond程序中实现网络流量的负载均衡,即将一个网络请求重定位到不同的网卡上,来提高总体网络的可用性。

 

(2)网卡绑定的目的:

   1.提高网卡的吞吐量。

   2.增强网络的高可用,同时也能实现负载均衡。

 

(3)网卡配置bond(绑定)bond模式:

1、Mode=0(balance-rr) 表示负载分担round-robin,平衡轮询策略,具有负载平衡和容错功能

bond的网卡MAC为当前活动的网卡的MAC地址,需要交换机设置聚合模式,将多个网卡绑定为一条链路。

 

2、Mode=1(active-backup) 表示主备模式,具有容错功能,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。

    

3、Mode=2(balance-xor) 表示XOR Hash负载分担(异或平衡策略),具有负载平衡和容错功能

每个slave接口传输每个数据包和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)。

 

4、Mode=3(broadcast)  表示所有包从所有interface发出,广播策略,具有容错能力,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。  

 

5、Mode=4(802.3ad) 表示支持802.3ad协议(IEEE802.3ad 动态链接聚合) 和交换机的聚合LACP方式配合(需要xmit_hash_policy)。

 

6、Mode=5(balance-tlb) 适配器传输负载均衡,并行发送,无法并行接收,解决了数据发送的瓶颈。 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。  

 

7、Mode=6(balance-alb) 在5的tlb基础上增加了rlb。适配器负载均衡模式并行发送,并行接收数据包。

 

5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式,但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

 

常用的有三种:

 

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

 

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

 

mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

 

 

 

(4)网卡配置bond(绑定)

1、eth1,eth2,eth3都配置绑定为bond0,例如:

 

 

ens37之前被占用了,删除

删除之前虚拟机和网桥先脱离掉:————虚拟机强制关机

 

 

虚拟网卡和网桥脱离:

brctl delif brvlan-10 ens37.10

brctl delif brvlan-20 ens37.20

brctl show

 

删除网桥:

 

[root@localhost ~]# brctl delbr brvlan-10

bridge brvlan-10 is still up; can't delete it

命令不管用用nmtui

 

 

虚拟网口删除:

vconfig rem ens37.10

vconfig rem ens37.20

 

 

#cat ifcfg-eth1

TYPE=Ethernet

BOOTPROTO=none

DEVICE=eth1

ONBOOT=yes

MASTER=bond0

SLAVE=yes

 

载入bond模块:

#modprobe bonding

 

2、查看bond0,并桥接到br1

vim ifcfg-bond0

DEVICE=bond0

TYPE=Bond

NAME=bond0

BONDING_MASTER=yes

BOOTPROTO=static

USERCTL=no

ONBOOT=yes

#IPADDR=192.168.10.10

#PREFIX=24

#GATEWAY=192.168.10.19

BONDING_OPTS="mode=6 miimon=100"

BRIDGE=br1

 

3、查看网桥br0

vim ifcfg-br1

TYPE=Bridge

DEVICE=br1

ONBOOT=yes

BOOTPROTO=static

#IPADDR=192.168.10.1

#IPADDR1=192.168.20.1

#IPADDR2=192.168.30.1

#IPADDR3=192.168.40.1

#IPADDR4=192.168.50.1

#PREFIX3=24

#GATEWAY=172.16.0.1

#DNS1=172.16.254.251

#DNS2=223.5.5.5

NAME=br1

 

4、重启系统

查看网卡信息:

ethtool bond0

 

七、网卡配置bond+vlan实践

(1)创建bond0,并创建配置文件

(2)将bond0桥接到br1,并创建br1配置文件,重启网络服务

 

(3)在br1上,创建虚拟vlan网口:br1.10,br1.20,并创建配置文件

brctl addbr br1

brctl show

vconfig add br1 10

vconfig add br1 20

vim ifcfg-br1.10

VLAN=yes

TYPE=vlan

PHYSDEV=br1

VLAN_ID=10

NAME=br1.10

ONBOOT=yes

ZONE=trusted

DEVICE=br1.10

BRIDGE=brvlan-10

 

vim ifcfg-br1.20

VLAN=yes

TYPE=vlan

PHYSDEV=br1

VLAN_ID=20

NAME=br1.20

ONBOOT=yes

ZONE=trusted

DEVICE=br1.20

BRIDGE=brvlan-20

 

(4)创建brvlan-10,brvlan-20,并创建配置文件

brctl addbr brvlan-10

brctl addbr brvlan-20

brctl show

vim ifcfg-brvlan-10

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-10

DEVICE=brvlan-10

ONBOOT=yes

 

vim ifcfg-brvlan-20

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-20

DEVICE=brvlan-20

ONBOOT=yes

 

(5)将网桥与虚拟vlan网口连接

brctl addif brvlan-10 br1.10

brctl addif brvlan-20 br1.20

brctl show

 

(6)重启网络服务

systemctl restart network

 

 

 

 

 

 

 

 

 

 

 

 

Guess you like

Origin www.cnblogs.com/wete/p/11099546.html