OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机)

news2024/12/23 12:00:11

OVN Manual install & Configuration

Open vSwitch 官网

参考
OVN学习(一)

OVN实战一之GNS3操作指南及OVN入门

简单理解和知识

  1. 按照 OVN Manual install & Configuration 分别叫做 Controller 节点和 Compute 节点 ,其他一般叫做 Central 节点和 Node 或 Host 节点

  2. Open vSwitch(OVS)是一款开源的“虚拟交换机”

  3. Overlay协议方面它支持GRE, VXLAN, STT, Geneve四种主流Overlay数据包

  4. 2015年OVS社区宣布了一个子项目——Open Virtual Network(OVN)。它旨在为OVS提供一个控制平面,通过一个统一的网络模型为容器、虚拟机提供相同的网络服务。

  5. OVN的功能

     L2功能,叫Logical switches(逻辑交换机)
     
     L3功能,叫Logical Router(逻辑路由器)
     
     ACL,就像我们物理交换机可以配置ACL,OVN可以针对逻辑交换机添加ACL
     
     NAT,SNAT、DNAT都支持
     
     Load Balancer,支持面向内部的负载均衡和提供外部访问的负载均衡
    

学习环境

学习 OpenStack

2 个 Hyper-V 虚拟机

  1. Controller 节点 : Ubuntu 20.04
    Management : 192.168.0.101/24 ( 网关:192.168.0.81)
    Provider : 203.0.113.101 /24 ( 网关:203.0.113.1 )

  2. Compute 节点 :Ubuntu 20.04
    Management : 192.168.0.103/24 ( 网关:192.168.0.81)
    Provider : 203.0.113.103 /24 ( 网关:203.0.113.1 )

本文目的只在理解 Open vSwitch ,不在配置OpenStack

apt 安装

Ubuntu 20.04 上学习Open vSwitch :VxLAN
简单抄录一下

apt install openvswitch-switch

apt install python3-pip

pip3 install networking-ovn==4.0.4

apt install ovn-central ovn-common ovn-host

配置 OVN 2 L2 网络

以下应该使用管理( Management ) 网卡的IP (192.168.0.101)比较合理
在 OpenStack 配置中也是使用Management 的 IP
前次学习时直接使用的 Provider 网卡 IP ,相当于单网卡操作
本文重点在于理解 OVN ,所以,不再修改了

  1. 在 Controller 节点 ( 203.0.113.101 )上

    ovn-nbctl set-connection ptcp:6641:203.0.113.101
    ovn-sbctl set-connection ptcp:6642:203.0.113.101

    root@ubuntu2004-101:/home/dhbm# netstat -lntp

     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
     tcp        0      0 203.0.113.101:6641      0.0.0.0:*               LISTEN      820/ovsdb-server    
     tcp        0      0 203.0.113.101:6642      0.0.0.0:*               LISTEN      821/ovsdb-server    
     ......
    

    ovs-vsctl set open . external-ids:ovn-remote=tcp:203.0.113.101:6642
    ovs-vsctl set open . external-ids:ovn-encap-type=geneve
    ovs-vsctl set open . external-ids:ovn-encap-ip=203.0.113.101

  2. 在 Compute 节点 ( 203.0.113.103 )上

    ovs-vsctl set open . external-ids:ovn-remote=tcp:203.0.113.101:6642
    ovs-vsctl set open . external-ids:ovn-encap-type=geneve
    ovs-vsctl set open . external-ids:ovn-encap-ip=203.0.113.103

    root@ubuntu2004-103:/home/dhbm# netstat -antp |grep 6642

     tcp        0      0 203.0.113.103:53342     203.0.113.101:6642      ESTABLISHED 948/ovn-controller 
    
  3. 网络拓扑

在这里插入图片描述

构建 L2 网络 (逻辑交换机)

  1. 查询 203.0.113.101 和 203.0.113.103 的 eth1 网卡 mac 地址,后续需要用到

root@ubuntu2004-101:/home/dhbm# ip a

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:5a:a6:91 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.101/24 brd 203.0.113.255 scope global eth1

root@ubuntu2004-103:/home/dhbm# ip a

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:5a:a6:92 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.103/24 brd 203.0.113.255 scope global eth1
       valid_lft forever preferred_lft forever
  1. 在 Controller 节点 ( 203.0.113.101 )上
    创建一个逻辑交换机,然后添加两个交换机端口,并为端口设置物理地址,分别对应 2 个节点服务器上的 eth1 网卡

    在 OpenStack 中,这 2 个 eth1 网卡,充当了 Provider 角色,为每一个 instance ( 虚拟机 ) 提供Provider network 和 Self-service network 地址

    1). 创建 logical switch

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl ls-add ls-test
    

    2). 第一个端口 ( mac 地址 00:15:5d:5a:a6:91)

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-add ls-test lsport-101
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-addresses lsport-101 00:15:5d:5a:a6:91
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-port-security lsport-101 00:15:5d:5a:a6:91
    

    3). 第二个 ( mac 地址 00:15:5d:5a:a6:92)

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-add ls-test lsport-103
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-addresses lsport-103 00:15:5d:5a:a6:92
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-port-security lsport-103 00:15:5d:5a:a6:92
    
  2. 查看确认
    root@ubuntu2004-101:/home/dhbm# ovn-nbctl show

     switch 9d86d6cb-f4d9-4969-b675-e6becddf52da (ls-test)
         port lsport-103
             addresses: ["00:15:5d:5a:a6:92"]
         port lsport-101
             addresses: ["00:15:5d:5a:a6:91"]
    

    root@ubuntu2004-101:/home/dhbm# ovn-sbctl show

     Chassis "cc2e2b70-3a89-4dd5-b53c-71e9116d687a"
         hostname: ubuntu2004-101
         Encap geneve
             ip: "203.0.113.101"
             options: {csum="true"}
         Port_Binding lsport-101
     Chassis "c5ea0556-ef1a-4d7f-a5ff-cf1cc52e4389"
         hostname: ubuntu2004-101
         Encap geneve
             ip: "203.0.113.103"
             options: {csum="true"}
         Port_Binding lsport-103
    

模拟伪造虚拟机

这个相当于 OpenStack 中 Launch an instance

通过名称空间将全局系统资源包装在一个抽象中,使名称空间中的进程看起来拥有自己的全局资源的独立实例

详细解读Linux网络命名空间,veth, birdge与路由

以上构建的是 L2 逻辑交换机,所以,虚拟机只能处于同一个网段 10.0.0.0/24

  1. 在 Controller 节点 ( 203.0.113.101 )上模拟一个虚拟机:vm1-101,并将它的网卡 link 到上一步创建的交换机端口 lsport-101 (address 00:15:5d:5a:a6:91),分配内网地址: 10.0.0.101/24

     # ip netns add vm1-101
     
     # ovs-vsctl add-port br-int vm1-101 -- set interface vm1-101 type=internal
     
     # ip link set vm1-101 netns vm1-101
     
     # ip netns exec vm1-101 ip link set vm1-101 address 00:15:5d:5a:a6:91
     
     # ip netns exec vm1-101 ip addr add 10.0.0.11/24 dev vm1-101
     
     # ip netns exec vm1-101 ip link set vm1-101 up
     
     # ovs-vsctl set Interface vm1-101 external_ids:iface-id=lsport-101
     
     # ovs-vsctl set Interface vm1-101 external_ids:iface-id=lsport-101
    

2, 查看虚拟机 vm1-101 地址信息
root@ubuntu2004-101:/home/dhbm# ip netns exec vm1-101 ip addr show

	1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
	    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
	7: vm1-101: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
	    link/ether 00:15:5d:5a:a6:91 brd ff:ff:ff:ff:ff:ff
	    inet 10.0.0.101/24 scope global vm1-101
	       valid_lft forever preferred_lft forever
	    inet6 fe80::215:5dff:fe5a:a691/64 scope link 
	       valid_lft forever preferred_lft forever
  1. 在 compute 节点 ( 203.0.113.103 )上模拟一个虚拟机:vm1-103,并将它的网卡 link 到上一步创建的交换机端口 lsport-103 (address 00:15:5d:5a:a6:92),分配内网地址: 10.0.0.101/24

     # ip netns add vm1-103
     
     # ovs-vsctl add-port br-int vm1-103 -- set interface vm1-103 type=internal
     
     # ip link set vm1-103 netns vm1-103
     
     # ip netns exec vm1-103 ip link set vm1-103 address 00:15:5d:5a:a6:92
     
     # ip netns exec vm1-103 ip addr add 10.0.0.103/24 dev vm1-103
     
     # ip netns exec vm1-103 ip link set vm1-103 up
     
     # ovs-vsctl set Interface vm1-103 external_ids:iface-id=lsport-103
    
  2. 查看虚拟机 vm1-103 地址信息

    root@ubuntu2004-103:/home/dhbm# ip netns exec vm1-103 ip addr show

     1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
         link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     7: vm1-103: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 00:15:5d:5a:a6:92 brd ff:ff:ff:ff:ff:ff
         inet 10.0.0.103/24 scope global vm1-103
            valid_lft forever preferred_lft forever
         inet6 fe80::215:5dff:fe5a:a692/64 scope link 
            valid_lft forever preferred_lft forever
    

虚拟机之间连通性测试

这个相当于 OpenStack 中各个 instance 之间互相连通和访问

  1. 从 vm1-101 ping vm1-103 的 IP

root@ubuntu2004-101:/home/dhbm# ip netns exec vm1-101 ping -c 2 10.0.103

	PING 10.0.103 (10.0.0.103) 56(84) bytes of data.
	64 bytes from 10.0.0.103: icmp_seq=1 ttl=64 time=1.64 ms
	64 bytes from 10.0.0.103: icmp_seq=2 ttl=64 time=0.433 ms
	
	--- 10.0.103 ping statistics ---
	2 packets transmitted, 2 received, 0% packet loss, time 1002ms
	rtt min/avg/max/mdev = 0.433/1.038/1.644/0.605 ms
  1. 从 vm1-103 ping vm1-101 的 IP

    root@ubuntu2004-103:/home/dhbm# ip netns exec vm1-103 ping -c 2 10.0.101

     PING 10.0.101 (10.0.0.101) 56(84) bytes of data.
     64 bytes from 10.0.0.101: icmp_seq=1 ttl=64 time=1.56 ms
     64 bytes from 10.0.0.101: icmp_seq=2 ttl=64 time=0.425 ms
     
     --- 10.0.101 ping statistics ---
     2 packets transmitted, 2 received, 0% packet loss, time 1002ms
     rtt min/avg/max/mdev = 0.425/0.994/1.564/0.569 ms
    

清理现场

  1. 在 Controller 节点 ( 203.0.113.101 )上
    删除逻辑交换机及其端口
    ovn-nbctl ls-del ls-test

    删除模拟虚拟机
    ip netns del vm1-101
    ovs-vsctl --if-exists --with-iface del-port br-int vm1-101

  2. 在 compute 节点 ( 203.0.113.103 )上

    删除模拟虚拟机
    ip netns del vm1-103
    ovs-vsctl --if-exists --with-iface del-port br-int vm1-103

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio 打一个正式签名的Apk

如何打一个带正式签名文件的app (给自己的劳动成果冠名) 1. 选择build -> generate signed bundle/apk 2. 这里有两个选择, bundle or apk, 我们选择apk 于是勾选 apk, 并点下一步 3. 来到选择证书文件的地方, 但是我们这是第一次做, 还没有证书文件, 所以选择新建一个证…

【Docker学习系列】Docker学习2-docker设置阿里云镜像加速器

在上一篇中&#xff0c;我们学会了在centos中安装docer。我们知道&#xff0c;镜像都是外网的&#xff0c;镜像一般都是比较大的&#xff0c;因为种种原因&#xff0c;我们知道&#xff0c;从外网下载比较慢的。所以&#xff0c;本文&#xff0c;凯哥就介绍怎么将docker的镜像拉…

keil5打开keil4工程无法编译的情况解决办法!!!!!!

目录 1.情况 1.keil5使用&#xff08;打开&#xff09;keil4文件工程的时候报错 2.解决办法 如果是kei5打开kei4工程文件出现 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 1.情况 1.keil5使用&#xff08;打开&#xff09;keil4文件工程的时候报错 --- Erro…

vscode插件开发

作为一个前端开发相信&#xff0c;大家对于vscode非常熟悉。vscode是微软开源的一款基于 Electron 开发的代码编辑器。并且vscode支持通过插件来扩展编辑器的功能&#xff0c;比如Prettier插件帮助我们快速格式化代码&#xff0c;ES7 React/Redux/React-Native snippets插件帮助…

Kotlin高仿微信-第31篇-支付-服务

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

hadoop集群中存在配置较低的数据节点应用如何应对磁盘数据溢满的问题之rebalance

现象 登录hdfs web ui发现集群中一个节点的负载远高于另外的节点 分析 一般情况下集群在数据盘配置一样&#xff0c;几乎使用不到rebalance&#xff0c;但是我们的集群中有一个比较小的数据节点&#xff0c;因此我们需要关注各节点数据分布情况&#xff0c;及时进行rebalan…

手撕一个图片色卡提取器,可自定义提取色卡数量!

在一些特殊的业务场景中&#xff0c;我们需要一次性提取一张图片中的色卡信息&#xff0c;并且需要使用十六进制的颜色表示方法进行展示。 今天得空做了一个小工具&#xff0c;用来自定义的提取某一张图片中的色卡信息&#xff0c;需要提取某张图片中的色卡可以自行选择。 实现…

Python基础之SQLite数据库

Python与SQLite数据库 一、概述 对于非常简单的应用而言&#xff0c;使用文件作为持久化存储通常就足够了&#xff0c;但是大多数复杂的数据驱动的应用则需要全功能的关系数据库。 SQLite 的目标则是介于两者之间的中小系统。它量级轻、速度快&#xff0c;没有服务器&#xf…

数学辅导微信小程序设计与实现的源码+文档

摘 要 网络的广泛应用给生活带来了十分的便利。所以把数学辅导管理与现在网络相结合&#xff0c;利用java技术建设数学辅导微信小程序&#xff0c;实现数学辅导的信息化。则对于进一步提高数学辅导管理发展&#xff0c;丰富数学辅导管理经验能起到不少的促进作用。 数学辅导微…

【python】 int、float、double与16进制字符串的互相转换

import structdef intToHex(num): # int转16进制return hex(num)[2:].upper()def hexToInt(hexString): # 16进制转intreturn int(hexString, 16)def floatToHex(floatValue): # float转16进制return struct.pack(>f, floatValue).hex().upper()def hexToFloat(hexString…

chloris.earth ——Chloris 全球生物量 2003 - 2019 数据平台

概述 Chloris 全球生物量 2003 - 2019 数据集提供了地球陆地木本植被生态系统地上生物量存量和变化的估计值。它涵盖 2003 年至 2019 年期间&#xff0c;按年度时间步长计算。全球数据集的空间分辨率约为 4.6 公里。 这些地图和数据集是通过结合来自星载卫星的多个遥感测量结果…

如何保证PCB孔铜高可靠?

PCB板上电路导通&#xff0c;都是靠线路或过孔来传导的&#xff0c;从PCB制造流程可以看出&#xff0c;PCB完成铜厚是由PCB基铜厚度加板电厚度加图电厚度三部分组成&#xff0c;PCB孔铜厚度&#xff0c;是在两个电镀流程中完成&#xff0c;即全板电镀孔铜的厚度加图形电镀孔铜厚…

k8s概念

文章目录k8s概念为什么叫他k8s以及谁开发的k8s是什么k8s特点时光回溯传统部署时代&#xff1a;虚拟化部署时代容器部署时代&#xff1a;容器的优点为什么需要k8s&#xff0c;他能做什么&#xff1f;Kubernetes 不是什么&#xff1f;k8s概念 为什么叫他k8s以及谁开发的 kubern…

EO.Web浏览器 v2023.0.18.0 for .NET -- EO.WebBrowser

.NET PDF 和 Web 浏览器从未如此简单 使用 PDF 文件生成/处理能力快速扩展您的 .NET 应用程序&#xff0c;或者将流行的 Chromium 浏览器引擎与广泛的自定义选项&#xff08;如自定义资源加载器和 JavaScript 扩展&#xff09;无缝集成用于 UI 或后台任务。 当前&#xff1a;v2…

steam搬砖项目,小白也能月入过万的副业项目

steam搬砖这个项目&#xff0c;我们做了3年了&#xff0c;项目很稳定。由于项目是轻资产&#xff0c;门槛低&#xff0c;按照我们的方法&#xff0c;只要你足够勤快&#xff0c;这是一个能帮你赚取人生的第一桶金的项目。 仅代表个人收益 steam项目原理就是&#xff1a;倒卖cs…

移动端异构运算技术 - GPU OpenCL 编程(基础篇)

一、前言 随着移动端芯片性能的不断提升&#xff0c;在移动端上实时进行计算机图形学、深度学习模型推理等计算密集型任务不再是一个奢望。在移动端设备上&#xff0c;GPU 凭借其优秀的浮点运算性能&#xff0c;以及良好的 API 兼容性&#xff0c;成为移动端异构计算中非常重要…

小巧有劲的按摩好手,能装兜里的护理工具,小鸟斗士筋膜枪体验

现在很多朋友为了身体健康&#xff0c;平时都会去做些简单的健身&#xff0c;因为之前长期不运动&#xff0c;所以健身后很容易有肌肉酸痛等问题&#xff0c;对此&#xff0c;筋膜枪是个很好用的工具&#xff0c;可以有效促进血液循环&#xff0c;还能够缓解久坐所导致的腰背酸…

java面试强基(16)

说说 List, Set, Queue, Map 四者的区别&#xff1f; List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序&#xff0c;存储的元素是有序的、可…

壳寡糖/肉桂醛修饰乳清蛋白,乳清浓缩蛋白-羟丙基甲基纤维素复合材料

产品名称&#xff1a;壳寡糖修饰乳清蛋白 英文名称&#xff1a;Chitosan-whey protein 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 壳寡糖&#xff0c;又叫…

【图文详解】入职必备——SVN使用教程

一、SVN基本操作 1、进入svnbucket官网&#xff0c;创建一个空项目&#xff0c;学习svn 2、创建好测试项目后&#xff0c;复制对应地址 3、右键点击“SVN 检出” 4、粘贴“版本库URL”&#xff0c;填写“检出至目录”&#xff0c;最后点击“确定” 5、完善“用户名”和“密码”…