1.1.1. 环境配置
为了最大限度地减少混乱并为OpenStack提供更多资源,建议最少安装Linux发行版。此外,必须在每个节点上安装64位版本的发行版。
环境选项主要包括以下几个部分:
l 安全
l 主机网络
l 网络时间协议(NTP)
l OpenStack包
l SQL数据库
l 消息队列
l Memcached
1.1.1.1. 安全
OpenStack服务支持各种安全方法,包括密码,策略和加密。另外,包括数据库服务器和消息代理在内的支持服务支持密码安全性。
为了简化安装过程,本指南仅适用于密码安全性。建议使用pwgen等工具生成或运行以下命令:
$ openssl rand -hex 10
对于OpenStack服务,本指南SERVICE_PASS引用服务帐户密码,SERVICE_DBPASS引用数据库密码。
下表提供了指南中需要密码及其相关参考的服务列表。
密码名称 |
描述 |
数据库密码(未使用变量) |
数据库的根密码 |
ADMIN_PASS |
用户密码 admin |
CINDER_DBPASS |
Block Storage服务的数据库密码 |
CINDER_PASS |
块存储服务用户的密码 cinder |
DASH_DBPASS |
仪表板的数据库密码 |
DEMO_PASS |
用户密码 demo |
GLANCE_DBPASS |
图像服务的数据库密码 |
GLANCE_PASS |
图像服务用户的密码 glance |
KEYSTONE_DBPASS |
身份服务的数据库密码 |
METADATA_SECRET |
元数据代理的密码 |
NEUTRON_DBPASS |
网络服务的数据库密码 |
NEUTRON_PASS |
网络服务用户密码 neutron |
NOVA_DBPASS |
计算服务的数据库密码 |
NOVA_PASS |
计算服务用户的密码 nova |
PLACEMENT_PASS |
Placement服务用户的密码 placement |
RABBIT_PASS |
RabbitMQ用户的密码 openstack |
OpenStack和支持服务在安装和操作期间需要管理权限。在某些情况下,服务会对主机进行修改,从而干扰部署自动化工具(如 Ansible, Chef, Puppet)。例如,一些OpenStack服务添加一个根包装器sudo可能会干扰安全策略。
网络服务假定内核网络参数的默认值,并修改防火墙规则。为了避免在初始安装过程中出现的大多数问题,建议在主机上使用受支持发行版的仓库部署。但是,如果选择自动化部署主机,请在继续进行之前查看应用于其的配置和策略。
1.1.1.2. 主机网络
在选择部署的体系结构的每个节点上安装操作系统后,必须配置网络接口。建议禁用任何自动化网络管理工具,并手动编辑分发版本的相应配置文件。有关如何在发行版上配置网络的更多信息,请参阅文档。
所有节点需要Internet访问用于管理目的,如软件包安装,安全更新,DNS和 NTP。在大多数情况下,节点应通过管理网络接口获取Internet访问。为了突出显示网络分离的重要性
在提供商provider网络架构中,所有实例都直接附加到提供商网络。在自助self-service(私有)网络架构中,实例可以附加到自助服务或提供商网络。自助服务网络可以完全驻留在OpenStack中,或者通过提供商网络使用NAT提供一定程度的外部网络访问。
下面的示例架构为提供商(外部)网络使用可路由的IP地址空间,并假设物理网络基础架构提供直接的Internet访问。管理网络使用专用地址空间,并假设物理网络基础架构通过NAT 或其他方法提供Internet访问。
示例架构假设使用以下网络:
10.0.0.0/24管理,网关10.0.0.1
该网络需要网关为所有节点提供Internet访问,用于管理目的,如软件包安装,安全更新,DNS和 NTP。
提供商203.0.113.0/24,网关203.0.113.1
该网络需要一个网关来为OpenStack环境中的实例提供Internet访问。
可以修改这些范围和网关以使用特定网络基础设施。
网络接口名称因分布而异。传统上,接口使用eth后跟顺序号。为了涵盖所有变体,本指南将第一个接口作为具有最小数量的接口,第二个接口作为具有最高数量的接口。
除非打算使用此示例体系结构中提供的确切配置,否则必须修改此过程中的网络以匹配实际环境。除了IP地址外,每个节点都必须通过名称解析其他节点。例如,该controller名称必须解析为10.0.0.11控制器节点上的管理接口的IP地址。
警告:重新配置网络接口将中断网络连接。我们建议使用本地终端会话进行这些过程。
注意:默认情况下,RHEL,CentOS和SUSE发行版启用限制性防火墙。Ubuntu没有。
1.1.1.1.1. 控制器节点网络
一、配置网络接口
1、配置第一个接口为管理接口:
IP地址:10.0.0.11
网络掩码:255.255.255.0(或/24)
默认网关:10.0.0.1
2、提供者provider接口使用特殊配置,而不分配IP地址。将第二个接口配置为provider接口:
替换INTERFACE_NAME为实际的接口名称。例如, eth1或ens224。
编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:
不要改变HWADDR和UUID键。
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
3、重新启动系统以激活更改。
二、配置名称解析
设置节点的主机名controller。
编辑/etc/hosts文件以包含以下内容:
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object2
警告:一些发行版在/etc/hosts 文件中添加一个无关的条目,将实际的主机名解析为另一个回送IP地址,例如127.0.1.1。您必须注释掉或删除此条目以防止名称解析问题。 不要删除127.0.0.1条目。
1.1.1.1.2. 计算节点
一、配置网络接口
1、配置第一个接口为管理界面:
IP地址:10.0.0.31
网络掩码:255.255.255.0(或/ 24)
默认网关:10.0.0.1
注意:其他计算节点应使用10.0.0.32,10.0.0.33等。
2、提供者provider接口使用特殊配置,而不分配IP地址。将第二个接口配置为提供provider接口:
替换INTERFACE_NAME为实际的接口名称。例如, eth1或ens224。
编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:
不要改变HWADDR和UUID键。
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
3、重新启动系统以激活更改。
二、配置名称解析
1、设置节点的主机名compute1。
2、编辑/etc/hosts文件以包含以下内容:
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object2
警告:一些发行版在/etc/hosts 文件中添加一个无关的条目,将实际的主机名解析为另一个回送IP地址,例如127.0.1.1。您必须注释掉或删除此条目以防止名称解析问题。 不要删除127.0.0.1条目。
注意:本指南包括可选服务的主机条目,以便在选择部署它们时降低复杂性。
1.1.1.1.3. 块存储节点
如果要部署块存储服务,请配置一个额外的存储节点。
一、配置网络接口
配置管理界面:
IP地址: 10.0.0.41
网络掩码:(255.255.255.0或/24)
默认网关: 10.0.0.1
二、配置名称解析
1、设置节点的主机名block1。
2、编辑/etc/hosts文件以包含以下内容:
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object2
警告:一些发行版在/etc/hosts 文件中添加一个无关的条目,将实际的主机名解析为另一个回送IP地址,例如127.0.1.1。您必须注释掉或删除此条目以防止名称解析问题。 不要删除127.0.0.1条目。
1.1.1.1.4. 验证连接
在继续进行之前验证到Internet和节点之间的网络连接。
1、从控制器节点,测试访问Internet:
ping -c 4 openstack.org
2、从控制器节点,测试访问计算节点上的管理接口 :
ping -c 4 compute1
3、从计算节点,测试访问Internet:
ping -c 4 openstack.org
4、从计算节点,测试访问控制器节点上的管理界面 :
ping -c 4 controller
注意:默认情况下,RHEL,CentOS和SUSE发行版启用限制性防火墙。在安装过程中,某些步骤将失败,除非更改或禁用防火墙。
默认情况下,Ubuntu不启用限制性防火墙。
1.1.1.1. 网络时间协议(NTP)
为了在节点之间正确同步服务,可以安装Chrony,即NTP的实现。将控制器节点配置为引用更准确的时间服务器,其他节点引用控制器节点作为时间服务器。
1.1.1.1.1. 控制器节点
在控制器节点上执行这些步骤。
1、安装软件包:
# yum install chrony
2、/etc/chrony.conf根据环境的需要编辑文件并添加,更改或删除这些密钥:
server NTP_SERVER iburst
替换NTP_SERVER为适合更准确(较低层)NTP服务器的主机名或IP地址。该配置支持多个server键
注意
默认情况下,控制器节点通过公共服务器池同步时间。但是,您也可以选择配置其他服务器,如组织提供的服务器。
3、要使其他节点能够连接到控制器节点上的chrony守护程序,请将此密钥添加到/etc/chrony.conf 文件中:
allow 10.0.0.0/24
如有必要,请更换10.0.0.0/24您的子网的描述。
4、重新启动NTP服务:
# systemctl enable chronyd.service
# systemctl start chronyd.service
1.1.1.1.2. 其他节点
其他节点引用控制器节点进行时钟同步。在所有其他节点上执行这些步骤。
1、安装软件包
# yum install chrony
2、编辑/etc/chrony.conf文件并注释掉或除去一个server键以外的所有内容。更改它以引用控制器节点:
server controller iburst
3、注释掉 pool 2.debian.pool.ntp.org offline iburst 这一行。
4、重新启动NTP服务。
# systemctl enable chronyd.service
# systemctl start chronyd.service
1.1.1.1.3. 验证操作
在继续进行之前验证NTP同步。某些节点,特别是引用控制器节点的节点可能需要几分钟才能同步。
在控制器节点上运行此命令:
# chronyc sources
在所有其他节点上运行相同的命令:
#chronyc sources
“ 名称/IP地址”列中的内容应指示控制器节点的主机名。
1.1.1.2.
OpenStack安装包
由于发布时间表的不同,分发版将OpenStack包作为发布的一部分或使用其他方法。在所有节点上执行这些过程。
注意
这里描述的OpenStack包的设置需要在所有节点上完成:控制器,计算和块存储节点。
警告
主机必须包含可用于发行版的最新版本的基本安装包,然后再继续。
注意
禁用或删除任何自动更新服务,因为它们可能会影响OpenStack环境。
1.1.1.2.1. 用于CentOS的OpenStack软件包
一、启用OpenStack存储库
在CentOS上,extras存储库提供启用OpenStack存储库的RPM。extras默认情况下,CentOS包含存储库,因此可以直接安装该软件包以启用OpenStack存储库。
安装Pike版本时,请运行:
# yum install centos-release-openstack-pike
在RHEL上,下载并安装RDO存储库RPM以启用OpenStack存储库。
# yum install https://rdoproject.org/repos/rdo-release.rpm
RDO存储库RPM安装最新的可用OpenStack版本。
二、完成安装
升级所有节点上的软件包:
# yum upgrade
注意
如果升级过程包括新内核,请重新启动主机以激活它。
安装OpenStack客户端:
# yum install python-openstackclient
RHEL和CentOS 默认启用SELinux。安装 openstack-selinux软件包以自动管理OpenStack服务的安全策略:
# yum install openstack-selinux
1.1.1.3. SQL数据库
大多数OpenStack服务使用SQL数据库来存储信息。数据库通常在控制器节点上运行。本指南中的步骤使用MariaDB。OpenStack服务还支持其他SQL数据库,包括 PostgreSQL。
一、安装和配置组件
1、安装软件包:
# yum install mariadb mariadb-server python2-PyMySQL
2、创建并编辑/etc/my.cnf.d/openstack.cnf文件并完成以下操作:
创建一个[mysqld]部分,并将bind-address 密钥设置为控制器节点的管理IP地址,以便其他节点通过管理网络进行访问。设置其他键以启用有用的选项和UTF-8字符集:
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
二、完成安装
1、启动数据库服务并将其配置为在系统引导时启动:
# systemctl enable mariadb.service
# systemctl start mariadb.service
2、通过运行mysql_secure_installation 脚本来保护数据库服务。特别是为数据库root帐户选择合适的密码 :
# mysql_secure_installation
1.1.1.4. 消息队列
OpenStack使用消息队列来协调服务之间的操作和状态信息。消息队列服务通常在控制器节点上运行。OpenStack支持多种消息队列服务,包括RabbitMQ, Qpid和ZeroMQ。然而,大多数包OpenStack的发行版都支持特定的消息队列服务。本指南实现了RabbitMQ消息队列服务,因为大多数发行版都支持它。如果您希望实现不同的消息队列服务,请参阅与之相关的文档。
消息队列在控制器节点上运行。
1、安装包:
# yum install rabbitmq-server
2、启动消息队列服务并将其配置为在系统启动时启动:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
3、添加openstack用户:
# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
更换RABBIT_PASS一个合适的密码。
4、允许用户的配置,写入和读取访问 openstack:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
1.1.1.5. Memcached
身份服务身份验证机制使用Memcached缓存令牌。memcached服务通常在控制器节点上运行。对于生产部署,建议启用防火墙,身份验证和加密的组合来保护它。
1、安装软件包:
# yum install memcached python-memcached
2、编辑/etc/sysconfig/memcached文件并完成以下操作:
配置服务以使用控制器节点的管理IP地址。这是为了允许其他节点通过管理网络进行访问:
OPTIONS="-l 127.0.0.1,::1,controller"
注意
更改现有行。OPTIONS="-l 127.0.0.1,::1"
3、启动Memcached服务并将其配置为在系统启动时启动:
# systemctl 使 memcached.service
# systemctl启动memcached.service