Part 4 - OpenStack的安装

2021-09-26
8分钟阅读时长

«返回课程汇总页面

【版本】

当前版本号v20221022

版本修改说明
v20221022增加了常见问题描述
v20211018增加了VMWare 的步骤,并加入一些注意事项提醒
v20211016加入一些提醒
v20211011修改实验4.2 实例名称
v20210926初始化版本

【实验名称】实验4.1 注册 OpenStack 虚拟机

【实验目的】

  • 掌握 OpenStack 虚拟机的注册和配置

【实验环境】

  • VirtualBox
  • FinalShell

【实验资源】

  • Openstack-Compute1 虚拟机
  • Openstack-Controller 虚拟机
链接:https://pan.baidu.com/s/1kw7nT7dbonUTSlPqIHVwhQ 
提取码:heis

【VMWare Workstation 实验步骤】

  1. 使用VMWare Workstation的同学可以下载Openstack-Compute1.ovaOpenstack-Controller.ova
  • Openstack-Compute1目录内的是 OpenStack 的计算节点虚拟机,以下简称计算节点1
  • Openstack-Controller目录内的是 OpenStack 的控制节点虚拟机,以下简称控制节点

注意:下载的2台虚拟机不能够解压到同一个目录,否则会出错。

  1. 使用VMWare Workstation的同学可以导入Openstack-Compute1.ovaOpenstack-Controller.ova2台虚拟机。

  2. 2台虚拟机的网卡都要设置为仅主机模式

  3. 启动控制节点计算节点1

注意:控制节点计算节点1都必须要开启才能保证 Openstack 正常运行

  1. 由于这2个节点时在Virtualbox上配置的,但是 VMWare WorkStation 的网卡名和 Virtualbox 的不一致,需要把网卡名相关配置进行相应修改。

  2. 使用 FinalShell 连接控制节点

用户名:root
密码:123456
IP:10.0.0.11
  1. 查看网卡名,一般是ens33。如果不是,以下提到的ens33请替换为你的网卡名。
ip a

  1. 进入网卡配置目录,把enp0s3网卡名配置改为ens33
cd /etc/sysconfig/network-scripts
mv ifcfg-enps3 ifcfg-ens33
  1. 修改网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
  • 请把name 和device 的值都修改为ens33
  1. 打开 Neutron 的网桥设置。
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  1. 在约128行处找到以下配置,并把enp0s3修改为ens33
physical_interface_mappings = provider:enp0s3

vi输入:set nu 可以显示行号。

  1. 重启节点。

  2. 计算节点1重复步骤7-12。

  3. 接下来的步骤从 【Virtualbox 实验步骤】 第7步开始。

【Virtualbox 实验步骤】

  1. 使用VirtualBox的同学可以下载Openstack-Compute1.zipOpenstack-Controller.zip。并解压。
  • Openstack-Compute1目录内的是 OpenStack 的计算节点虚拟机,以下简称计算节点1
  • Openstack-Controller目录内的是 OpenStack 的控制节点虚拟机,以下简称控制节点

注意:下载的2台虚拟机不能够解压到同一个目录,否则会出错。

  1. 使用VirtualBox的同学可以点击注册,分别找到以上2个目录内的vbox文件,注册2台虚拟机。

  2. 设置控制节点

  • 系统配置为2核处理器,3072M内存。

  • 网络配置设置为仅主机(Host-Only)网络,混杂模式设置为全部允许。网卡 IP 配置参考实验1.1

  1. 设置计算节点1
  • 系统配置为1核处理器,1024M内存。
  • 网络配置设置为仅主机(Host-Only)网络,混杂模式设置为全部允许。网卡 IP 配置参考实验1.1
  1. 启动控制节点,使用 FinalShell 连接。
用户名:root
密码:123456
IP:10.0.0.11
  1. 启动计算节点1,使用 FinalShell 连接。
用户名:root
密码:123456
IP:10.0.0.31

注意:控制节点计算节点1都必须要开启才能保证 Openstack 正常运行

  1. 导入的2台虚拟机已经预装了 OpenStack。打开系统浏览器,访问 OpenStack 的 Web 界面http://10.0.0.11/dashboard/auth/login/,使用以下账户登录。
域(Domain):default
用户名:admin
密码:ADMIN_PASS

  1. 查看实例列表,可以看到实例inst3的IP地址为10.0.0.104。启动实例 inst3

实例 inst3 是一个预装的 Cirros 系统的虚拟机。

  1. 在 FinalShell 使用root用户登录控制节点,以下命令如无特别说明,都在控制节点执行。

  2. 查看控制节点的主机名(hostname)。

hostname
  • 正常应该返回
opstk-ctrl
  1. 控制节点输入命令,直接使用 SSH 连接 OpenStack 的虚拟机实例inst3
ssh cirros@10.0.0.104

如果需要输入密码,输入gocubsgo

  1. 登录inst3实例以后,查看主机名。
hostname
  • 正常应该返回
inst3
  1. 退出inst3
exit
  1. 在浏览器关闭实例inst3

【实验名称】实验4.2 在浏览器界面创建新的虚拟机

【实验目的】

  • 掌握 OpenStack 浏览器界面创建新的虚拟机

【实验环境】

  • VirtualBox
  • FinalShell

【实验资源】

  • Openstack-Compute1 虚拟机
  • Openstack-Controller 虚拟机
链接:https://pan.baidu.com/s/1kw7nT7dbonUTSlPqIHVwhQ 
提取码:heis

【实验步骤】

  1. 打开系统浏览器,访问 OpenStack 的 Web 界面http://10.0.0.11/dashboard/auth/login/。点击启动实例按钮。

  2. Instance Name(实例名)输入inst4-你学号后3位(注意替换你的个人学号),可用区域选择nova

  3. 源选择cirros

  4. flavor 选择虚拟机的配置。这里选择m1.nano

  5. 网络选择net1。该网络预先配置好了网段,并使用DHCP给新虚拟机分配IP。

  6. 安全组选择default。该安全组开放了ICMP协议和22端口。

  7. 密钥对选择key1。选择该密钥对,可以使得我们 SSH 免密登录虚拟机。

  8. 启动实例。

  9. 参考实验4.1,从控制节点使用 ssh 命令连接新的虚拟机实例。并在新的实例执行以下命令查看返回结果。

  • 查看主机名
hostname
  • 查看IP
ip a
  • 分别使用 ping 命令,测试是否连通控制节点1(10.0.0.11) 和 计算节点1(10.0.0.31)
ping 10.0.0.11
ping 10.0.0.31

正常连通会返回类似以下报文,按ctrl+c可以中断。

64 bytes from 10.0.0.11: seq=0 ttl=64 time=5.854 ms

【实验名称】实验4.3 使用命令创建新的虚拟机

【实验目的】

  • 掌握 OpenStack 使用命令创建新的虚拟机

【实验环境】

  • VirtualBox
  • FinalShell

【实验资源】

  • Openstack-Compute1 虚拟机
  • Openstack-Controller 虚拟机
链接:https://pan.baidu.com/s/1kw7nT7dbonUTSlPqIHVwhQ 
提取码:heis

【实验步骤】

  1. FinalShell 使用 root 用户连接控制节点。以下命令若无特别说明,均在控制节点执行。
用户名:root
密码:123456
IP:10.0.0.11
  1. 使用命令创建一个新的 OpenStack 虚拟机实例。注意替换你的个人学号。
source /etc/keystone/admin-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=net1 --security-group default --key-name key1 inst5-你的学号后3位
  • openstack server create命令用于创建 OpenStack 虚拟机实例。以下为命令选项说明:

–flavor 虚拟机配置 –image 系统镜像名称 –nic net-id=网络名称 –security-group 安全组名称 –key-name 安全密钥对名称 虚拟机实例名称

  1. 执行以下命令,查看全部实例。
source /etc/keystone/admin-openrc
openstack server list
  • 正常会返回类似以下表格:
+--------------------------------------+-------------------------------------------+
| Field                                | Value                                     |
+--------------------------------------+-------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                    |
| OS-EXT-AZ:availability_zone          |                                           |
| OS-EXT-SRV-ATTR:host                 | None                                      |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | None                                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000005                         |
| OS-EXT-STS:power_state               | 0                                         |
| OS-EXT-STS:task_state                | None                                      |
| OS-EXT-STS:vm_state                  | building                                  |
| OS-SRV-USG:launched_at               | None                                      |
| OS-SRV-USG:terminated_at             | None                                      |
| accessIPv4                           |                                           |
| accessIPv6                           |                                           |
| addresses                            |                                           |
| adminPass                            | HMZiG2VT7EzV                              |
| config_drive                         |                                           |
| created                              | 2021-09-26T17:17:04Z                      |
| flavor                               | m1.nano (0)                               |
| hostId                               |                                           |
| id                                   | 264743cc-595b-4949-ac25-db77216bb8a6      |
| image                                | cirros (12272360-e62a-4ace-               |
|                                      | ba50-d87892e3c657)                        |
| key_name                             | key1                                      |
| name                                 | inst5                                     |
| os-extended-volumes:volumes_attached | []                                        |
| progress                             | 0                                         |
| project_id                           | 5365e230cc684e63af81598c6eedd6da          |
| properties                           |                                           |
| security_groups                      | [{u'name': u'default'}]                   |
| status                               | BUILD                                     |
| updated                              | 2021-09-26T17:17:04Z                      |
| user_id                              | 1e01bff9deaa414084efae2bb3156e62          |
+--------------------------------------+-------------------------------------------+
  1. 执行以下命令,启动你刚才创建的实例。注意替换你的个人学号。
openstack server start inst5-你的学号后3位
  1. 查看实例的相关信息。注意替换你的个人学号。
openstack server show inst5-你的学号后3位
  1. 使用openstack 命令 SSH 连接新实例。
openstack server ssh inst5 --private --login cirros
  1. 在新的实例执行以下命令查看返回结果。
  • 查看主机名
hostname
  • 查看IP
ip a
  • 分别使用 ping 命令,测试是否连通控制节点1(10.0.0.11) 和 计算节点1(10.0.0.31)
ping 10.0.0.11
ping 10.0.0.31

正常连通会返回类似以下报文,按ctrl+c可以中断。

64 bytes from 10.0.0.11: seq=0 ttl=64 time=5.854 ms
  1. 使用命令关闭实例。注意替换你的个人学号。
openstack server stop inst5-你的学号后3位
  1. 使用命令查看所有实例状态和网络。
openstack server list -c Name -c Status -c Networks

【常用命令】

1. openstack server 操作虚拟机命令。

  • (1)查看所有虚拟机信息
openstack server list
  • (2)添加--help选项可以命令的使用方法
openstack server list --help
  • (3)启动和停止虚拟机
#启动
openstack server start 虚拟机名称或ID

#停止
openstack server stop 虚拟机名称或ID
  • (4)使用私有IP 进行 SSH 连接到虚拟机。--private选项表示私有IP连接。--public选项表示使用公网IP连接。
 openstack server ssh 虚拟机名称或ID --login 登录用户名 --private
  • (5)查看虚拟机详细信息。
openstack server show 虚拟机名称或ID
  • (6)删除某台虚拟机。
openstack server delete 虚拟机名称或ID

【常见问题】

1. 无法访问OpenStack 的 Web 界面http://10.0.0.11/dashboard/auth/login/

答:尝试在控制节点重启一下 httpd 服务。

  • (1)重启 httpd。
systemctl restart httpd
  • (2)查看 httpd 服务状态是否为 actived
systemctl status httpd

2. 启动或操作 Openstack 虚拟机提示 “More than one server exists with the name XXXX”

答:这是因为重复创建了相同名称的虚拟机,导致在指定虚拟机名称的时候出现歧义。可以使用 ID 替代名称来操作 Openstack的虚拟机。

  • (1)查看所有虚拟机ID
openstack server list
  • 正常返回类似以下消息
+--------------------------------------+-------+---------+-----------------+
| ID                                   | Name  | Status  | Networks        |
+--------------------------------------+-------+---------+-----------------+
| 264743cc-595b-4949-ac25-db77216bb8a6 | inst5 | SHUTOFF | net1=10.0.0.106 |
| 54f83092-221d-4947-81e2-df47c24512c5 | inst5  | SHUTOFF | net1=10.0.0.105 |
| 05854ac9-c060-494c-93be-d4685e52b4c9 | inst3 | SHUTOFF | net1=10.0.0.104 |
+--------------------------------------+-------+---------+-----------------+
  • (2)使用 ID 启动虚拟机(其他使用ID来操作的命令类似)
openstack server start 54f83092-221d-4947-81e2-df47c24512c5

3. 执行openstack命令提示 Missing parameter(s),类似以下消息。

Missing parameter(s): 
Set a username with --os-username, OS_USERNAME, or auth.username
Set an authentication URL, with --os-auth-url, OS_AUTH_URL or auth.auth_url
Set a scope, such as a project or domain, set a project scope with --os-project-name, OS_PROJECT_NAME or auth.project_name, set a domain scope with --os-domain-name, OS_DOMAIN_NAME or auth.domain_name

答:这是因为没有执行脚本加入 openstack 执行的相关环境变量。执行以下语句即可。

source /etc/keystone/admin-openrc