blob.png blob.png

 上面左边是我的个人微信,如需进一步沟通,请加微信。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。



1.1.1. 环境配置

为了最大限度地减少混乱并为OpenStack提供更多资源,建议最少安装Linux发行版。此外,必须在每个节点上安装64位版本的发行版。

环境选项主要包括以下几个部分:

安全

主机网络

网络时间协议(NTP)

OpenStack包

SQL数据库

消息队列

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访问用于管理目的,如软件包安装,安全更新,DNSNTP。在大多数情况下,节点应通过管理网络接口获取Internet访问。为了突出显示网络分离的重要性

 

在提供商provider网络架构中,所有实例都直接附加到提供商网络。在自助self-service(私有)网络架构中,实例可以附加到自助服务或提供商网络。自助服务网络可以完全驻留在OpenStack中,或者通过提供商网络使用NAT提供一定程度的外部网络访问。

下面的示例架构为提供商(外部)网络使用可路由的IP地址空间,并假设物理网络基础架构提供直接的Internet访问。管理网络使用专用地址空间,并假设物理网络基础架构通过NAT 或其他方法提供Internet访问。

Openstack 安装部署指南翻译系列 之 环境配置_第1张图片

示例架构假设使用以下网络:

10.0.0.0/24管理,网关10.0.0.1

该网络需要网关为所有节点提供Internet访问,用于管理目的,如软件包安装,安全更新,DNSNTP

 

提供商203.0.113.0/24,网关203.0.113.1

该网络需要一个网关来为OpenStack环境中的实例提供Internet访问。

可以修改这些范围和网关以使用特定网络基础设施。

网络接口名称因分布而异。传统上,接口使用eth后跟顺序号。为了涵盖所有变体,本指南将第一个接口作为具有最小数量的接口,第二个接口作为具有最高数量的接口。

 

除非打算使用此示例体系结构中提供的确切配置,否则必须修改此过程中的网络以匹配实际环境。除了IP地址外,每个节点都必须通过名称解析其他节点。例如,该controller名称必须解析为10.0.0.11控制器节点上的管理接口的IP地址。

 

警告重新配置网络接口将中断网络连接。我们建议使用本地终端会话进行这些过程。

 

注意默认情况下,RHELCentOSSUSE发行版启用限制性防火墙。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为实际的接口名称。例如, eth1ens224

 

编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:

不要改变HWADDRUUID键。

 

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为实际的接口名称。例如, eth1ens224

 

编辑/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME文件以包含以下内容:

不要改变HWADDRUUID键。

 

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

 

注意默认情况下,RHELCentOSSUSE发行版启用限制性防火墙。在安装过程中,某些步骤将失败,除非更改或禁用防火墙。

默认情况下,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. 用于CentOSOpenStack软件包

一、启用OpenStack存储库

CentOS上,extras存储库提供启用OpenStack存储库的RPMextras默认情况下,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

RHELCentOS 默认启用SELinux。安装 openstack-selinux软件包以自动管理OpenStack服务的安全策略:

# yum install openstack-selinux

1.1.1.3. SQL数据库

大多数OpenStack服务使用SQL数据库来存储信息。数据库通常在控制器节点上运行。本指南中的步骤使用MariaDBOpenStack服务还支持其他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支持多种消息队列服务,包括RabbitMQQpidZeroMQ。然而,大多数包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