Contentshtml
这个部分解释如何按示例架构配置控制节点和一个计算节点node
尽管大多数环境中包含认证,镜像,计算,至少一个网络服务,还有仪表盘,可是对象存储服务也能够单独操做。仪表盘要求至少要有镜像服务,计算服务和网络服务。python
你必须用有管理员权限的账号来配置每一个节点。能够用 root 用户或 sudo 工具来执行这些命令。mysql
为得到最好的性能,咱们推荐在你的环境中符合或超过在 :ref:`figure-hwreqs`中的硬件要求。linux
如下最小需求支持概念验证环境,使用核心服务和几个:term:`CirrOS`实例:sql
因为Openstack服务数量以及虚拟机数量的正常,为了得到最好的性能,咱们推荐你的环境知足或者超过基本的硬件需求。若是在增长了更多的服务或者虚拟机后性能降低,请考虑为你的环境增长硬件资源。数据库
为了不混乱和为OpenStack提供更多资源,咱们推荐你最小化安装你的Linux发行版。同时,你必须在每一个节点安装你的发行版的64位版本。swift
每一个节点配置一个磁盘分区知足大多数的基本安装。可是,对于有额外服务如块存储服务的,你应该考虑采用 :term:`Logical Volume Manager (LVM)`进行安装。centos
对于第一次安装和测试目的,不少用户选择使用 :term:`virtual machine (VM)`做为主机。使用虚拟机的主要好处有一下几点:安全
可是,虚拟机会下降您实例的性能,特别是若是您的 hypervisor 和/或 进程缺乏硬件加速的嵌套虚拟机支持时。
OpenStack 服务支持各类各样的安全方式,包括密码 password、policy 和 encryption,支持的服务包括数据库服务器,且消息 broker 至少支持 password 的安全方式。
为了简化安装过程,本指南只包含了可适用的密码安全。你能够手动建立安全密码,使用`pwgen <http://sourceforge.net/projects/pwgen/>`__工具生成密码或者经过运行下面的命令:
$ openssl rand -hex 10
对 OpenStack 服务而言,本指南使用``SERVICE_PASS`` 表示服务账号密码,使用``SERVICE_DBPASS`` 表示数据库密码。
下面的表格给出了须要密码的服务列表以及它们在指南中关联关系:
密码 |
|
密码名称 |
描述 |
数据库密码(不能使用变量) |
数据库的root密码 |
ADMIN_PASS |
admin 用户密码 |
CEILOMETER_DBPASS |
Telemetry 服务的数据库密码 |
CEILOMETER_PASS |
Telemetry 服务的 ceilometer 用户密码 |
CINDER_DBPASS |
块设备存储服务的数据库密码 |
CINDER_PASS |
块设备存储服务的 cinder 密码 |
DASH_DBPASS |
Database password for the dashboard |
DEMO_PASS |
demo 用户的密码 |
GLANCE_DBPASS |
镜像服务的数据库密码 |
GLANCE_PASS |
镜像服务的 glance 用户密码 |
HEAT_DBPASS |
Orchestration服务的数据库密码 |
HEAT_DOMAIN_PASS |
Orchestration 域的密码 |
HEAT_PASS |
Orchestration 服务中``heat``用户的密码 |
KEYSTONE_DBPASS |
认证服务的数据库密码 |
NEUTRON_DBPASS |
网络服务的数据库密码 |
NEUTRON_PASS |
网络服务的 neutron 用户密码 |
NOVA_DBPASS |
计算服务的数据库密码 |
NOVA_PASS |
计算服务中``nova``用户的密码 |
RABBIT_PASS |
RabbitMQ的guest用户密码 |
SWIFT_PASS |
对象存储服务用户``swift``的密码 |
OpenStack和配套服务在安装和操做过程当中须要管理员权限。在不少状况下,服务能够与自动化部署工具如 Ansible, Chef,和 Puppet进行交互,对主机进行修改。例如,一些OpenStack服务添加root权限 sudo 能够与安全策略进行交互。更多信息,能够参考 `管理员参考<http://docs.openstack.org/ admin-guide/compute-root-wrap-reference.html>`__ 。
另外,网络服务设定内核网络参数的默认值而且修改防火墙规则。为了不你初始化安装的不少问题,咱们推荐在你的主机上使用支持的发行版本。无论怎样,若是你选择自动化部署你的主机,在进一步操做前检查它们的配置和策略。
在你按照你选择的架构,完成各个节点操做系统安装之后,你必须配置网络接口。咱们推荐你禁用自动网络管理工具并手动编辑你相应版本的配置文件。更多关于如何配置你版本网络信息内容,参考 documentation 。
出于管理目的,例如:安装包,安全更新, DNS`和 :term:`NTP,全部的节点都须要能够访问互联网。在大部分状况下,节点应该经过管理网络接口访问互联网。为了更好的突出网络隔离的重要性,示例架构中为管理网络使用`private address space <https://tools.ietf.org/html/rfc1918>`__ 并假定物理网络设备经过 :term:`NAT`或者其余方式提供互联网访问。示例架构使用可路由的IP地址隔离服务商(外部)网络而且假定物理网络设备直接提供互联网访问。
在提供者网络架构中,全部实例直接链接到提供者网络。在自服务(私有)网络架构,实例能够链接到自服务或提供者网络。自服务网络能够彻底在openstack环境中或者经过外部网络使用:term:NAT 提供某种级别的外部网络访问。
示例架构假设使用以下网络:
这个网络须要一个网关觉得全部节点提供内部的管理目的的访问,例如包的安装、安全更新、 DNS,和 NTP。
这个网络须要一个网关来提供在环境中内部实例的访问。
您能够修改这些范围和网关来以您的特定网络设施进行工做。
网络接口由发行版的不一样而有各类名称。传统上,接口使用 “eth” 加上一个数字序列命名。为了覆盖到全部不一样的名称,本指南简单地将数字最小的接口引用为第一个接口,第二个接口则为更大数字的接口。
除非您打算使用该架构样例中提供的准确配置,不然您必须在本过程当中修改网络以匹配您的环境。而且,每一个节点除了 IP 地址以外,还必须可以解析其余节点的名称。例如,controller这个名称必须解析为 10.0.0.11,即控制节点上的管理网络接口的 IP 地址。
警告
从新配置网络接口会中断网络链接。咱们建议使用本地终端会话来进行这个过程。
注解
你的发行版本默认启用了限制 firewall 。在安装过程当中,有些步骤可能会失败,除非你容许或者禁用了防火墙。更多关于安全的资料,参考 OpenStack Security Guide。(文档0已关闭防火墙和selinux)
配置网络接口¶
将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.11
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
提供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡做为提供者网络:
将其中的 INTERFACE_NAME替换为实际的接口名称。例如,eth1 或者*ens224*。
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
重启系统以激活修改。
配置域名解析¶
设置节点主机名为 base。
#hostnamectl set-hostname base
编辑 /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条目。
安装软件包:
# yum install chrony
启动 NTP 服务并将其配置为随系统启动:
# systemctl enable chronyd.service
# systemctl start chronyd.service
启用OpenStack库¶
#yum install centos-release-openstack-pike|queens|rocky
修改yum源
#cd /etc/yum.repos.d
#vi CentOS-OpenStack-XXX.repo(XXX替换为相应版本: pike|queens|rocky,下面以pike版为例进行修改或添加)
[centos-openstack-pike]
name=CentOS-7 - OpenStack pike ftpserver
#baseurl=http://mirror.centos.org/centos/7/cloud/$basearch/openstack-ocata/
baseurl=http://10.10.45.193/ centos/7/cloud/$basearch/openstack-pike/
…
#vi CentOS-Ceph-Jewel|hammer|luminous.repo(对应修改)
[centos-ceph-jewel]
name=CentOS-$releasever - Ceph Jewel ftpserver
#baseurl=http://mirror.centos.org/centos/$releasever/storage/$basearch/ceph-jewel/
baseurl=http://10.10.45.193/ centos/$releasever/storage/$basearch/ceph-jewel/
…
#vi CentOS-QEMU-EV.repo
…[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV ftpserver
#baseurl=http://mirror.centos.org/centos/$releasever/virt/$basearch/kvm-common/
baseurl=http://10.10.45.193/ centos/$releasever /virt/$basearch/kvm-common/
…
#yum clean all
验证:
#yum repolist
Determining fastest mirrors
repo id repo name status
base/x86_64 CentOS-7 - Base -ftpserver 9,591
centos-ceph-jewel/x86_64 CentOS-7 - Ceph Jewel ftpserver 53
centos-openstack-ocata/x86_64 CentOS-7 - OpenStack ocata ftpserver 1,559+2
centos-qemu-ev/x86_64 CentOS-7 - QEMU EV ftpserver 35
extras/x86_64 CentOS-7 - Extras - ftpserver 278
updates/x86_64 CentOS-7 - Updates -ftpserver 1,041
repolist: 12,557
完成安装¶
# yum upgrade
注解
若是更新了一个新内核,重启主机来使用新内核。
# yum install python-openstackclient
# yum install openstack-selinux
配置网络接口¶
修改网络配置:将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.11
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
配置主机名:¶
设置节点主机名为 controller。
#hostnamectl set-hostname controller
修改NTP服务器配置
server 10.10.45.193 iburst
为了容许其余节点能够链接到控制节点的 chrony 后台进程,在``/etc/chrony.conf`` 文件添加下面的键:
allow 10.0.0.0/24
重启系统以激活修改。
配置网络接口¶
修改网络配置:将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.31
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
配置主机名:¶
设置节点主机名为 compute1。
#hostnamectl set-hostname compute1
修改NTP服务配置:
编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:
server controller iburst
重启系统以激活修改。
配置网络接口¶
修改网络配置:将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.41
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
配置主机名:¶
设置节点主机名为 block1。
#hostnamectl set-hostname block1
修改NTP服务配置:
编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:
server controller iburst
配置网络接口¶
修改网络配置:将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.51
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
配置主机名:¶
设置节点主机名为 object1。
#hostnamectl set-hostname object1
修改NTP服务配置:
编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:
server controller iburst
重启系统以激活修改。
第二个节点¶
配置网络接口¶
修改网络配置:将第一个接口配置为管理网络接口:
IP 地址: 10.0.0.52
子网掩码: 255.255.255.0 (or /24)
默认网关: 10.0.0.254
配置主机名:¶
设置节点主机名为 object2。
#hostnamectl set-hostname object2
修改NTP服务配置:
编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:
server controller iburst
重启系统以激活修改。
# ping -c 4 compute1
PING compute1 (10.0.0.31) 56(84) bytes of data.
64 bytes from compute1 (10.0.0.31): icmp_seq=3 ttl=64 time=0.203 ms
64 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 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms
3.从 compute 节点,测试可否链接到 Internet:ping 10.10.45.193
4.从 compute 节点,测试到*controller* 节点管理网络是否连通:
# ping -c 4 controller
PING 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 ms
64 bytes from controller (10.0.0.11): icmp_seq=2 ttl=64 time=0.202 ms
64 bytes from controller (10.0.0.11): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from controller (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 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms
验证NTP服务器
# chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.10.45.193 2 6 177 46 +17us[ -23us] +/- 68ms
在 Name/IP address 列的内容应显示NTP服务器的主机名或者IP地址。在 S 列的内容应该在NTP服务目前同步的上游服务器前显示 *。
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 3 9 377 421 +15us[ -87us] +/- 15ms
在 Name/IP address 列的内容应显示控制节点的主机名。
安全并配置组件¶
# yum install mariadb mariadb-server python2-PyMySQL
[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
完成安装¶
# systemctl enable mariadb.service
# systemctl start mariadb.service
# mysql_secure_installation
安全并配置组件¶
# yum install rabbitmq-server
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
...done.
用合适的密码替换 RABBIT_DBPASS。
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
...done.
安装并配置组件¶
安装软件包:
# yum install memcached python-memcached
编辑/etc/sysconfig/memcached 文件,完成以下操做:
OPTIONS=”-l 127.0.0.0,::1,controller”
注:修改当前存在的这一行:
OPTIONS=”-l 127.0.0.0,::1”
完成安装¶
# systemctl start memcached.service
安装Etcd
安装并配置组件¶
安装软件包:
# yum install etcd
编辑 /etc/etcd/etcd.conf文件并设置 ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS,ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS 指向控制节点的管理ip地址,使得其余节点能够经过管理网络访问:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
完成安装
启动服务:
# systemctl enable etcd
# systemctl start etcd