目录
1.1云计算概念
1.1.1什么是云计算
1.1.2云计算的服务模型
1.laas
2.paas
3.saas
1.1.3OpenStack概述
1.OpenStack起源
2.什么是OpenStack
3.OpenStack优势
1.2OpenStack一键部署
1.2.1环境介绍
1.本章实验环境
2.实验需求
3.实验思路
1.2.2在线安装前准备工作
1.准备虚拟机:实验所需虚拟机可以通过 VMware 等软件实现。虚拟机需要配置静态 IP 地址、网关及 DNS 参数,并测试网络连通性(具体过程略)。不过在配置 IP 地址的时候不要有 “DOMAIN=x.x.X.X” 这一行,因为这会影响 nova 配置文件内 host 的配置项,从而导致可用域不可用,无法创建虚拟机。后面离线部署也要注意此问题。
2.修改主机名:
3.更新系统并安装常用软件:
4.关闭防火墙并取消开机启动:
5.禁用 NetworkManager:
6.禁用 Selinux:
7.添加 hosts 绑定
1.2.3使用packstack 一键在线部署OpenStack
1.Train 版 YUM 源安装
2.Packstack 软件包安装
3.Packstack 一键部署 OpenStack
1.2.4 离线安装前准备工作
1.虚拟机准备:
2.修改主机名
3.安装常用软件并更新系统
4.关闭 firewalld 防火墙并取消开机启动
5.关闭 NetworkManager 并取消开机启动
6.禁用 Selinux
7.添加 hosts 绑定
1.2.5 使用 packstack 一键离线部署 OpenStack
1.上传并解压 Train 版离线安装包
2.配置本地 YUM 源
3.更新 YUM 源数据
4.安装 openstack-packstack
5.一键部署 OpenStack
1.2.6 通过 Dashboard 体验 OpenStack 功能
1. 项目
2. 管理员
3. 身份管理
1.2.7 创建云主机
1. 创建网络
2. 创建路由
3. 创建云主机
4. 管理云主机并测试连通性
云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10 万亿次的运算能力,可以用于模拟核爆炸、预测气候变化以及市场发展趋势。
云计算有广义和狭义之分。
云计算是一种模型,提供无论在何时何地都可以便捷获取所需资源的模型,并能够让用户根据需要快速创建应用,并且在不需要时进行资源释放。
现在云计算技术已经日渐成熟,很多企业已经拥有自己的私有云,而掌握这种技术的人才也更为抢手。目前,云计算使用最广泛的是开源项目 OpenStack。经过多个版本的开发更新,现在已经到 T 版。作为云计算项目之一的 OpenStack 也受到各个企业的青睐,成为大家搭建私有云的首选。
云计算模型中有 IaaS(Infrastructure as a Service,基础架构即服务)、PaaS(Platform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三种基本服务模型。
提供最底层的 IT 基础设施服务,包括处理能力、存储空间、网络资源等。用户可以从中获取硬件或者虚拟硬件资源(包括裸机或者虚拟机),之后可以给申请到的资源安装操作系统和其他应用程序。一般面向的对象是 IT 管理人员。
把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在上面安装其他应用程序,但不能修改已经安装好的操作系统和运行环境。一般面向的对象是开发人员,需要了解平台提供环境下的应用开发和部署。
可直接通过互联网为用户提供软件和应用程序等服务。用户可以通过租赁的方式获取安装在厂商或者服务供应商那里的软件。一般面向的对象是普通用户,最常见的模式是提供给用户一组账号和密码。
OpenStack 是 Rackspace(一家美国的云计算厂商)和美国国家航空航天局(National)Aeronautics and Space Administration,简称 NASA)在 2010 年 7 月共同发起的项目。由 Rackspace 贡献存储源码(Swift)、NASA 贡献计算源码(Nova)。
OpenStack 是一个通过数据中心控制计算资源、存储资源和网络资源的云平台。同时它又是一款开源软件,以 Apache 许可证授权的自由软件和开放源代码项目,支持所有类型的云环境。OpenStack 的目标是提供简单实施、可扩展以及丰富功能集的云产品,来自全世界的云计算专家共同维护该云项目。OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface,简称 API),以促进各组件之间的整合。
OpenStack 被用来提供公有云以及私有云的建设以及管理。作为一个开源项目,其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端。
OpenStack 覆盖了网络、虚拟化、操作系统、服务器等各个方面。2019 年 10 月 OpenStack 发布了最新版本 Train。一般情况下,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 在控制性、兼容性、可扩展性、灵活性方面具备有优势,它可能成为云计算领域的行业标准。
本案例需要提前部署一台新安装操作系统的主机,要求能访问互联网,主机的系统只需采用最小化方式安装。若通过 VMware 等虚拟机软件实现,网络采用桥接模式。
本章使用操作系统为 CentOS7.3 的主机。表 1-2 是安装部署 OpenStack 环境的硬件设备最低配置要求。
类型 | 最低配置要求 |
---|---|
CPU | 支持 Intel 64 或 AMD64 CPU 扩展,并启用了 AMD-V 或 Intel VT 硬件虚拟化支持的 64 位 x86 处理器,逻辑 CPU 个数为 4 核 |
内存 | 8GB |
磁盘空间 | 30GB |
网络 | 1 个 1 Gbps 网卡 |
具体的案例环境如表 1-3 所示。
主机名 | IP 地址 / 掩码 | 角色 |
---|---|---|
openstack | ens33: 192.168.9.137/24 | 安装所有 OpenStack 组件及 |
本章后续实验步骤用于实现以下需求:
(1) 使用 packstack 一键部署 OpenStack。
(2) 创建云主机(OpenStack 中的虚拟机)。
本章案例的实现思路大致如下:
(1) 安装前的准备工作。
(2) 使用 packstack 一键部署 OpenStack。
(3) 通过 Dashboard 体验 OpenStack 功能。
[root@localhost ~]#hostnamectl set-hostname openstack
[root@localhost ~]#bash
[root@openstack ~]#
[root@openstack ~]# yum-y update
[root@openstack ~]#yum -y install vim wget net-tools lrzsz
[root@openstack ~]#systemctl stop firewalld
[root@openstack -]#systemct disable firewalld
[root@openstack ~]#systemctl stop NetworkManager
[root@openstack ~]#systemctl disable NetworkManager
SELINUX=disabled
[root@openstack ~]#cat letc/hosts
192.168.9.137openstac
#如果不绑host,在创建云主机之后无法通过控制台方式访问云主机
完成环境准备之后,通过 packstack 工具部署 OpenStack。packstack 是自动部署 OpenStack 的工具,通过它可以帮助管理员完成 OpenStack 的自动部署。
首先通过 YUM 源安装 packstack 工具,然后利用 packstack 工具一键部署 OpenStack,具体操作步骤如下所示。
yum install-ycentos-release-openstack-train
yum install-y openstack-packstack
packstack -allinone
[root@localhost ~]#cat letc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Etherne"
BOOTPROTO=static
//省略了部分内容
IPADDR="192.168.9.137"
PREFIX="24"
GATEWAY="192.168.9.1"
DNS1="114.114.114.114"
#DOMAIN=119.29.29.29 //不要出现DOMAIN配置项
[root@localhost ~]#hostnamectl set-hostname openstack
[root@localhost ~]#bash
[root@openstack ~]# yum -y install vim wget net-tools lrzsz createrepo yum-utils
[root@openstack ~]#yum-y update
[root@openstack -~]#systemct stop firewalld
[root@openstack ~]#systemctl disable firewalld
[root@openstack -~]#systemctl stop NetworkManager
[root@openstack -~]#systemctl disable NetworkManager
[root@openstack ~]#sed-/SELINUX=/s/enforcing/disabled /etc/selinux/config
[root@openstack ~]#setenforce 0
[root@openstack ~]#getenforce
Permissive
[root@openstack ~]#cat letc/hosts
192.168.9.137 openstack
[root@openstack -]#mkdir /data && cd /data
[root@openstackdata]#tar zxf openstack.tgz
root@openstack ~]#cd /etclyum.repos.d/
[[email protected]]#mkdir backup
[[email protected]]#mv*.repo backup
[[email protected]]#vim local.repo
[base]
name=base
baseurl=file://data/base
gpgcheck=0
enabled=1
[centos-ceph-nautius]
name=centos-ceph-nautilus
baseurl=file://data/centos-ceph-nautilus
gpgcheck=0
enabled=1
[centos-nfs-ganesha28]
name=centos-nfs-ganesha28
baseurl=file://ata/centos-nfs-ganesha28
gpgcheck=0
enabled=1
[centos-openstack-train]
name=centos-openstack-train
baseur=file://data/centos-openstack-train
gpgcheck=0
enabled=1
[centos-qemu-ev]
name=centos-qemu-ev
baseurl=file:///data/centos-qemu-ev
gpgcheck=0
enabled=1
[extras]
name=extras
baseurl=file:///datalextras
gpgcheck=0
enabled=1
[openstack-train]
name=openstack-train
baseurl=file://data/openstack-train
gpgcheck=0
enabled=1
[rdo-qemu-ev]
name=rdo-qemu-ev
baseurl=file:///data/rdo-qemu-ev
gpgcheck=0
enabled=1
[updates]
name=updates
baseurl=file://data/updates
gpgcheck=0
enabled=1
[root@openstack data]#yum clean all
[root@openstack data ]#yum makecache
[root@localhost ~]# yum-y install openstack-packstack
[root@openstack ~]#packstack -allinone
Horizon 是 OpenStack 的一个组件,同时也是 OpenStack 中 Dashboard(仪表板,即 Web 控制台)的项目名,主要用于 OpenStack 的管理,其底层通过 API 和 OpenStack 其他组件进行通信,为管理员提供 Web 页面,以方便操作管理。
在客户端的浏览器地址栏中输入http://192.168.9.137/dashboard,进入 Dashboard 的登录界面。需要注意的是,如果出现 500 错误页面,这是内部服务器错误,可重新启动服务器解决。
安装 OpenStack 后,在 root 用户的 Home 目录下会生成一个 keystonerc_admin 文件。该文件记录有 keystone(OpenStack 认证组件)认证的环境变量,包括用户名和登录密码。不同机器生成的默认密码是不同的,如下所示。
[root@openstack ~]#cat keystonerc_admin
项目中主要包含访问 API、计算、卷、网络、对象存储五个分类。
“管理员” 和 “项目” 选项卡具有相似的功能,但是权限不同。“管理员” 选项卡操作权限更高,但是仅限管理员用户操作。
身份管理主要有项目、用户、组、角色等分类。
了解了控制台的基本功能之后,开始尝试通过 OpenStack 创建一台云主机。
一台云主机成功创建或启动需要依赖 OpenStack 中的各种虚拟资源,如 CPU、内存、硬盘等。如果需要云主机连接外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动 IP。因此,在创建云主机之前,首先要保证所需的资源已经配置完成。
本章实验中,使用默认的实例类型 m1.tiny(1CPU、512MB 内存、1GB 根分区磁盘),新创建网络 private,并通过路由器 my_route 将虚拟机所在的 private 网络路由(同时执行 NAT 转换)到外部网络 public,创建云主机并使其可以访问外部网络。
在实验过程中,创建了云主机之后,如果某页面无法打开,可观察虚拟机内存使用情况,必要时增加些内存,再继续进行实验。
管理员成功登录 Dashboard 后,执行以下操作可以创建一个自定义的网络。
①在控制台中依次单击 “项目”→“网络”→“网络” 按钮。在右边区域默认存在公有网络 public。
②单击右上角 “+ 创建网络” 按钮,在弹出的创建网络界面中,输入网络名称为 “private”,保持默认的复选框状态,单击 “下一步” 按钮。
③在子网信息页面,输入子网名称、网络地址等参数,网关 IP 字段如果保持为空,表示网关是使用该网络的第一个地址,即 x.x.x.1 为网关地址。如果不希望该网络中的虚拟机通过该网络访问其他网络,可勾选 “禁用网关”,单击 “下一步” 按钮。
④在子网详情页面中,可以配置 DHCP,向该网络中的云主机自动分配 IP 地址。如需配置 DHCP,保持 “激活 DHCP” 为勾选状态,分配地址池栏中,输入需要分配 IP 地址的范围,首地址和末地址以逗号分割,DNS 服务器中输入需要分配的 DNS 地址,这通常是网络中真实的 DNS 服务器地址。单击 “创建” 按钮。
⑤完成网络创建操作后,在网络列表页面中会显示已创建成功的网络。
创建路由的目的是为了云主机所在的私有网络和外部网络所在的公有网络之间实现进行信息的转发,让云主机可以访问外部网络。下面是具体的操作步骤。
①在控制台中依次单击 “项目”→“网络”→“路由” 按钮。
②单击右上角的 “+ 新建路由” 按钮,在弹出的新建路由页面,填写路由名称 my_route,外部网络选择默认的公有网络 public,复选框保持默认,完成后单击 “新建路由” 按钮。
③在路由列表页面可以看到之前创建的路由器(虚拟路由器),新的路由器创建完成后默认存在一个外部接口,并关联到外部网络中。除此之外,还需要增加一个接口并关联到内部网络 private,从而实现两个网络之间转发数据。
④在路由器详细信息页面中,单击 “接口” 标签,单击 “+ 增加接口” 按钮,在弹出的增加接口页面,选择子网为之前创建的 private 私有网络,IP 地址栏可以留空,默认为 private 网络的网关地址(192.168.100.1)。完成后单击 “提交” 按钮。
⑤完成后单击 “提交” 按钮之后,即可返回路由配置页面,可以看到创建成功的接口。
⑥完成创建网络和创建路由之后,再次查看网络拓扑,私有网络和公有网络之间通过路由器连接。
完成网络和路由部分的配置之后,下面开始创建第一台云主机。
①核实镜像的大小,依次单击 “项目”“计算”“镜像” 按钮,看到 cirrors 镜像的大小仅为 273 字节,如果使用此镜像创建云主机,则会报错,所以首先要上传制作正确的镜像。
②点击右侧的 “+ 创建镜像”,在弹出的页面内填写镜像信息。镜像名称填写 “cirrors01”,镜像源通过 “浏览” 的方式选择到 cirros-0.5.1-x86_64-disk.img,镜像格式选择 “QCOW2”,将镜像的可见性选为 “公有”,最后点击创建镜像。
③镜像创建完成后,大小为 15M 左右,远大于 273K。
④完成镜像的创建后,依次单击 “项目”“计算”→“实例” 按钮,在右边区域中没有任何实例存在。创建云主机需要单击右上角 “创建实例” 按钮。
⑤在弹出的创建实例中的 “详情” 页面,填写实例名称为 “test”,其他字段保持默认设置,并单击 “下一项” 按钮。
⑥在 “源” 页面,选择源一栏中通过下拉菜单选择 “镜像”,填写好卷大小,并单击页面下方列出的可用镜像 “cirrors01” 右边的上箭头,完成后单击 “下一步” 按钮。
⑦在 “实例类型” 页面,选择资源占用最少的实例类型,单击页面下方名称为 “m1.tiny” 的实例类型右边的上箭头,完成后单击 “下一项” 按钮。
⑧在 “网络” 页面中,选择云主机连接的私有网络。单击之前创建的名称为 “private” 网络右边的箭头,保证 private 网络置于可分配,后续的步骤保持默认即可,最后直接单击 “创建实例” 按钮创建云主机。
⑨在弹出的实例列表页面中,可以看到已创建的云主机。创建实例有一个过程,需要执行块设备映射等操作,主要看硬件和网络的性能,可能需要等待几秒或者十几秒钟,最后看到成功运行。
①云主机启动成功后,单击云主机 test 中 “创建快照” 按钮右边的下拉菜单,并选择 “控制台” 按钮。
②在弹出的控制台页面中,单击 “点击此处只显示控制台” 超链接,进入云主机的控制台页面。如果控制台页显示黑屏,同时按下 “Ctrl+Alt” 按钮即可。
③根据控制台提示信息,输入登录用户名:cirros,密码:gocubsgo。如果进入 $ 提示符的 shell 终端,说明已经成功登录。
④在云主机控制台中运行 ifconfig 命令,从命令输出结果中可以看到,云主机已经通过 private 网络中的 DHCP 自动获取到 IP 地址。
⑤在云主机上测试连接baidu.com和 Windows 本机 IP 的连通性。
注意:如果 ping 外网不通,请检查 ifcfg-br-ex 配置文件并查看宿主机 br-ex 网卡是否启动。如果没有启动,需要执行以下命令
[root@openstack ~]#ifconfig br-ex 172.24.4.1 netmask 25.255.255.0 up
再次测试,如果还是 ping 外网不通,检查下 Linux 虚拟机是否开启了路由转发。若没开启,可执行如下命令开启。
[root@localhost ~]#vi/letc/sysct.conf
net.ipv4.ip_forward =1
[root@localhost-~]#sysctl-p