概述
尽量少贴概念,只同步一些必要的名词。
central: 可以看做中心节点,central节点组件包括OVN/CMS plugin、OVN Northbound DB、ovn-northd、OVN Southbound DB。
hypervisor: 可以看做工作节点,hypervisor节点组件包括ovn-controller、ovs-vswitchd、ovsdb-server。
(central节点相关组件和hypervisor组件可以运行在同一个物理节点上)
本次实验主要是L2互通测试,即在HV上创建同网段两个容器,通过分布式逻辑交换机互通。
物理组网
central:172.16.181.18
HV:host43 172.16.181.43、host44 172.16.181.44
逻辑组网
容器red11和red12分别在不同controller上封装geneve通过ls-red互通,ls-red是分布式逻辑交换机,
安装
根据不同角色安装所需的软件包
Central:
wget -O /etc/yum.repos.d/ovs.repo https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-stable-release/repo/epel-7/leifmadsen-ovs-stable-release-epel-7.repo --no-check-certificate
yum install -y openvswitch-ovn-central.x86_64 openvswitch-ovn-host.x86_64
systemctl start ovn-northd.service
systemctl enable ovn-northd.service
HV:
wget -O /etc/yum.repos.d/ovs.repo https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-stable-release/repo/epel-7/leifmadsen-ovs-stable-release-epel-7.repo --no-check-certificate
yum install -y openvswitch.x86_64 openvswitch-ovn-host.x86_64
systemctl enable openvswitch.service ovn-controller.service
systemctl start ovn-controller.service
配置
Central 开放接口
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
开放北向接口6641,南向接口6642:
ovn-nbctl set-connection ptcp:6641:172.16.181.18
ovn-sbctl set-connection ptcp:6642:172.16.181.18
netstat -lntp
Controller 对接Central南向接口
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
host43连接Central南向数据库:
ovs-vsctl set open . external-ids:ovn-remote=tcp:172.16.181.18:6642
ovs-vsctl set open . external-ids:ovn-encap-type=geneve
ovs-vsctl set open . external-ids:ovn-encap-ip=172.16.181.43
netstat -antp | grep ovn 可以看到6642 ESTABLISHED状态
类似操作配置host44
操作完后,在central南向数据库显示两个chassis
ovn-sbctl show
在其中一台host43上,显示到host44的geneve接口
ovs-vsctl show
HV上新建容器
host43:
新建容器red11
docker pull busybox
docker run -itd --name=red11 --net=none --privileged=true busybox
容器连接到br-int
ovs-docker add-port br-int ifred11 red11
ovs-vsctl show 会显示在br-int上增加了1个port: 91c34a4207a94
绑定接口
ovs-vsctl set interface 91c34a4207a94_l external_ids:iface-id=ifred11 (ifred11是稍后配置在central上的名称)
设置red11的MAC和IP
docker exec -it red11 sh 进入red11
ip link set ifred11 address 00:00:00:00:01:11 (修改一个简单的数值)
ip add add 192.168.1.11/24 dev ifred1
配置逻辑交换机
在Central上,新建ls-red
ovn-nbctl ls-add ls-red
添加接口,这里绑定mac地址要和对应的容器一致
ovn-nbctl lsp-add ls-red ifred11
ovn-nbctl lsp-set-addresses ifred11 00:00:00:00:01:11
ovn-nbctl lsp-set-port-security ifred1 00:00:00:00:01:11
添加完接口后
chassis host43会显示绑定接口ifred11
类似步骤在ls-red上添加ifred12接口,并在host44上配置容器red12将接口绑定到逻辑交换机上。
检查最终状态
central,显示北向接口数据库总共两个接口ifred11、ifred12
central,南向接口数据库显示host43绑定接口ifred11,host44绑定接口ifred12
测试
在red11 ping red12
docker exec -it red11 sh
ping 192.168.1.12
显示可以ping 通
物理网卡抓包,可以看到外层源目IP是HV的物理口IP,端口号UDP6081,内层源目IP是容器IP,vni 1,
后续再更新L3互通。