目录
一、云计算概述
1.1、什么是云计算
1.2、云计算的服务模型
1)IaaS
2)PaaS
3)SaaS
1.3、OpenStack 概述
1)OpenStack 起源
2)什么是 OpenStack
3)OpenStack 优势
二、OpenStack 一键部署
2.1、环境介绍
1)本章实验环境
2)实验需求
3)实现思路
2.2、在线安装前准备工作
1)准备虚拟机
2)修改主机名
3)更新系统并安装常用软件
4)关闭防火墙并取消开机启动
5)禁用 NetworkManager
6)禁用 Selinux
7)添加 hosts 绑定
2.3、使用 packstack 一键在线部署 OpenStack
1)Train 版 YUM 源安装
2)Packstack 软件包安装
3)Packstack 一键部署 OpenStack
2.4、通过 Dashboard 体验 OpenStack 功能
1)项目
2)管理员
3)身份管理
2.5、创建云主机
1)创建网络
2)创建路由
3)创建云主机
4)管理云主机并测试连通性
一、云计算概述
相信大家都听到很多的阿里云、腾讯云、百度云等等这些词,那到底什么是云计算?云计算又能做什么?
1.1、什么是云计算
云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10 万亿次的运算能力,可以用于模拟核爆炸、预测气候变化以及市场发展趋势。
云计算有广义和狭义之分。
- 狭义的云计算是指通过网络按需向用户提供 IT 基础设施,包括硬件、平台和软件,提供资源的网络被称为“云”。在使用者看来,“云”中的资源是无限大的,无论需要多少资源,云都可以提供。而在云端,所有的资源都可以通过横向进行扩展,如同使用水电、 煤气一样。以用电为例,如果用户自行发电,那么用户需要维护一台发电机,定期加油,出现问题需要维修。而如果使用公共电网,用户不需要知道发电厂在哪里、怎么发电等问题,只需要按需付费使用就可以,多用多付,少用少付。在用户看来,电的资源是无限的。
- 广义的云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是 IT 和软件、互联网相关的,也可以是任意其他的服务。
云计算是一种模型,提供无论在何时何地都可以便捷获取所需资源的模型,并能够让用户根据需要快速创建应用,并且在不需要时进行资源释放。
现在云计算技术已经日渐成熟,很多企业已经拥有自己的私有云,而掌握这种技术的人才也更为抢手。目前,云计算使用最广泛的是开源项目 OpenStack。经过多个版本的开发更新,现在已经到 T 版。作为云计算项目之一的 OpenStack 也受到各个企业的青睐,成为 大家搭建私有云的首选。
1.2、云计算的服务模型
云计算模型中有 IaaS(Infrastructure as a Service,基础架构即服务)、PaaS(Platform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三种基本服务模型。
1)IaaS
IaaS 提供最底层的 IT 基础设施服务,包括处理能力、存储空间、网络资源等。用户可以从中获取硬件或者虚拟硬件资源(包括裸机或者虚拟机),之后可以给申请到的资源安装操作系统和其他应用程序。一般面向的对象是 IT 管理人员。
2)PaaS
PaaS 是把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在上面安装其他应用程序,但不能修改已经安装好的操作系统和运行环境。一般面向的对象是开发人员,需要了解平台提供环境下的应用开发和部署。
3)SaaS
SaaS 可直接通过互联网为用户提供软件和应用程序等服务。用户可以通过租赁的方式获取安装在厂商或者服务供应商那里的软件。一般面向的对象是普通用户,最常见的模式是提供给用户一组账号和密码。
1.3、OpenStack 概述
1)OpenStack 起源
OpenStack 是 Rackspace(一家美国的云计算厂商)和美国国家航空航天局(National Aeronautics and Space Administration,简称 NASA)在 2010 年 7 月共同发起的项目。由 Rackspace 贡献存储源码(Swift)、NASA 贡献计算源码(Nova)。
2)什么是 OpenStack
OpenStack 是一个通过数据中心控制计算资源、存储资源和网络资源的云平台。同时它又是一款开源软件,以 Apache 许可证授权的自由软件和开放源代码项目,支持所有类型的云环境。OpenStack 的目标是提供简单实施、可扩展以及丰富功能集的云产品,来自全世界的云计算专家共同维护该云项目。OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface,简称 API), 以促进各组件之间的整合。
OpenStack 被用来提供公有云以及私有云的建设以及管理。作为一个开源项目,其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端。
OpenStack 覆盖了网络、虚拟化、操作系统、服务器等各个方面。2019 年 10 月 OpenStack 发布了最新版本 2024.1。一般情况下,OpenStack 每半年左右更新一次版本。下表中列出了 OpenStack 常见的 8 个核心项目(即 OpenStack 服务)。
服务 | 项目名称 | 描述 |
Compute(计算服务) | Nova | 负责实例生命周期的管理,计算资源的单位。对 Hypervisor 进行屏蔽,支持多种虚拟化技术(红帽默认为 KVM),支持横向扩展。 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络拓扑结构。是面向租户的网络管理,可以自定义网络,并使租户之间互不影响。 |
Identity(身份认证服务) | Keystone | 类似于 LDAP 服务,对用户、租户和角色、服务进行认证与授权,并且支持多认证机制。 |
Dashboard(控制面板服务) | Horizon | 提供一个 Web 管理界面,与 OpenStack 底层服务进行交互。 |
Image Service(镜像服务) | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统复制为镜像模板,在创建虚拟机时直接使用。可支持多格式的镜像。 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储。 |
Object Storage(对象存储服务) | Swift | 为 OpenStack 提供基于云的弹性存储,支持集群无单点故障。 |
Telemetry(计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为 OpenStack 用户提供记账途径。 |
常见的 OpenStack 服务
3)OpenStack 优势
OpenStack 在控制性、兼容性、可扩展性、灵活性方面具备有优势,它可能成为云计算领域的行业标准。
- 控制性:完全开源的平台,模块化的设计,提供相应的 API 接口,方便与第三方技术集成,从而满足自身业务需求。
- 兼容性:OpenStack 兼容其他公有云,方便用户进行数据迁移。
- 可扩展性:Openstack 采用模块化的设计,支持主流的 Linux 发行版本,可以通过横向扩展,增加节点、添加资源。
- 灵活性:用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。 Openstack 项目采用 Apache2 许可,意味着第三方厂家可以重新发布源代码。
- 行业标准:众多 IT 领军企业都加入到 OpenStack 项目,意味着 OpenStack 在未来可能形成云计算行业标准。
二、OpenStack 一键部署
本章使用 packstack 工具实现一键部署 OpenStack。通过该安装工具,只需简单运行一条命令,即可快速部署 OpenStack,省去繁琐的安装步骤,直接体验 OpenStack 的管理及使用。
2.1、环境介绍
1)本章实验环境
本案例需要提前部署一台新安装操作系统的主机,要求能访问互联网,主机的系统只需采用最小化方式安装。若通过 VMware 等虚拟机软件实现,网络采用桥接模式。
本章使用操作系统为 CentOS 7.6 的主机。下表是安装部署 OpenStack 环境的硬件设备配置要求。
类型 | 配置要求 |
CPU | 支持 Intel 64 或 AMD64 CPU 扩展,并启用了 AMD-V 或 Intel VT 硬件 虚拟化支持的 64 位 x86 处理器,逻辑 CPU 个数为 4 核 |
内存 | 16G |
磁盘空间 | 100G |
网络 | 1 个 1 Gbps 网卡 |
具体的案例环境如下表所示
主机名 | IP地址 / 掩码 | 角色 |
openstack | ens32:192.168.23.211 | 安装所有 OpenStack 组件及需要的环境 |
2)实验需求
本章后续实验步骤用于实现以下需求:
- 使用 packstack 一键部署 OpenStack。
- 创建云主机( OpenStack 中的虚拟机 )。
3)实现思路
- 安装前的准备工作。
- 使用 packstack 一键部署 OpenStack。
- 通过 Dashboard 体验 OpenStack 功能。
2.2、在线安装前准备工作
正式部署 OpenStack 之前,首先要准备如下环境。
1)准备虚拟机
实验所需虚拟机可以通过 VMware 等软件实现。虚拟机需要配置静态 IP 地址、网关及 DNS 参数,并测试网络连通性(具体过程略)。不过在配置 IP 地址的时候不要有“DOMAIN=x.x.x.x”这一行,因为这会影响 nova 配置文件内 host 的配置项,从而导致可用域不可用,无法创建虚拟机。后面离线部署也要注意此问题。
注意:虚拟机要打开虚拟化引擎
2)修改主机名
[root@centos7-11 ~]# hostnamectl set-hostname openstack
[root@centos7-11 ~]# bash
[root@openstack ~]#
3)更新系统并安装常用软件
[root@openstack ~]# yum -y update //更新系统
[root@openstack ~]# yum -y install vim wget net-tools lrzsz //安装常用软件
4)关闭防火墙并取消开机启动
[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
5)禁用 NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
6)禁用 Selinux
[root@openstack ~]# cat /etc/sysconfig/selinux | grep -v "^#" | grep -v "^$"
SELINUX=disabled
SELINUXTYPE=targeted
7)添加 hosts 绑定
[root@openstack ~]# tail -1 /etc/hosts
192.168.23.211 openstack //如果不绑定 hosts,在创建云主机之后无法通过控制台方式访问云主机
2.3、使用 packstack 一键在线部署 OpenStack
完成环境准备之后,通过 packstack 工具部署 OpenStack。packstack 是自动部署 OpenStack 的工具,通过它可以帮助管理员完成 OpenStack 的自动部署。
首先通过 YUM 源安装 packstack 工具 ,然后利用 packstack 工具一键部署 OpenStack,具体操作步骤如下所示。
1)Train 版 YUM 源安装
最小化安装 CentOS 7.6 的操作系统执行 update 升级之后,操作系统就会被升级到 CentOS 7.9 版本。系统默认会提供 CentOS 的官方 YUM 源,在源中包含了目前支持的 OpenStack 四个版本,分别是:Queens、Rocky、Stein、Train。本章案例选择安装 Train 版本。
[root@openstack ~]# yum -y install centos-release-openstack-train
Train 版本的 OpenStack 安装源部署完成之后,在/etc/yum.repos.d/目录下会自动生成 YUM 配置文件。
2)Packstack 软件包安装
完成 YUM 源配置之后,通过 YUM 安装 openstack-packstack 软件包。
[root@openstack ~]# yum -y install openstack-packstack
3)Packstack 一键部署 OpenStack
管理员只需在控制台上输入一条命令,所有的工作皆由 packstack 自动完成, packstack 工具会将所有的 OpenStack 组件部署到同一台服务器中。在实际工作中, 考虑到负载分担以及冗余,建议将 OpenStack 组件分别部署到不同的服务器中,请留意后续章节关于 OpenStack 多节点安装部分内容。
OpenStack 安装只需执行以下命令即可。当界面中出现“successfully”时,说明 OpenStack 安装成功。
此步骤约 30 分钟左右
[root@openstack ~]# packstack --allinone
Welcome to the Packstack setup utilityThe installation log file is available at: /var/tmp/packstack/20240415-145623-BkjF30/openstack-setup.log
Packstack changed given value to required value /root/.ssh/id_rsa.pubInstalling:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries [ DONE ]
Setting up CACERT [ DONE ]
Preparing AMQP entries [ DONE ]
Preparing MariaDB entries [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries [ DONE ]
Preparing Glance entries [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries [ DONE ]
Preparing Nova API entries [ DONE ]
Creating ssh keys for Nova migration [ DONE ]
Gathering ssh host keys for Nova migration [ DONE ]
Preparing Nova Compute entries [ DONE ]
Preparing Nova Scheduler entries [ DONE ]
Preparing Nova VNC Proxy entries [ DONE ]
Preparing OpenStack Network-related Nova entries [ DONE ]
Preparing Nova Common entries [ DONE ]
Preparing Neutron API entries [ DONE ]
Preparing Neutron L3 entries [ DONE ]
Preparing Neutron L2 Agent entries [ DONE ]
Preparing Neutron DHCP Agent entries [ DONE ]
Preparing Neutron Metering Agent entries [ DONE ]
Checking if NetworkManager is enabled and running [ DONE ]
Preparing OpenStack Client entries [ DONE ]
Preparing Horizon entries [ DONE ]
Preparing Swift builder entries [ DONE ]
Preparing Swift proxy entries [ DONE ]
Preparing Swift storage entries [ DONE ]
Preparing Gnocchi entries [ DONE ]
Preparing Redis entries [ DONE ]
Preparing Ceilometer entries [ DONE ]
Preparing Aodh entries [ DONE ]
Preparing Puppet manifests [ DONE ]
Copying Puppet modules and manifests [ DONE ]
Applying 192.168.23.211_controller.pp
192.168.23.211_controller.pp: [ DONE ]
Applying 192.168.23.211_network.pp
192.168.23.211_network.pp: [ DONE ]
Applying 192.168.23.211_compute.pp
192.168.23.211_compute.pp: [ DONE ]
Applying Puppet manifests [ DONE ]
Finalizing [ DONE ]**** Installation completed successfully ******Additional information:* Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks* A new answerfile was created in: /root/packstack-answers-20240415-145624.txt* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.* File /root/keystonerc_admin has been created on OpenStack client host 192.168.23.211. To use the command line tools you need to source the file.* To access the OpenStack Dashboard browse to http://192.168.23.211/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.* Because of the kernel update the host 192.168.23.211 requires reboot.* The installation log file is available at: /var/tmp/packstack/20240415-145623-BkjF30/openstack-setup.log* The generated manifests are available at: /var/tmp/packstack/20240415-145623-BkjF30/manifests
您在 /var/spool/mail/root 中有新邮件
OpenStack 安装完成之后,Linux 虚拟网桥 br-ex 中的 IP 地址是临时的,需要生成对应的配置文件。
[root@openstack ~]# ifconfig
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.24.4.1 netmask 255.255.255.0 broadcast 0.0.0.0inet6 fe80::f899:95ff:fe35:4f41 prefixlen 64 scopeid 0x20<link>ether fa:99:95:35:4f:41 txqueuelen 1000 (Ethernet)RX packets 5 bytes 140 (140.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 8 bytes 656 (656.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.23.211 netmask 255.255.255.0 broadcast 192.168.23.255inet6 fe80::20c:29ff:feae:410b prefixlen 64 scopeid 0x20<link>ether 00:0c:29:ae:41:0b txqueuelen 1000 (Ethernet)RX packets 457454 bytes 647735156 (617.7 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 101591 bytes 7440963 (7.0 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 498365 bytes 73690803 (70.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 498365 bytes 73690803 (70.2 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@openstack ~]# cd /etc/sysconfig/network-scripts/
[root@openstack network-scripts]# cp ifcfg-ens32 ifcfg-br-ex
[root@openstack network-scripts]# vim ifcfg-br-ex
TYPE="Ethernet"
BOOTPROTO="none"
NAME="br-ex"
DEVICE="br-ex"
ONBOOT="yes"
IPADDR="172.24.4.1"
PREFIX="24"
[root@openstack network-scripts]# systemctl restart network
至此,OpenStack 安装已完成。控制台消息的最后部分提示了环境变量文件与日志文件的位置,以及登录 Dashboard 的方法。根据提示在浏览器中输入 http://主机 IP 地址/dashboard,即可登录 OpenStack 的 Horizon Web 界面进行相关操作。Horizon 可以与每个 OpenStack 项目 API 进行通信,所以使用此 Web 界面可以执行大部分任务。
2.4、通过 Dashboard 体验 OpenStack 功能
Horizon 是 OpenStack 的一个组件, 同时也是 OpenStack 中 Dashboard(仪表板,即 Web 控制台)的项目名,主要用于 OpenStack 的管理,其底层通过 API 和 OpenStack 其他组件进行通信,为管理员提供 Web 页面,以方便操作管理。
在客户端的浏览器地址栏中输入 http://192.168.23.211, 进入 Dashboard 的登录界面,如图 1 所示。需要注意的是,如果出现 500 错误页面,这 是内部服务器错误,可重新启动服务器解决。
图 1 Dashboard登录页面
安装 OpenStack 后,在 root 用户的 Home 目录下会生成一个 keystonerc_admin 文件。该文件记录有 keystone(OpenStack 认证组件)认证的环境变量,包括用户名和登录密码。不同机器生成的默认密码是不同的,如下所示。
[root@openstack ~]# cat keystonerc_admin
unset OS_SERVICE_TOKENexport OS_USERNAME=adminexport OS_PASSWORD='dd434cf9e55c48e0'export OS_REGION_NAME=RegionOneexport OS_AUTH_URL=http://192.168.23.211:5000/v3export 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
在 Web 控制台中输入用户名和密码登录后,是 Dashboard 的默认界面,如图 2 所示。如果登录后为英文界面,可以选择右上角进行语言设置。在用户设置中,选择语言为简体中文
左边菜单栏主要分为项目、管理员、身份管理三项,下面开始逐个讲解。 图 2 Dashboard 登录成功界面
1)项目
项目中主要包含访问 API、计算、卷、网络、对象存储五个分类。
- 访问 API
显示所有组件的服务端点,比如计算、注册等服务,如图 3 所示。
图 3 API 连接信息
- 计算类
计算类主要有概况、实例、镜像、密钥对、主机组子类,如图 4 所示。
图 4 计算机类中的子类
各子类中的功能如下:
- 概况:主要是云计算各资源的使用情况,“of”后面的数字表示资源的上限限制, 默认有一个安全组。
- 实例:所有创建过的云主机会在实例中显示,也可以新创建云主机。
- 镜像:所有的镜像都会在这显示,可以执行创建镜像和删除镜像等操作。
- 密钥对:可以创建密钥对通过远程免密码对云主机进行管理。
- 主机组:依据相关的配置策略针对用户创建的虚拟主机进行管理,主要是约束虚拟主机与虚拟主机在物理主机上部署关系。
- 卷类
云主机所用到的存储卷,可以创建卷和快照,如图 5 所示。
图 5 卷中的子类
各子类功能如下:
- 卷:卷是可被连接到实例的块设备。
- 快照:为一个卷创建一个快照。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作统一快照。
- 网络类
网络类主要包含网络拓扑、网络、路由、安全组、浮动 IP、中继子类,如图 6 所示。
图 6 网络中的子类
各子类功能如下:
- 网络拓扑:显示当前网络的拓扑结构,包含网络、路由器以及接口。
- 网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,子网为 172.24.4.0/24。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT 转发到外部网络,实现网络通信。默认为空。
- 安全组:类似于防火墙的功能,可以通过安全组设置入口和出口规则,用于控制进出云主机的网络流量。
- 浮动 IP:一般用于外部网络访问云主机,类似于 NAT 目标地址转换。
- 中继:将父端口与子端口进行连接。
- 对象存储类
对象存储类主要包含容器子类,如图 7 所示。
图 7 对象存储类中的子类
容器表示存储数据的地方,和 Windows 的文件夹、Linux 的目录类似。
2)管理员
“管理员”和“项目”选项卡具有相似的功能,但是权限不同。“管理员”选项卡操作权限更高,但是仅限管理员用户操作。
- 概况
“管理员”选项卡里面包含了很多功能。其中“概况”列出了不同项目各种资源的使用情况,如图 8 所示。
图 8 管理员选项卡内概况
- 计算类
“管理员”选项卡内的计算类拥有比“项目”的计算类选项卡内更多、更丰富的功能。 拥有对系统资源更高的权限,有些操作只能在“管理员”选项卡的计算类内完成。具体的功能如图 9 所示。
图 9 计算类中的子类
每个子类对应的功能如下:
- 虚拟机管理器:当前所有虚拟机在 CPU、内存和磁盘三方面的的使用情况。
- 主机聚合:通过将主机组合到一起来把可用区域划分成逻辑单元。
- 实例:列出已经存在的所有云主机,不包括创建实例选项。
- 实例类型:创建云主机的规格,比如 CPU 数量、内存容量、硬盘容量。默认会提供部分实例类型,也可以根据需求进行自定义。
- 镜像:列出所有的镜像,可以执行创建镜像和删除镜像等操作。
- 卷类
卷应用到 OpenStack 的数据存储。“管理员”选项卡下的“卷”比“项目”下的“卷”多了两个功能,分别是“卷类型”和“组类型”,如图 10 所示。
图 10 卷类的子类
每个子类对应的功能如下:
- 卷:不同于“项目”中的“卷”,管理员选项卡下不能创建“卷”,适用于对“卷”的各种管理操作。
- 快照:为卷创建的快照,可进行“删除卷快照”和“更新元数据”等操作。
- 卷类型:在 OpenStack 中创建卷时,选择一个类型或者标签,被称为卷类型。 针对这个卷,卷类型通常是指后端存储驱动程序的一组指标。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作的统一快照。
- 组类型:组类型是在 OpenStack 创建组的时候可以指定的一个类型或标签。 它通常映射到这个组所使用的存储后端驱动器的性能指标集合。
- 网络类
“管理员”选项卡内的网络类基本功能和“项目”相比,多了“RBAC 策略”,少了“安全组”, 如图 11 所示。
图 11 网络类子类
每个子类对应的功能如下:
- 网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,其子网为 172.24.4.0/24。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT 转发到外部网络,实现网络通信。默认为空。
- 浮动 IP:是一些可以从外部访问的 IP 列表,通常从 ISP 那里买来的。 浮动 IP 缺省不会自动赋给实例,用户需要手动从地址池里抓取然后赋给实例。
- 中继:将父端口与子端口进行连接。
- RBAC 策略:基于角色的访问控制(RBAC)策略框架允许运营商和用户授予对特定项目的资源访问权。
- 系统类
系统类是“管理员”选项内独有的,它包含:“默认值”,“元数据定义”和“系统信息”三个子 类。如图 12 所示。
图 12 系统类子类
每个子类对应的功能如下:
- 默认值:也可以称作“限制值”,通常包括三个方面的配额值,分别是“计算配额”、“卷配额”和“网络配额”。
- 元数据定义:通常用来定义命名空间,在导入命名空间时,只支持裸 JSON 格式。系统管理员在导入时可使用 glance-manage 命令实现。
- 系统信息:列举了“服务”、“计算服务”、“块存储服务”和“网络代理”四个方面的相关信息。
3)身份管理
身份管理主要有项目、用户、组、角色等分类,如图 13 所示。
图 13 身份管理类中的子类
每个分类实现的功能有:
- 项目:显示当前所有的项目,即租户。
- 用户:显示当前所有的用户。
- 组:显示当前所有的组。
- 角色:显示当前所有的角色。
- 应用程序凭证:应用程序凭据提供了一种在不共享用户密码身份验证的情况下将用户授权委派给应用程序的方法。
2.5、创建云主机
了解了控制台的基本功能之后,开始尝试通过 OpenStack 创建一台云主机。
一台云主机成功创建或启动需要依赖 OpenStack 中的各种虚拟资源,如 CPU、 内存、硬盘等。如果需要云主机连接外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动 IP。因此,在创建云主机之前,首先要保证所需的资源已经配置完成。
本章实验中,使用默认的实例类型 m1.tiny(1CPU、512MB 内存、1GB 根分区磁盘),新创建网络 private,并通过路由器 my_route 将虚拟机所在的 private 网络路由(同时执行 NAT 转换)到外部网络 public,创建云主机并使其可以访问外部网络。
在实验过程中,创建了云主机之后,如果某页面无法打开,可观察虚拟机内存使用情况,必要时增加些内存,再继续进行实验。
1)创建网络
管理员成功登录 Dashboard 后,执行以下操作可以创建一个自定义的网络。
- ①在控制台中依次单击“项目”—“网络”—“网络”按钮。在右边区域默认存在公有网络 public,如图 14 所示。
图 14 默认的公有网络
- ②单击右上角“+创建网络”按钮,在弹出的创建网络界面中,输入网络名称为 “private”,保持默认的复选框状态,单击“下一步”按钮,如图 15 所示。
图 15 创建网络的网络页面
- ③ 在子网信息页面,输入子网名称、网络地址等参数,网关 IP 字段如果保持为空,表示网关是使用该网络的第一个地址,即 x.x.x.1 为网关地址。如果不希望该网络中的虚拟机通过该网络访问其他网络,可勾选“禁用网关”,单击“下一步”按钮。如 图 16 所示。
图 16 创建网络(二)
- ④在子网详情页面中,可以配置 DHCP,向该网络中的云主机自动分配 IP 地址。 如需配置 DHCP,保持“激活 DHCP”为勾选状态,分配地址池栏中,输入需要分配 IP 地址的范围,首地址和末地址以逗号分割,DNS 服务器中输入需要分配的 DNS 地址, 这通常是网络中真实的 DNS 服务器地址。单击“创建”按钮,如图 17 所示。
图 17 创建网络的子网详情页
- ⑤完成网络创建操作后,在网络列表页面中会显示已创建成功的网络,如图 18 所示。
图 18 创建成功的网络
2)创建路由
创建路由的目的是为了云主机所在的私有网络和外部网络所在的公有网络之间实现进行信息的转发,让云主机可以访问外部网络。下面是具体的操作步骤。
- ①在控制台中依次单击“项目”—“网络”—“路由”按钮,如图 19 所示。
图 19 创建路由的路由页面
- ②单击右上角的 “+新建路由 ”按钮,在弹出的新建路由页面,填写路由名称 my_route,外部网络选择默认的公有网络 public,复选框保持默认,完成后单击“新建路由”按钮,如图 20 所示。
图 20 创建路由的新建路由页面
- ③在路由列表页面可以看到之前创建的路由器(虚拟路由器),如图 21 所示。 新的路由器创建完成后默认存在一个外部接口,并关联到外部网络中。除此之外,还需要增加一个接口并关联到内部网络 private,从而实现两个网络之间转发数据。
图 21 创建路由的路由列表页面
- 在图 21 中,单击右边区域的路由器名称“my_route”超链接,进入路由器详细信息页面。在弹出的路由器详细信息页面中,单击“接口”标签,就会弹出如图 22 所示“接口”选项卡的内容。
图 22 创建路由的接口选项卡
- ⑤单击图 22 中“+增加接口”按钮,在弹出的增加接口页面,选择子网为之前创建的 private 私 有网络,IP地址栏可以留空,默认为 private 网络的网关地址(192.168.100.1)。完成后单击“提交”按钮。如图 23 所示。
图 23 创建路由的增加接口页面
- ⑥完成后单击“提交”按钮之后,即可返回路由配置页面,可以看到创建成功的接口,如图 24 所示。
图 24 创建接口成功信息
- ⑦完成创建网络和创建路由之后,再次查看网络拓扑。依次单击“项目”—“网络”—“网络拓扑”按钮,在右边的网络拓扑区域已经多了一个私有网络,并且私有网络和公有网络之间通过路由器连接,如图 25 所示。
图 25 更新的网络拓扑
至此,完成了网络资源的配置。
3)创建云主机
完成网络和路由部分的配置之后,下面开始创建第一台云主机。
- ①核实镜像的大小,依次单击“项目”—“计算”—“镜像”按钮,可以看到 cirrors 镜像的大小仅为 273 字节,如图 26 所示。如果使用此镜像创建云主机,则会报错,所以首先要上传制作正确的镜像。
图 26 现有 cirros 镜像查看
- ②点击右侧的 “+创建镜像”,在弹出的页面内填写镜像信息。镜像名称填写 “cirrors01”,镜像源通过“浏览”的方式选择到 cirros-0.5.1-x86_64-disk.img,镜像格式选择“QCOW2”,将镜像的可见性选为“公有”,最后点击创建镜像。如图 27 所示。
图 27 创建镜像
- ③镜像创建完成后,大小为 15M 左右,远大于 273K,如图 28 所示。
图 28 镜像列表
- ④完成镜像的创建后,下面开始创建云主机。依次单击“项目”—“计算”—“实例”按钮,在右边区域中没有任何实例存在。创建云主机需要单击右上角“创建实例”按钮, 如图 29 所示。
图 29 创建云主机(一)
- ⑤在弹出的创建实例中的“详情”页面,填写实例名称为“test01”,其他字段保持默认设置,并单击“下一项”按钮,如图 30 所示。
图 30 创建云主机(二)
- ⑥在“源”页面,选择源一栏中通过下拉菜单选择“镜像”,填写好卷大小,并单击页面下方列出的可用镜像“cirrors01”右边的上箭头 ,完成后单击“下一步”按钮。 如图 31 所示。
图 31 创建云主机(三)
- ⑦在“实例类型”页面,选择资源占用最少的实例类型,单击页面下方名称为 “m1.tiny”的实例类型右边的上箭头 ,完成后单击“下一项”按钮。如图 32 所示。
图 32 创建云主机(四)
- ⑧在“网络”页面中,选择云主机连接的私有网络。单击之前创建的名称为“private” 网络右边的箭头,保证 private 网络置于可分配,如图 33 所示。后续的步骤保持默认即可,最后直接单击“创建实例”按钮创建云主机。
图 33 创建云主机(五)
- ⑨在弹出的实例列表页面中,可以看到已创建的云主机。创建实例有一个过程, 需要执行块设备映射等操作,主要看硬件和网络的性能,可能需要等待几秒或者十几秒钟,最后看到成功运行。如图 34 所示。
图 34 创建云主机(六)
4)管理云主机并测试连通性
- ①云主机启动成功后,单击云主机 test01 中“创建快照”按钮右边的下拉菜单,并选择“控制台”按钮,如图 35 所示。
图 35 管理云主机(一)
- ②在弹出的控制台页面中,单击“点击此处只显示控制台”超链接,进入云主机的控制台页面,如图 36 所示。如果控制台页显示黑屏,同时按下“Ctrl+Alt”按钮即可。
图 36 管理云主机(二)
- ③根据控制台提示信息,输入登录用户名:cirros,密码:gocubsgo。如果进入 $提示符的 shell 终端,说明已经成功登录,如图 37 所示。
图 37 管理云主机(三)
- ④在云主机控制台中运行 ifconfig 命令,从命令输出结果中可以看到,云主机已经通过 private 网络中的 DHCP 自动获取到 IP 地址 192.168.100.64,如图 38 所 示。
图 38 云主机网络连通测试(一)
- ⑤在云主机上测试连接 baidu.com 和 Windows 本机 IP 的连通性,如图 39 所示。
图 39 云主机网络连通测试(二)
注意:如果 ping 外网不通,请检查 ifcfg-br-ex 配置文件并查看宿主机 br-ex 网卡是否启动。如果没有启动,需要执行以下命令:
[root@openstack ~]# ifconfig br-ex 172.24.4.1 netmask 255.255.255.0 up
再次测试,如果还是 ping 外网不通,检查下 Linux 虚拟机是否开启了路由转发。 若没开启,可执行如下命令开启。
[root@openstack ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //添加此行
[root@openstack ~]# sysctl -p
至此,已经基本完成 OpenStack 入门体验。但在实际生产环境中,无论是搭建部署还是运维操作都要更加复杂,需要多加练习基本操作。