Openstack创建和操作实例,实现与外部网络通信

news2024/12/26 14:16:53

一、熟悉OpenStack图形界面操作

1、了解Horizon项目

  • Horizon项目
    • 各OpenStack服务的图形界面都是由Horizon提供的。
    • Horizon提供基于Web的模块化用户界面。
    • Horizon为云管理员提供一个整体的视图
    • Horizon为终端用户提供一个自主服务的门户。
    • Horizon由云管理员进行管理与控制,云管理员可以通过Web界面管理OpenStack平台上的资源。
  • Horizon功能架构

2、访问OpenStack主界面

  • OpenStack仪表板登录界面

OpenStack安装过程中会默认创建两个云用户账户,一个是云管理员账号admin ,另一个是用于测试的普通用户账号demo。使用PackStack安装器安装时如果没有提供应答文件,这两个账号的初始密码会随机生成,保存在keystonerc_adminkeystonerc_demo文件(位于安装时linux的主目录)。OS_PASSWORD为密码

[root@node-a ~]# cat /root/keystonerc_admin
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='8dcf323357f74aec'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.241.10:5000/v3
    export PS1='[\u@\h \W(keystone_admin)]\$ '
    
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

[root@node-a ~]# cat /root/keystonerc_demo
unset OS_SERVICE_TOKEN
export OS_USERNAME=demo
export OS_PASSWORD='8a8e6279c2154dc7'
export PS1='[\u@\h \W(keystone_demo)]\$ '
export OS_AUTH_URL=http://192.168.241.10:5000/v3
    
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

二、创建和操作虚拟机实例

1、了解并准备创建虚拟机实例的前提

  • 创建虚拟机实例的前提条件
    • 实例的源——镜像、实例快照(镜像快照)、卷或卷快照。
    • 实例类型——实例规格,表示一组特定的虚拟资源。
    • 密钥对——虚拟机实例启动时注入镜像中的SSH凭据。
    • 安全组——一组特定防火墙规则的集合。
    • 网络——虚拟网络,在云中为虚拟机实例提供网络通信,使实例能够访问内部网络和外部网络

2、熟悉创建虚拟机实例的基本步骤 

1、准备镜像

默认的镜像列表:这是Packstack安装器预置的,用来测试Linux操作系统镜像。免费、体积非常小的Linux操作系统发行版。要使用Cirros操作系统进行镜像测试,使用admin身份将其删除并从官网下载新的Cirros操作系统镜像。

  • 下载Cirros镜像文件:https://www.rdoproject.org/resources/image-resources/
  • 创建Cirros操作系统镜像-admin:

  • 下载Fedora操作系统的镜像:Fedora Cloud | The Fedora Project
  • 创建Fedora操作系统镜像-demo:
    • 为便于示范,以demo身份创建为私有的可见性。

  • 新创建的两个镜像:
    • 可以看到"cirros"镜像虽然由云管理员创建,但由于是公有的,demo项目也可以使用。

 2、添加安全组规则-demo

每个项目都可以定义自己的安全组。项目>网络>安全组

默认有一个“打default”的安全组,单击“管理规则”:先俩规则允许关联该默认安全组的虚拟机实例访问外部网络;后两条规则不允许从外部网络访问关联该默认安全组的虚拟机实例,但是关联该默认安全组的虚拟机实例之间可相互访问。

 后续实验要允许外部网络中通过SSH协议访问虚拟机实例,使用ping工具测试虚拟机实例的连通性,添加两个安全组规则

3、添加密钥对-demo

密钥对是虚拟机实例启动时被注入镜像的SSH凭证,每个项目可以定义自己的密钥对。项目>计算>密钥对。

创建新的密钥对时需要注册公钥并提供私钥文件(.pem格式)下载。注意保管。

4、创建虚拟机实例-demo

项目>计算>实例:显示当前实例列表。

  • 第一步:为实例命名,并设置实例的数量(默认为1)

  • 第二步:为实例设置源(用来创建实例的模板)。这里以镜像作为实例的源。将“删除实例时删除卷”设置为“是”。

  • 第三步:由于所用的镜像很小,这里选择分配系统资源最少的“m1.tiny”实例类型。

  • 第四步:默认网络类型即可

  • 第五步:默认

  • 第六步:默认

  •  第七步:参照上述步骤,在基于Fedora操作系统镜像创建一个虚拟机实例。注意存储卷大小为1GB,这里该为10GB以满足组Fedora操作系统运行的需要(不能仅看镜像文件的大小),在用可用的镜像列表中选择“fedora”镜像。实例类型至少选择“m1.small”

3、在虚拟机实例上进行简单的操作 

  • 切换到“控制台”可以对该实例进行交互操作。
  • 进入Fedora-VM实例的控制台进行测试。
  • 进入Cirros-VM实例使用ping工具测试与Fedora-VM的连通性。 

三、实现虚拟机与外部网络的通信

1、了解OpenStack的虚拟网络

2、掌握外部网络和路由器的基本配置

1、将OpenStack主机网卡添加到br-ex网桥

# 查看本机IP地址
[root@node-a ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.241.10/24 brd 192.168.241.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fecb:4e6/64 scope link 
       valid_lft forever preferred_lft forever
6: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 2e:1f:51:41:d0:46 brd ff:ff:ff:ff:ff:ff
    inet 172.24.4.1/24 scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::2c1f:51ff:fe41:d046/64 scope link 
       valid_lft forever preferred_lft forever
7: br-int: <BROADCAST,MULTICAST> mtu 1442 qdisc noop state DOWN group default qlen 1000
    link/ether 22:36:36:4b:33:4c brd ff:ff:ff:ff:ff:ff

[root@node-a ~]# ovs-vsctl list-br
br-ex        #外部网桥
br-int       #集成网桥

#查看网桥的端口
[root@node-a ~]# ovs-vsctl list-ports br-ex
patch-provnet-f72fc90f-cc54-4f75-9f54-43664d452b26-to-br-int

# 修改网络配置文件
[root@node-a ~]# cd /etc/sysconfig/network-scripts 
[root@node-a network-scripts]# cp ifcfg-ens33 ifcfg-br-ex
[root@node-a network-scripts]# ls 
ifcfg-br-ex  ifdown-Team      ifdown-ib    ifdown-ovs     ifdown-sit     ifup-TeamPort  ifup-ib    ifup-ovs    ifup-ppp     ifup-wireless
ifcfg-ens33  ifdown-TeamPort  ifdown-ippp  ifdown-post    ifdown-tunnel  ifup-aliases   ifup-ippp  ifup-plip   ifup-routes  init.ipv6-global
ifcfg-lo     ifdown-bnep      ifdown-ipv6  ifdown-ppp     ifup           ifup-bnep      ifup-ipv6  ifup-plusb  ifup-sit     network-functions
ifdown       ifdown-eth       ifdown-isdn  ifdown-routes  ifup-Team      ifup-eth       ifup-isdn  ifup-post   ifup-tunnel  network-functions-ipv6
[root@node-a network-scripts]# vi ifcfg-br-ex

# 主要修改TYPE为OVSBridge,将DEVICETYPE修改为ovs,将NAME和DEVICE修改为br-ex
[root@node-a network-scripts]# cat ifcfg-br-ex 
TYPE=OVSBridge
DEVICETYPE=ovs
BOOTPROTO=none
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
IPADDR=192.168.241.10 
NETMASK=255.255.255.0
GATEWAY=192.168.241.86
DNS1=8.8.8.8

# 修改ens33配置文件,主要将TYPE修改为OVSPort,并添加最后两行定义
[root@node-a network-scripts]# vi ifcfg-ens33 
[root@node-a network-scripts]# cat ifcfg-ens33 
TYPE=OVSPort
NAME=ens33
DEVICE=ens33
ONBOOT=yes
DEVICETYPE=ovs
OVS_BRIDGE=br-ex

# 重启network服务使修改生效
[root@node-a network-scripts]# systemctl restart network

# 外部网桥br-ex获得原ens33网卡的IP配置,而ens33网卡作为该网桥上的一个端口后,可以没有IP地址
[root@node-a network-scripts]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP group default qlen 1000
    link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fecb:4e6/64 scope link 
       valid_lft forever preferred_lft forever
    link/ether 4a:20:80:5a:03:52 brd ff:ff:ff:ff:ff:ff
11: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.241.10/24 brd 192.168.241.255 scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::b7:e5ff:fefe:434b/64 scope link 
       valid_lft forever preferred_lft forever
...

2、调整网络配置-admin

  • 清除现有路由器的网关:将外部网关类型的接口删除

  • 删除外部网络现有的子网

  • 设置同名子网基本信息

  • 设置子网详情

  • 为外部网络新创建的子网

  • demo项目默认的路由器

  • 为路由设置网关:以demo用户登录。为该项目的虚拟机的实例提供内外网通信支持

  • 为路由增加接口

3、熟悉虚拟机实例的浮动IP地址分配

  • 管理浮动IP的关联:以demo用户为例查看cirros的

  • 已分配一个浮动IP

  • 两个实例都分配有浮动IP地址

  • 从虚拟机实例上访问外部网络

  • 从外部网络访问虚拟机实例

4、学会通过SSH从外部网络访问虚拟机实例

  • 测试SSH密码登录
[root@node-a network-scripts]# ssh cirros@192.168.241.80
The authenticity of host '192.168.241.80 (192.168.241.80)' can't be established.
ECDSA key fingerprint is SHA256:ZPcFAfVbq/qns2ozvNqj/vDe9Ye4/6DIzZxBdNaiqIA.
ECDSA key fingerprint is MD5:57:b2:6c:e0:06:3f:c8:8e:c7:0c:e4:d5:80:5e:2a:50.
Warning: Permanently added '192.168.241.80' (ECDSA) to the list of known hosts.
cirros@192.168.241.80's password:     # 默认密码为gocubsgo
$ date                                # 登录成功后测试
Wed Mar 20 12:43:50 UTC 2024
$ exit
Connection to 192.168.241.80 closed.
You have new mail in /var/spool/mail/root
  • SSH证书登录
[root@node-a ~]# cp Downloads/demo-key.pem ~/.ssh
[root@node-a ~]# chmod 700 ~/.ssh/demo-key.pem
[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem cirros@192.168.173.10
$ date
Tue Mar 26 04:50:37 UTC 2024
$ exit
Connection to 192.168.173.78 closed.

5、在Windows计算机上通过SSH访问虚拟机实例

这里通过PuTTY登录测试:

 使用SSH证书登录要复杂些:

  • 使用PuTTY的配套工具PuTTYgen将SSH私钥文件(.pem)转化为PuTTY支持的格式.ppk

  • 启动PuTTY 工具,在左侧目录树展开"Connection">"SSH">"Auth">"Credentials"节点 ,选择转换好的.ppk文件。

 

  • 在"Connection">"Data"节点,设置要发送到服务器的数据。

 

  • 单击"Session",在"Host Name(or IP address)"文本框输入要连接的虚拟机实例。 

 

  • 单击open,会直接登录虚拟机实例

6、为虚拟机实例设置用户账号和密码 

多数Openstack预置镜像文件不提供用户名和密码,可以通过SSH证书登录来解决此问题。

执行以下命令在OpenStack主机上通过SSH证书登录基于Fedora操作系统镜像(登录用户名为fedora)的Fedora-VM虚拟机实例,连接建立后可以修改root账户密码。 

[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem fedora@192.168.173.66
The authenticity of host '192.168.173.66 (192.168.173.66)' can't be established.
ECDSA key fingerprint is SHA256:q8bB/gQHlzPcC9A2H9U2zUVzQTcln1h/oBwntiPMcyg.
ECDSA key fingerprint is MD5:66:ca:9b:65:6f:e5:47:c6:e4:e7:08:0e:e6:e4:4c:f4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.173.66' (ECDSA) to the list of known hosts.
[fedora@fedora-vm ~]$ sudo passwd root        # 修改root账户密码
Changing password for user root.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.
[fedora@fedora-vm ~]$ exit
logout
Connection to 192.168.173.66 closed.
[root@node-a ~]# 

 接下来在控制台用root账号密码登录Fedora-VM虚拟机实例

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

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

相关文章

SpringBoot学习笔记一、SpringBoot应用初创建以及应用

一、创建SpringBoot的两种方式 1.Spring Initializr方式创建 &#xff08;1&#xff09;第一步在IDEA中选择 File-->NEW-->Project &#xff0c;选择 Spring Initializr &#xff0c;指定Maven坐标、包名、指定 JDK 版本 1.8 &#xff0c;然后点击Next 。如下图&#x…

修改Jupyter Notebook的默认路径,以及在PowerShell中自定义其启动路径

修改Jupyter Notebook的默认路径&#xff0c;以及在PowerShell中自定义其启动路径 设置 Jupyter Notebook 配置文件&#xff0c;修改默认路径要在PowerShell中设置自定义的启动脚本&#xff0c;以确保Jupyter Notebook能够自动定位到当前路径设置后的效果 在使用Jupyter Notebo…

遇到了问题,Firepower 2140配置带外IP时报错 commit-buffer failed

onsite we have a cisco firepower 2140 device which run ASA as we try to modify the 2140 OOB mgmt ip by CLI, we got an error why ? 经过查询发现&#xff0c;需要进入ASA里面打上以下这条命令&#xff0c;并重启ASA 1 修改模式并重启 ciscoasa# configure termina…

C语言例4-15:从键盘输入一个整数,求其绝对值并输出。

代码如下&#xff1a; //从键盘输入一个整数&#xff0c;求其绝对值并输出。 #include<stdio.h> int main(void) {int n;printf("输出一个整数&#xff1a; \n");scanf("%d",&n); //从键盘输入一个整数保存至变量nif(n<0) //…

Python爬虫之爬取网页图片

当我们想要下载网页的图片时&#xff0c;发现网页的图片太多了&#xff0c;无从下手&#xff0c;那我们写一个脚本来爬取呗。 这次的脚本是专门针对某个外国网站使用的&#xff0c;因此仅供参考思路。 在测试的过程中&#xff0c;我发现网站使用了发爬虫机制&#xff0c;具体就…

连接数据库(MySQL)的JDBC

目录 JDBC简介快速入门API详解DriverManager&#xff08;驱动管理类&#xff09;注册驱动&#xff1a;获取数据库连接(对象)&#xff1a; Connection&#xff08;数据库连接对象&#xff09;获取执行SQL的对象管理事务 Statement(执行SQL语句)执行DML、DDL语句执行DQL语句 Resu…

【LLM多模态】Cogvlm图生文模型结构和训练流程

note Cogvlm的亮点&#xff1a; 当前主流的浅层对齐方法不佳在于视觉和语言信息之间缺乏深度融合&#xff0c;而cogvlm在attention和FFN layers引入一个可训练的视觉专家模块&#xff0c;将图像特征与文本特征分别处理&#xff0c;并在每一层中使用新的QKV矩阵和MLP层。通过引…

LED基础知识分享(三)

大家好&#xff0c;我是砖一。 今天给大家分享一下&#xff0c;LED的基础知识&#xff0c;有照明行业&#xff0c;或者对LED感兴趣的朋友&#xff0c;可以学习一下&#xff0c;希望对你有用~ 一、热扩散 物质本身或当物质与物质接触时&#xff0c;能量的传递就被称为热传导&a…

STM32串口收发单字节数据原理及程序实现

线路连接&#xff1a; 显示屏的SCA接在B11&#xff0c;SCL接在B10&#xff0c;串口的RX连接A9&#xff0c;TX连接A10。 程序编写&#xff1a; 在上一个博客中实现了串口的发送代码&#xff0c;这里实现串口的接收代码&#xff0c;在上一个代码的基础上增加程序功能。 Seiral.…

idea使用git笔记

1.创建分支和切换分支 创建分支 切换分支 2.把新创建的分支提交到远程服务器上&#xff08;注&#xff1a;如果没有提交的&#xff0c;随便找个文件修改再提交&#xff09; (1)切换到要提交的分支&#xff0c;add (2)commit (3)push 3.在自己分支修改代码及提交到自己的远…

MySQL - 高阶语句(二)

目录 6. 子查询 操作&#xff1a; EXISTS 关键字 别名 as 7. 视图 理论&#xff1a; 操作&#xff1a; 视图的优缺点 8. NULL 值 9. union 联级 9.1 union &#xff08;合并后去重&#xff09; 9.2 union all (合并后不去重) 9.3 取非交集值 10. case 条件选择查…

阿里云服务器租用价格表-2024最新(附明细报价)

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

TCP重传机制详解——02SACK

文章目录 TCP重传机制详解——02 SACKSACK是什么&#xff1f;为什么要有SACK&#xff1f;实际场景抓包具体显示信息流程 实战抓包讲解SACK关闭场景下&#xff0c;三次重复ACK后会快速重传SACK打开但是不携带SACK块信息场景下&#xff0c;三次重复ACK也不会快速重传SACK打开并且…

YOLOv9改进策略:IoU优化 | Wasserstein Distance Loss,助力小目标涨点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文独家改进&#xff1a;基于Wasserstein距离的小目标检测评估方法 Wasserstein Distance Loss | 亲测在多个数据集能够实现涨点&#xff0c;对小目标、遮挡物性能提升明显 &#x1f4a1;&#x1f4a1;&#x1f4a1;MS COCO和PASC…

性价比高一点的diy台式主机怎么搭配?

怎么搭配一台性价比高一点的台式机 建议&#xff1a; 选择合适的CPU和GPU。根据实际需求选择相对较新的CPU和GPU型号&#xff0c;以确保能够运行目标应用程序和游戏。 合理选择内存和存储。根据预算选择适当的内存和存储容量。8GB或16GB内存对于一般计算和游戏使用足够了&…

USART发送单字节数据原理及程序实现

硬件接线&#xff1a; 显示屏的SCA接在B11&#xff0c;SCL接在B10&#xff0c;串口的RX连接A9&#xff0c;TX连接A10。 新建Serial.c和Serial.h文件 在Serial.c文件中&#xff0c;实现初始化函数&#xff0c;等需要的函数&#xff0c;首先对串口进行初始化&#xff0c;只需要…

全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的&#xff0c;对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律&#xff0c;既受制于自然环境&#xff0c;又与人类活动有关&#xff0c;往往是人类与自然界相互作用的结果。…

easyx查找算法可视化--顺序查找/二分查找/分块查找

&#x1f482; 个人主页:pp不会算法^ v ^ &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 概述演示源码获取 概述 #顺序存储的顺序查找 √ #链式存…

验证码/数组元素的复制.java

1&#xff0c;验证码 题目&#xff1a;定义方法实现随机产生一个5位的验证码&#xff0c;前面四位是大写或小写的英文字母&#xff0c;最后一位是数字 分析&#xff1a;定义一个包含所有大小写字母的数组&#xff0c;然后对数组随机抽取4个索引&#xff0c;将索引对应的字符拼…

Qt C++ | QTimer经验总结

QTimer Class QTimer类提供重复计时器和单次计时器 头文件: #include <QTimer> qmake: QT += core 继承自: QObject 定时器信号 void timeout() 公共函数 Qt::TimerType 枚举定义了 Qt 中不同类型的定时器。它包含以下值: **Qt::PreciseTimer:**高精度定时器,用…