1、 OpenStack Mitaka手动部署手册概况The OpenStack project is an open source cloud computing platform that supports all types of cloud environments. The project aims for simple implementation, massive scalability, and a rich set of features. Cloud computing experts from around the world contribute to the projec
2、t.OpenStack 通过各种补充服务提供基础设施即服务 Infrastructure-as-a-Service (IaaS)的解决方案。每个服务都提供便于集成的应用程序接口 :term:Application Programming Interface (API)。本指南涵盖了如何安装功能示例架构逐步部署下面主要的 OpenStack 服务,特别适合于对 Linux 经验丰富的 OpenStack 新用户:OpenStack services服务 项目名称 描述Dashboard Horizon提供了一个基于 web 的自服务门户,与 OpenStack 底层服务交互,诸如启动一个实例,分
3、配 IP 地址以及配置访问控制。Compute Nova 在 OpenStack 环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。Networking Neutron确保为其它 OpenStack 服务提供网络连接即服务,比如 OpenStack 计算。为用户提供 API 定义网络和使用。基于插件的架构其支持众多的网络提供商和技术。存储 Object Storage Swift通过一个 RESTful,基于 HTTP 的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入
4、对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制。Block Storage Cinder 为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。共享服务 Identity service Keystone 为其他 OpenStack 服务提供认证和授权服务,为所有的 OpenStack 服务提供一个端点目录。Image service Glance 服务 存储和检索虚拟机磁盘镜像,OpenStack 计算会在实例部署时使用此服务。Telemetry 服务请参见Ceilometer服务 为 OpenStack 云的计费、基准、扩展性以及统计等目的提供
5、监测和计量。高层次服务 Orchestration 服务请参见 Heat 服务Orchestration 服务支持多样化的综合的云应用,通过调用 OpenStack-native REST API 和CloudFormation-compatible Query API,支持:term:HOT 格式模板或者 AWS CloudFormation 格式模板在你对基础安装,配置,操作和故障诊断熟悉之后,你应该考虑按照以下步骤使用生产架构来进行部署 确定并补充必要的核心和可选服务,以满足性能和冗余要求。 使用诸如防火墙,加密和服务策略的方式来加强安全。 使用自动化部署工具,例如 Ansible, C
6、hef, Puppet, or Salt 来自动化部署,管理生产环境示例的架构这个示例架构需要至少 2 个(主机)节点来启动基础服务:term:virtual machine 或者实例。像块存储服务,对象存储服务这一类服务还需要额外的节点这个示例架构不同于下面这样的最小生产结构 网络代理驻留在控制节点上而不是在一个或者多个专用的网络节点上。 私有网络的覆盖流量通过管理网络而不是专用网络硬件需求控制器控制节点上运行身份认证服务,镜像服务,计算服务的管理部分,网络服务的管理部分,多种网络代理以及仪表板。也需要包含一些支持服务,例如:SQL数据库,消息队列, and NTP。可选的,可以在计算节点上
7、运行部分块存储,对象存储,Orchestration 和 Telemetry 服务。计算节点上需要至少两块网卡。计算计算节点上运行计算服务中管理实例的管理程序部分。默认情况下,计算服务使用 KVM。你可以部署超过一个计算节点。每个结算节点至少需要两块网卡。块设备存储可选的块存储节点上包含了磁盘,块存储服务和共享文件系统会向实例提供这些磁盘。为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。你可以部署超过一个块存储节点。每个块存储节点要求至少一块网卡。对象存储可选的对象存储节点包含了磁盘。对象存储服务用这些磁盘来存储账号,容器和对象。
8、为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。这个服务要求两个节点。每个节点要求最少一块网卡。你可以部署超过两个对象存储节点。网络从下面的虚拟网络选项中选择一种选项。网络选项 1:公共网络公有网络选项使用尽可能简单的方式主要通过 layer-2(网桥/交换机)服务以及 VLAN 网络的分割来部署 OpenStack 网络服务。本质上,它建立虚拟网络到物理网络的桥,依靠物理网络基础设施提供 layer-3 服务(路由) 。额外地 ,DHCP 为实例提供 IP 地址信息。注解这个选项不支持私有网络,layer-3 服务以及一些高级服
9、务,例如:LBaaS and FWaaS。如果你需要这些服务,请考虑私有网络选项网络选项 2:私有网络私有网络选项扩展了公有网络选项,增加了启用 self-service覆盖分段方法的 layer-3(路由)服务,比如 VXLAN。本质上,它使用 NAT 路由虚拟网络到物理网络。另外,这个选项也提供高级服务的基础,比如 LBaas 和 FWaaS。环境这个部分解释如何按示例架构配置控制节点和一个计算节点尽管大多数环境中包含认证,镜像,计算,至少一个网络服务,还有仪表盘,但是对象存储服务也可以单独操作。如果你的使用情况与涉及到对象存储,你可以在配置完适当的节点后跳到:swift。然而仪表盘要求至
10、少要有镜像服务,计算服务和网络服务。你必须用有管理员权限的帐号来配置每个节点。可以用 root 用户或 sudo 工具来执行这些命令。为获得最好的性能,我们推荐在你的环境中符合或超过在 :ref:figure-hwreqs中的硬件要求。以下最小需求支持概念验证环境,使用核心服务和几个:term: CirrOS实例: 控制节点: 1 处理器, 4 GB 内存, 及 5 GB 存储 计算节点: 1 处理器, 2 GB 内存, 及 10 GB 存储由于 Openstack 服务数量以及虚拟机数量的正常,为了获得最好的性能,我们推荐你的环境满足或者超过基本的硬件需求。如果在增加了更多的服务或者虚拟机后
11、性能下降,请考虑为你的环境增加硬件资源。为了避免混乱和为 OpenStack 提供更多资源,我们推荐你最小化安装你的 Linux 发行版。同时,你必须在每个节点安装你的发行版的 64 位版本。每个节点配置一个磁盘分区满足大多数的基本安装。但是,对于有额外服务如块存储服务的,你应该考虑采用 :term:Logical Volume Manager (LVM)进行安装。对于第一次安装和测试目的,很多用户选择使用 :term:virtual machine (VM)作为主机。使用虚拟机的主要好处有一下几点: 一台物理服务器可以支持多个节点,每个节点几乎可以使用任意数目的网络接口。 在安装过程中定期进
12、行“快照 ”并且在遇到问题时可以“回滚”到上一个可工作配置的能力。但是,虚拟机会降低您实例的性能,特别是如果您的 hypervisor 和/ 或 进程缺少硬件加速的嵌套虚拟机支持时。注解如果你选择在虚拟机内安装,请确保你的 hypervisor 提供了在 public 网络接口上禁用 MAC 地址过滤的方法。 安全OpenStack 服务支持各种各样的安全方式,包括密码 password、policy 和 encryption,支持的服务包括数据库服务器,且消息 broker 至少支持 password 的安全方式。为了简化安装过程,本指南只包含了可适用的密码安全。你可以手动创建安全密码,使用
13、pwgen 工具生成密码或者通过运行下面的命令:$ openssl rand -hex 10对 OpenStack 服务而言,本指南使用SERVICE_PASS 表示服务帐号密码,使用SERVICE_DBPASS 表示数据库密码。下面的表格给出了需要密码的服务列表以及它们在指南中关联关系:密码密码名称 描述数据库密码(不能使用变量) 数据库的 root 密码ADMIN_PASS admin 用户密码CEILOMETER_DBPASS Telemetry 服务的数据库密码CEILOMETER_PASS Telemetry 服务的 ceilometer 用户密码CINDER_DBPASS 块设备存
14、储服务的数据库密码CINDER_PASS 块设备存储服务的 cinder 密码DASH_DBPASS Database password for the dashboardDEMO_PASS demo 用户的密码GLANCE_DBPASS 镜像服务的数据库密码GLANCE_PASS 镜像服务的 glance 用户密码HEAT_DBPASS Orchestration 服务的数据库密码HEAT_DOMAIN_PASS Orchestration 域的密码HEAT_PASS Orchestration 服务中heat用户的密码KEYSTONE_DBPASS 认证服务的数据库密码NEUTRON_DB
15、PASS 网络服务的数据库密码NEUTRON_PASS 网络服务的 neutron 用户密码NOVA_DBPASS 计算服务的数据库密码NOVA_PASS 计算服务中nova用户的密码RABBIT_PASS RabbitMQ 的 guest 用户密码SWIFT_PASS 对象存储服务用户swift的密码OpenStack 和配套服务在安装和操作过程中需要管理员权限。在很多情况下,服务可以与自动化部署工具如 Ansible, Chef,和 Puppet 进行交互,对主机进行修改。例如,一些 OpenStack 服务添加 root 权限 sudo 可以与安全策略进行交互。另外,网络服务设定内核网络
16、参数的默认值并且修改防火墙规则。为了避免你初始化安装的很多问题,我们推荐在你的主机上使用支持的发行版本。不管怎样,如果你选择自动化部署你的主机,在进一步操作前检查它们的配置和策略。主机网络在你按照你选择的架构,完成各个节点操作系统安装以后,你必须配置网络接口。我们推荐你禁用自动网络管理工具并手动编辑你相应版本的配置文件。出于管理目的,例如:安装包,安全更新, DNS和 :term:NTP,所有的节点都需要可以访问互联网。在大部分情况下,节点应该通过管理网络接口访问互联网。为了更好的突出网络隔离的重要性,示例架构中为管理网络使用private address space 并假定物理网络设备通过
17、:term:NAT或者其他方式提供互联网访问。示例架构使用可路由的 IP 地址隔离服务商(外部)网络并且假定物理网络设备直接提供互联网访问。在提供者网络架构中,所有实例直接连接到提供者网络。在自服务(私有)网络架构,实例可以连接到自服务或提供者网络。自服务网络可以完全在openstack 环境中或者通过外部网络使用:term:NAT 提供某种级别的外部网络访问。示例架构假设使用如下网络: 管理使用 10.0.0.0/24 带有网关 10.0.0.1这个网络需要一个网关以为所有节点提供内部的管理目的的访问,例如包的安装、安全更新、 DNS,和 NTP。 提供者网段 203.0.113.0/24,
18、网关 203.0.113.1这个网络需要一个网关来提供在环境中内部实例的访问。您可以修改这些范围和网关来以您的特定网络设施进行工作。网络接口由发行版的不同而有各种名称。传统上,接口使用 “eth” 加上一个数字序列命名。为了覆盖到所有不同的名称,本指南简单地将数字最小的接口引用为第一个接口,第二个接口则为更大数字的接口。除非您打算使用该架构样例中提供的准确配置,否则您必须在本过程中修改网络以匹配您的环境。并且,每个节点除了 IP 地址之外,还必须能够解析其他节点的名称。例如,controller 这个名称必须解析为 10.0.0.11,即控制节点上的管理网络接口的 IP 地址。警告重新配置网络
19、接口会中断网络连接。我们建议使用本地终端会话来进行这个过程。注解你的发行版本默认启用了限制 firewall 。在安装过程中,有些步骤可能会失败,除非你允许或者禁用了防火墙。 控制节点服务器 计算节点 验证连通性控制节点服务器o 配置网络接口o 配置域名解析配置网络接口1. 将第一个接口配置为管理网络接口:IP 地址 : 10.0.0.11子网掩码: 255.255.255.0 (or /24)默认网关: 10.0.0.12. 提供者网络接口使用一个特殊的配置,不分配给它 IP 地址。配置第二块网卡作为提供者网络:将其中的 INTERFACE_NAME 替换为实际的接口名称。例如, eth1
20、或者*ens224*。o 编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件包含以下内容:不要改变 键HWADDR 和 UUID 。DEVICE=INTERFACE_NAMETYPE=EthernetONBOOT=“yes“BOOTPROTO=“none“3. 重启系统以激活修改。配置域名解析1. 设置节点主机名为 controller。2. 编辑 /etc/hosts 文件包含以下内容:# controller10.0.0.11 controller# compute110.0.0.31 compute1警告一些发行版本在/etc/
21、hosts文件中添加了附加条目解析实际主机名到另一个 IP 地址如 127.0.1.1。为了防止域名解析问题,你必须注释或者删除这些条目。不要删除 127.0.0.1 条目。注解为了减少本指南的复杂性,不管你选择怎么部署它们,我们为可选服务增加了主机条目。计算节点o 配置网络接口o 配置域名解析配置网络接口1. 将第一个接口配置为管理网络接口:IP 地址: 10.0.0.31子网掩码: 255.255.255.0 (or /24)默认网关: 10.0.0.1注解另外的计算节点应使用 10.0.0.32、10.0.0.33 等等。2. 提供者网络接口使用一个特殊的配置,不分配给它 IP 地址。配
22、置第二块网卡作为提供者网络:将其中的 INTERFACE_NAME 替换为实际的接口名称。例如, eth1 或者*ens224*。o 编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件包含以下内容:不要改变 键HWADDR 和 UUID 。DEVICE=INTERFACE_NAMETYPE=EthernetONBOOT=“yes“BOOTPROTO=“none“3. 重启系统以激活修改。配置域名解析1. 设置节点主机名为compute1 。2. 编辑 /etc/hosts 文件包含以下内容:# controller10.0.0.11
23、controller# compute110.0.0.31 compute1警告一些发行版本在/etc/hosts文件中添加了附加条目解析实际主机名到另一个 IP 地址如 127.0.1.1。为了防止域名解析问题,你必须注释或者删除这些条目。不要删除 127.0.0.1 条目。注解为了减少本指南的复杂性,不管你选择怎么部署它们,我们为可选服务增加了主机条目。验证连通性我们建议您在继续进行之前,验证到 Internet 和各个节点之间的连通性。1. 从*controller* 节点,测试能否连接到 Internet:# ping -c 4 openstack.orgPING openstack.
24、org (174.143.194.225) 56(84) bytes of data.64 bytes from 174.143.194.225: icmp_seq=1 ttl=54 time=18.3 ms64 bytes from 174.143.194.225: icmp_seq=2 ttl=54 time=17.5 ms64 bytes from 174.143.194.225: icmp_seq=3 ttl=54 time=17.5 ms64 bytes from 174.143.194.225: icmp_seq=4 ttl=54 time=17.4 ms- openstack.o
25、rg ping statistics -4 packets transmitted, 4 received, 0% packet loss, time 3022msrtt min/avg/max/mdev = 17.489/17.715/18.346/0.364 ms2. 从 controller 节点,测试到*compute* 节点管理网络是否连通:# ping -c 4 compute1PING compute1 (10.0.0.31) 56(84) bytes of data.64 bytes from compute1 (10.0.0.31): icmp_seq=1 ttl=64 ti
26、me=0.263 ms64 bytes from compute1 (10.0.0.31): icmp_seq=2 ttl=64 time=0.202 ms64 bytes from compute1 (10.0.0.31): icmp_seq=3 ttl=64 time=0.203 ms64 bytes from compute1 (10.0.0.31): icmp_seq=4 ttl=64 time=0.202 ms- compute1 ping statistics -4 packets transmitted, 4 received, 0% packet loss, time 3000
27、msrtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms3. 从 compute 节点,测试能否连接到 Internet:# ping -c 4 openstack.orgPING openstack.org (174.143.194.225) 56(84) bytes of data.64 bytes from 174.143.194.225: icmp_seq=1 ttl=54 time=18.3 ms64 bytes from 174.143.194.225: icmp_seq=2 ttl=54 time=17.5 ms64 bytes fr
28、om 174.143.194.225: icmp_seq=3 ttl=54 time=17.5 ms64 bytes from 174.143.194.225: icmp_seq=4 ttl=54 time=17.4 ms- openstack.org ping statistics -4 packets transmitted, 4 received, 0% packet loss, time 3022msrtt min/avg/max/mdev = 17.489/17.715/18.346/0.364 ms4. 从 compute 节点,测试到*controller* 节点管理网络是否连通
29、:# ping -c 4 controllerPING controller (10.0.0.11) 56(84) bytes of data.64 bytes from controller (10.0.0.11): icmp_seq=1 ttl=64 time=0.263 ms64 bytes from controller (10.0.0.11): icmp_seq=2 ttl=64 time=0.202 ms64 bytes from controller (10.0.0.11): icmp_seq=3 ttl=64 time=0.203 ms64 bytes from control
30、ler (10.0.0.11): icmp_seq=4 ttl=64 time=0.202 ms- controller ping statistics -4 packets transmitted, 4 received, 0% packet loss, time 3000msrtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms注解你的发行版本默认启用了限制 firewall 。在安装过程中,有些步骤可能会失败,除非你允许或者禁用了防火墙。网络时间协议(NTP)你应该安装 Chrony,一个在不同节点同步服务实现 NTP 的方案。我们建议你配置控制器节点引用更准确的(lower stratum)NTP 服务器,然后其他节点引用控制节点。 控制节点服务器 其它节点服务器 验证操作控制节点服务器在控制节点上执行这些步骤。1. 安装软件包:# yum install chrony2. 编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行添加,修改或者删除: