Openstack二层网络的构建和使用

Openstack二层网络的构建和使用

一、实验目的

(1)了解网络层级、子网、动态地址、网关代理等概念并进行应用。
(2)了解OpenStack项目以及相关组件。
(3)了解 Neutron 二层网络的构建和使用。

二、实验原理或预习内容

(1)计算机网络基础理论知识
(2)软件定义网络基础知识及应用
(3)OpenStack云平台管理架构
(4)Neutron虚拟节点、服务代理等结构

三、实验环境

(1)硬件环境需求
个人PC设备或远程虚拟服务器一台。
(2)软件环境需求
Windows10系统,Ubuntu20.04虚拟机,python运行环境(包括Neutron相关依赖),集成式开发环境

四、实验内容

(1)任务概述
在使用Openstack任意实现版本的云平台上搭建二层网络,设置子网和路由,并将虚拟机连入网络。
步骤 主要内容
1.创建L2 network 在云平台创建二层网络demo-net
2.为L2 network创建子网 在二层网络上进行vlan划分以创建子网demo-subnet
3.新建虚拟机 建立虚拟机vm1和vm2并连接到子网
4.另建新的虚拟机 新建二层网络demo-net1,创捷vm3并连接到另一个子网。
5.虚拟机间连通实验以及对外访问实验。 创建路由,连接vm1和vm3分别所在的子网,进行虚拟机连通实验。设置路由连接子网与对外网络,进行虚拟机访问外部网络实验。
6.在L2网络上增加其他内容 创建自定义镜像、设置静态路由等进行网络请求重定向,或者对外提供web服务等。由学生自行设计。
(2)补充知识

1.权限控制

Openstack可以创建多个用户,为每个用户赋予权限,并进行访问控制。用户创建的资源(网络、实例、路由等)有私有、共享和公开三种访问限制。

2.虚拟网络

一个虚拟网络对应一组设备以及相关的安全组、元数据等参数。一个虚拟网络可以有多个子网,每个子网有自己的网络段号(对应Vlan段号)。默认情况下子网网关为其可用ip地址的第一个地址。

3.虚拟交换机(路由)

在dashboard中创建路由时会自动创建虚拟交换机。虚拟交换机只能连接虚拟网络,并且连接时会自动创建虚拟端口。
一个 Port 代表虚拟网络交换机(logical network switch)上的一个虚机交换端口(virtual switch port)。虚机的网卡(VIF - Virtual Interface)会被连接到 port 上。当虚机的 VIF 连接到Port 后,这个 vNIC 就会拥有 MAC 地址和 IP 地址。Port 的 IP 地址是从 subnet 中分配的。默认情况下虚拟交换机ip为虚拟网络的网关ip。

4.虚拟机

在openstack中可以使用镜像和其他配置设置创建虚拟机实例。虚拟机实例的状态包括正在创建、初始化、孵化、重启、运行、错误等状态。可以自行上传镜像并自定义系统启动脚本。

5.自动部署openstack

Openstack包含keystone、neutron、nova等多个组件。并依赖mysql和rabbitmq等服务。完全手工部署较为复杂。社区中推荐使用kolla或者devstack这类自动部署工具进行部署。这里以devstack为例,部署步骤如下:
1)使用VMware或Virtual Box等工具,创建虚拟机并安装Ubuntu 20.04LTS系统。虚拟机系统配置和虚拟机磁盘配置尽量设置高一点,创建时勾选虚拟机硬件虚拟化选项(最低配置为4核8线程,40GB硬盘空间)。
2)下载devstack
git clone https://opendev.org/openstack/devstack
3)创建local.conf文件
这一步的目的是为部署的devstack平台设置默认账户和密码

# 切换到devstack目录
cd devstack# 创建配置文件
vim local.conf# 添加以下内容到local.conf文件
[[local|localrc]]
ADMIN_PASSWORD=123456 # your_password
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

4)开始安装
在devstack目录下执行脚本
./stack.sh(由于安装时间较长,建议配合screen和tee使用,避免虚拟机挂起导致的安装失败和系统错误。)
启动安装后首先会要求为几个服务设置密码。之后是漫长的下载组件和安装配置过程。GitHub网络你懂的,顺利的话大约需要30-60分钟。
5)出错重试
安装过程中如果出错(报Error等),需要中断安装进程,然后执行devstack下的clean.sh和unstack.sh脚本进行清理。之后方可再次尝试安装。
6)启动dashboard
若部署完成,会得到success信息。并得到dashboard和keystone的地址。
使用浏览器打开dashboard,账号密码之前已在local.conf中设置。
在这里插入图片描述
7)补充
a. 某些博客的指导要求创建新的系统用户stack再进行安装。实际上这是个可选项,可以跳过。
b. devstack有很多社区版本(pike、queens等),但直接拉取master的版本就行,官方已经适配ubuntu20.04。若运行stack.sh后提示add FORCE=yes,说明你的系统版本与devstack版本不符,可以使用以下命令强制运行,但不保证成功。
FORCE=yes ./stack.sh
c. 添加admin-source并使用source指令包含环境的目的是为了在shell中访问openstack组件,只使用dashboard的话不需要这一步骤。
d. 安装时若出现报错 “connection timeout”或者443错误等,并且与下载依赖相关,说明可能是网络环境问题,可以挂载VPN或更换国内镜像源解决。某些依赖也可以自己通过包管理工具下载。
e. 部署时出现报错“no module named pip”或“unable to install pip”等报错。
这是因为devstack尝试安装pip3导致的错误。首先应当重装pip3。
apt-get purge python3-pip
apt-get install -y python3-pip
然后找到devstack/tools/install_pip.py文件,搜索找到install_get_pip这个函数的调用,将其注释掉。
f. 部署时出现报错 “failed to create symbolic link /var/run/ovn/openswitch, File exists”。
一般是由于出错重试之前没有执行清理脚本,找到/var/run/ovn/openswitch(应该是一个链接)并删除即可。
g. 部署时出现报错“ERROR /opt/stack/devstack/lib/neutron_plugins/ovn_agent:174 Socke”
这是由于openvswitch和ovn工具的路径冲突,首先打开目标文件:
vim devstack/lib/neutron_plugins/ovn_agent
找到大约在114行的这样一句:
OVS_RUNDIR= O V S P R E F I X / v a r / r u n / o p e n v s w i t c h 修改为: O V S R U N D I R = OVS_PREFIX/var/run/openvswitch 修改为: OVS_RUNDIR= OVSPREFIX/var/run/openvswitch修改为:OVSRUNDIR=OVS_PREFIX/var/run/ovn
然后删除ovn目录:
sudo rm -rf /var/run/ovn/
执行stack的清理脚本,重启系统后进行重新部署。

五、实验步骤

1.创建二层网络(L2 network)

在构建完毕云平台和正常启动所有物理节点后,一个大二层网络便已创建完毕。用户需要做的是基于该网络划分自己的 vlan,即建立一个 L2 network。举例来说,用户 (例如 demo 用户)可以在自己的 project 下创建网络(L2 network),该网络就是在大二层的基础上划分出来的,是一个隔离的二层网段。这类似于物理网络世界中的虚拟 LAN (VLAN)。 每一个新的L2 network被建立时会被分配一个段 ID,该段 ID 标识一个广播域。这个 ID 是被随机分配的,除非使用管理员身份在管理员菜单中手动指定该 ID。

2.为新建的二层网络创建子网

子网是一组 IPv4 或 IPv6 地址以及与其有关联的配置。它是一个地址池,OpenStack 可 从中向虚拟机(VM)分配 IP 地址。每个子网指定为一个无类别域间路由(Classless Inter-Domain Routing)范围,必须与一个网络相关联。除了子网之外,租户还可以指定一个网关、一个域 名系统(DNS)名称服务器列表,以及一组主机路由。这个子网上的 VM 实例随后会自动继承 该配置。
子网DNS服务器视自己的网络环境配置。一般可为8.8.8.8或114.114.114.114(电信DNS)。

3.新建虚拟机

在项目->计算->实例处新建2个实例。
使用openstack自带的cirros镜像,创建新卷选择否(否则可能因为虚拟机外存管理的原因导致创建失败)。
实例类型任意选择,这里选择性能适中的cirros256。
为实例选择刚才创建的子网络。
创建完毕后等待实例孵化和初始化完成。
实例正常运行后,可以通过控制台访问实例。

4.另建新的的虚拟机

创建新的网络与实例vm3,步骤与之前类似。这里使用openstack初始创建的shared网络。完成后拓扑图如下:
在这里插入图片描述

5.虚拟机间连通实验

1)公网对外连通
openstack已经初始创建了对外公网public。但此时它尚未通过网桥取得对外的NAT代换服务,因此无法对外访问。回到ubuntu上执行以下命令:
ifconfig br-ex 172.24.4.1/24
iptables -t nat -I POSTROUTING -s 172.24.4.0/24 -j MASQUERADE
iptables -I FORWARD -s 172.24.4.0/24 -j ACCEPT
iptables -I FORWARD -d 172.24.4.0/24 -j ACCEPT
其中172.24.4.1是public的ip地址。
2)新建路由
拖过拓扑或者网络新建路由。连接之前创建的两个子网以及对外公网public。
新建路由时选择外部网络public,并为路由增加到两个子网的连接。
3)使用vm1尝试ping vm2、vm3、外部网址

6.在L2网络上增加其他内容

自定义实例镜像并通过控制台访问控制结点ftp服务器。

六、实验过程描述和运行结果截图

1.创建二层网络(L2 network)

创建xhm-net网络
在这里插入图片描述
查看新建网络xhm-net的段ID:
在这里插入图片描述

2.为新建的二层网络创建子网

创建子网xhm-subnet:
在这里插入图片描述
在这里插入图片描述
查看新建子网的信息。创建的子网类似于使用一台交换机分出了一个VLAN:
在这里插入图片描述

3.新建虚拟机

在项目->计算->实例处新建2个实例。

在这里插入图片描述
使用openstack自带的cirros镜像,创建新卷选择否(否则可能因为虚拟机外存管理的原因导致创建失败)。
在这里插入图片描述
实例类型任意选择,这里选择性能适中的cirros256。
在这里插入图片描述
为实例选择刚才创建子网络xhm-subnet。
在这里插入图片描述
创建完毕后等待实例孵化和初始化完成:
在这里插入图片描述
等待实例正常运行:
在这里插入图片描述
可以通过控制台访问实例:
在这里插入图片描述
在这里插入图片描述

4.另建新的的虚拟机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.虚拟机间连通实验

1)公网对外连通
openstack已经初始创建了对外公网public。但此时它尚未通过网桥取得对外的NAT代换服务,因此无法对外访问。回到ubuntu上执行以下命令:
ifconfig br-ex 172.24.4.1/24
iptables -t nat -I POSTROUTING -s 172.24.4.0/24 -j MASQUERADE
iptables -I FORWARD -s 172.24.4.0/24 -j ACCEPT
iptables -I FORWARD -d 172.24.4.0/24 -j ACCEPT
其中172.24.4.1是public的ip地址。
在这里插入图片描述
2)新建路由
拖过拓扑或者网络新建路由。连接之前创建的两个子网以及对外公网public。
新建路由时选择外部网络public。
在这里插入图片描述
为路由增加到两个子网的连接:
在这里插入图片描述
在这里插入图片描述
现在网络拓扑图如下:
在这里插入图片描述
3)使用vm1尝试ping vm2、vm3、外部网址
在这里插入图片描述

6.在L2网络上增加其他内容

(1) 自定义镜像

在这里插入图片描述

(2)自定义镜像的实例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3) 启动实例
在这里插入图片描述
在这里插入图片描述
(4)服务端(控制结点):
sudo apt-get install vsftpd
cp vsftpd.conf vsftpd.conf.bak
sudo vim /etc/vsftpd.conf # 配置文件
sudo useradd -d /home/ftp -s /bin/bash ftpuser
sudo passwd ftpuser # 密码:123456
sudo mkdir /home/ftp
sudo chown ftpuser:ftpuser /home/ftp
sudo chmod 555 /home/ftp
sudo mkdir /home/ftp/Down
sudo chown ftpuser:ftpuser /home/ftp/Down #修改其用户组和拥有者为ftpuser
sudo mkdir /home/ftp/Up
sudo chown ftpuser:ftpuser /home/ftp/Up
sudo chmod 555 /home/ftp/Down #修改 Down 目录下文件仅仅能下载
sudo chmod 777 /home/ftp/Up #修改 Up 目录下能下载、上传、删除
sudo vim /etc/vsftpd.chroot_list # 添加ftpuser
sudo service vsftpd restart
touch /home/ftp/Down/testDown.txt
touch /home/ftp/Up/testUp.txt

在这里插入图片描述
(5)客户端(计算实例):
sudo apt-get install lftp
lftp ftpuser@192.168.38.131 # 控制结点ip
get Down/testDown.txt
get Up/testUp.txt
在这里插入图片描述

七、实验结论与体会

与老师所给实验报告模板中所说的“推荐配置”不同,虚拟机系统配置和虚拟机磁盘配置尽量设置高一点,创建时勾选虚拟机硬件虚拟化选项(最低配置为4核8线程,50GB硬盘空间,否则无法实验!)。
由于GitHub网络极不稳定,安装过程很坎坷。眼看时间来不及了,找了安装成功的同学要了系统镜像才得以顺利实验,而真正的实验内容并不复杂。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat Listener 内存马浅谈

本文来源无问社区,更多实战内容可前往查看http://www.wwlib.cn/index.php/artread/artid/3651.html Tomcat 介绍 Tomcat的主要功能 toncat作为一个web服务器,实现了两个核心的功能 http 服务器功能:进行socket 通信(基于TCP/I…

案例分享—国外深色UI界面设计赏析

在国外,深色界面设计(Dark Mode)已成为提升用户体验的重要趋势。它不仅有效减少屏幕亮度,保护用户视力,还能在夜晚或低光环境下提供更加舒适的浏览体验。设计师们普遍认识到,深色主题不仅提升了应用的视觉层…

Vue中下载内容为word文档

1.使用 html-docx-js:这是一个将 HTML 转换为 Word 文档的库。 2. 利用 Blob 和 FileSaver.js:创建并下载生成的 Word 文档。 在 Vue.js 中实现步骤如下: 1. npm 安装 html-docx-js 和 file-saver npm install html-docx-js npm install file-saver2.…

【vue教程】六. Vue 的状态管理

目录 往期列表本章涵盖知识点回顾Vuex 的基本概念什么是 Vuex?为什么需要 Vuex? Vuex 的核心概念stategettersmutationsactionsmodules Vuex 的安装和基本使用安装 Vuex创建 store在 Vue 应用中使用 store在组件中访问和修改状态 Vuex 的模块化模块化的好…

2024新型数字政府综合解决方案(七)

新型数字政府综合解决方案通过集成人工智能、大数据、区块链和云计算技术,创建了一个高度智能化和互联互通的政府服务平台,旨在全面提升行政效率、服务质量和透明度。该平台实现了跨部门的数据整合与实时共享,利用人工智能进行智能决策支持和…

PCRNet: Point Cloud Registration Network using PointNet Encoding 论文解读

目录 一、导言 二、先导知识 1、Frobenius范数 三、相关工作 1、点云配准工作 2、PointNet 3、基于深度学习的点云配准 四、PCRNet 1、PCRNet 2、Iterative PCRNet 3、损失函数 五、实验 一、导言 本论文收录于CVPR2019,本论文提出了一种依赖PointNet网…

11.2.0.4 RAC 节点1重做操作系统后如何复原

环境描述:Redhat7.9 11.2.0.4 RAC 双节点 实验背景 群里有大佬在交流RAC中1个节点操作系统坏了如何修复,故有了该实验。 在正常的生产环境当中,有时候会遇到主机磁盘以及其他硬件故障导致主机OS系统无法启动,或者OS系统本身故障…

【海奇HC-RTOS平台E100-问题点】

海奇HC-RTOS平台E100-问题点 ■ btn 没有添加到group中 ,怎么实现的事件的■ 屏幕是1280*720, UI是1024*600,是否修改UI■ hc15xx-db-e100-v10-hcdemo.dtb 找不到■ 触摸屏驱动 能否给个实例■ 按键驱动■ __initcall(projector_auto_start)■ source insigt4.0 #if…

【esp32程序编译提示undefined reference to ‘xxxx‘】

案例1: 【背景】 在使用SquareLine Studio设计UI时,成功导出UI代码,在编译代码的时候提示undefined reference to ‘ui_img_1869164015’,有一个变量无法识别,没有定义。 【定位步骤】 1.首先找到用这个变量的.c文件…

复现DOM型XSS攻击(1-8关)

目录 第一关:​ 分析代码: 第二关: 分析代码: 第三关: 分析代码: 第四关: 分析代码: 第五关: 分析代码: 第六关: 分析代码&#xff1…

SpringBoot依赖之Spring Data Redis 一 List 类型

概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and muc…

Spring源码-源码层面讲解bean标签添加了lookup-method和replaced-method标签之后源码执行流程,以及对象实例化的流程

bean.xml文件添加lookup-method和replaced-method标签 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

C语言部分内存函数详解

C语言部分内存函数详解 前言1.memcpy1.1基本用法1.2注意事项**目标空间与原空间不能重叠****目标空间原数据会被覆盖****目标空间要够大****拷贝字节数需小于原空间大小** 1.3模拟实现 2.memmove2.1基本用法2.2注意事项2.3模拟实现 3.memset3.1基本用法 4.memcmp4.1基本用法4.2…

[论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

引言 今天带来ZeRO: Memory Optimizations Toward Training Trillion Parameter Models的论文笔记。 大型深度模型提供了显著的准确性提升&#xff0c;但训练数十亿到数万亿个参数是具有挑战性的。现有的解决方案&#xff0c;如数据并行和模型并行&#xff0c;存在基本的局限…

python小游戏之摇骰子猜大小

最近学习Python的随机数&#xff0c;逻辑判断&#xff0c;循环的用法&#xff0c;就想找一些练习题&#xff0c;比如小游戏猜大小&#xff0c;程序思路如下&#xff1a; 附上源代码如下&#xff1a; 摇骰子的函数&#xff0c;这个函数其实并不需要传任何参数&#xff0c;调用后…

【Delphi】中多显示器操作基本知识点

提要&#xff1a; 目前随着计算机的发展&#xff0c;4K显示器已经逐步在普及&#xff0c;笔记本的显示器分辨率也都已经超过2K&#xff0c;多显示器更是普及速度很快。本文介绍下Delphi中操作多显示器的基本知识点&#xff08;Windows系统&#xff09;&#xff0c;这些知识点在…

【Java】 方法引用与Lambda(快速上手)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 方法引用 五、总结&#xff1a; 一、前言 Calculator::plus看到::好奇有什…

使用多种机器学习模型进行情感分析

使用 TF-IDF 与贝叶斯分类器进行情感分析是一个常见且有效的组合&#xff0c;特别是在文本分类任务中。贝叶斯分类器&#xff08;通常是朴素贝叶斯分类器&#xff09;等机器学习模型具有计算简单、效率高的优点&#xff0c;且在文本分类任务中表现良好。接下来&#xff0c;我将…

eNSP 华为ACL配置

华为ACL配置 需求&#xff1a; 公司保证财务部数据安全&#xff0c;禁止研发部门和互联网访问财务服务器&#xff0c;但总裁办不受影响 R1&#xff1a; <Huawei>sys [Huawei]sys Router1 [Router1]undo info-center enable [Router1]int g1/0/0 [Router1-GigabitEth…

语音助手Verbi:科技创新的未来

今天&#xff0c;我要向大家介绍一个名为Verbi的语音助手项目。这是一个结合了多种先进技术的模块化语音助手应用程序&#xff0c;能够实现语音到文本、文本生成和文本到语音的全流程处理。通过这个项目&#xff0c;我们可以体验到尖端科技如何改变我们的日常生活。 Verbi的诞…