云计算实验之节点建立与配置

环境

  

Contentshtml

  •  

这个部分解释如何按示例架构配置控制节点和一个计算节点node

尽管大多数环境中包含认证,镜像,计算,至少一个网络服务,还有仪表盘,可是对象存储服务也能够单独操做。仪表盘要求至少要有镜像服务,计算服务和网络服务。python

你必须用有管理员权限的账号来配置每一个节点。能够用 root 用户或 sudo 工具来执行这些命令。mysql

为得到最好的性能,咱们推荐在你的环境中符合或超过在 :ref:`figure-hwreqs`中的硬件要求。linux

如下最小需求支持概念验证环境,使用核心服务和几个:term:`CirrOS`实例:sql

  • 控制节点: 1 处理器, 4 GB 内存, 及5 GB 存储
  • 计算节点: 1 处理器, 2 GB 内存, 及10 GB 存储

因为Openstack服务数量以及虚拟机数量的正常,为了得到最好的性能,咱们推荐你的环境知足或者超过基本的硬件需求。若是在增长了更多的服务或者虚拟机后性能降低,请考虑为你的环境增长硬件资源。数据库

为了不混乱和为OpenStack提供更多资源,咱们推荐你最小化安装你的Linux发行版。同时,你必须在每一个节点安装你的发行版的64位版本。swift

每一个节点配置一个磁盘分区知足大多数的基本安装。可是,对于有额外服务如块存储服务的,你应该考虑采用 :term:`Logical Volume Manager (LVM)`进行安装。centos

对于第一次安装和测试目的,不少用户选择使用 :term:`virtual machine (VM)`做为主机。使用虚拟机的主要好处有一下几点:安全

  • 一台物理服务器能够支持多个节点,每一个节点几乎可使用任意数目的网络接口。
  • 在安装过程当中按期进行“快照”而且在遇到问题时能够“回滚”到上一个可工做配置的能力。

可是,虚拟机会下降您实例的性能,特别是若是您的 hypervisor 和/或 进程缺乏硬件加速的嵌套虚拟机支持时。


安全

  

Contents

  •  

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>`__ 。

另外,网络服务设定内核网络参数的默认值而且修改防火墙规则。为了不你初始化安装的不少问题,咱们推荐在你的主机上使用支持的发行版本。无论怎样,若是你选择自动化部署你的主机,在进一步操做前检查它们的配置和策略。


主机网络

  

Contents

在你按照你选择的架构,完成各个节点操做系统安装之后,你必须配置网络接口。咱们推荐你禁用自动网络管理工具并手动编辑你相应版本的配置文件。更多关于如何配置你版本网络信息内容,参考 documentation 。

出于管理目的,例如:安装包,安全更新, DNS`和 :term:`NTP,全部的节点都须要能够访问互联网。在大部分状况下,节点应该经过管理网络接口访问互联网。为了更好的突出网络隔离的重要性,示例架构中为管理网络使用`private address space <https://tools.ietf.org/html/rfc1918>`__ 并假定物理网络设备经过 :term:`NAT`或者其余方式提供互联网访问。示例架构使用可路由的IP地址隔离服务商(外部)网络而且假定物理网络设备直接提供互联网访问。

在提供者网络架构中,全部实例直接链接到提供者网络。在自服务(私有)网络架构,实例能够链接到自服务或提供者网络。自服务网络能够彻底在openstack环境中或者经过外部网络使用:term:NAT 提供某种级别的外部网络访问。

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

  • 管理使用 10.0.0.0/24 带有网关 10.0.0.254

这个网络须要一个网关觉得全部节点提供内部的管理目的的访问,例如包的安装、安全更新、 DNS,和 NTP

  • 提供者网段 不用设置。

这个网络须要一个网关来提供在环境中内部实例的访问。

您能够修改这些范围和网关来以您的特定网络设施进行工做。

网络接口由发行版的不一样而有各类名称。传统上,接口使用 “eth” 加上一个数字序列命名。为了覆盖到全部不一样的名称,本指南简单地将数字最小的接口引用为第一个接口,第二个接口则为更大数字的接口。

除非您打算使用该架构样例中提供的准确配置,不然您必须在本过程当中修改网络以匹配您的环境。而且,每一个节点除了 IP 地址以外,还必须可以解析其余节点的名称。例如,controller这个名称必须解析为 10.0.0.11,即控制节点上的管理网络接口的 IP 地址。

 

警告

从新配置网络接口会中断网络链接。咱们建议使用本地终端会话来进行这个过程。

 

注解

你的发行版本默认启用了限制 firewall 。在安装过程当中,有些步骤可能会失败,除非你容许或者禁用了防火墙。更多关于安全的资料,参考 OpenStack Security Guide(文档0已关闭防火墙和selinux

 


1、模板服务器安装与配置

1.网络设置

  

配置网络接口

将第一个接口配置为管理网络接口:

IP 地址: 10.0.0.11

子网掩码: 255.255.255.0 (or /24)

默认网关: 10.0.0.254

提供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡做为提供者网络:

将其中的 INTERFACE_NAME替换为实际的接口名称。例如,eth1 或者*ens224*。

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

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条目。

 

 

2.网络时间协议(NTP)

  

安装软件包:

# yum install chrony

启动 NTP 服务并将其配置为随系统启动:

# systemctl enable chronyd.service

# systemctl start chronyd.service

3OpenStack包

  

启用OpenStack库

  • 在CentOS中, ``extras``仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用``extras``仓库,所以你能够直接安装用于启用OpenStack仓库的包。(现有pike,queens和rockey三个版本,选择其中一个进行安装)

#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

 

完成安装

  1. 在主机上升级包:

# yum upgrade

 

注解

若是更新了一个新内核,重启主机来使用新内核。

  1. 安装 OpenStack 客户端:

# yum install python-openstackclient

  1. 安装 openstack-selinux 软件包以便自动管理 OpenStack 服务的安全策略:

# yum install openstack-selinux

 

2、制做各节点服务器

克隆模板服务器,分别命名为controller,compute1,block1,object1,object2。

而后完成如下操做。

1.控制节点

配置网络接口

修改网络配置:将第一个接口配置为管理网络接口:

IP 地址: 10.0.0.11

子网掩码: 255.255.255.0 (or /24)

默认网关: 10.0.0.254

    • 编辑``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``文件包含如下内容:
    • IPADDR=10.0.0.11

配置主机名

设置节点主机名为 controller。

#hostnamectl set-hostname controller

 

修改NTP服务器配置

编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行修改:

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

    • 编辑``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``文件包含如下内容:
    • IPADDR=10.0.0.31

配置主机名

设置节点主机名为 compute1。

#hostnamectl set-hostname compute1

 

修改NTP服务配置

编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:

server controller iburst 

重启系统以激活修改。

块存储节点(可选)

  

Contents

配置网络接口

修改网络配置:将第一个接口配置为管理网络接口:

IP 地址: 10.0.0.41

子网掩码: 255.255.255.0 (or /24)

默认网关: 10.0.0.254

    • 编辑``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``文件包含如下内容:
    • IPADDR=10.0.0.41

配置主机名

设置节点主机名为 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

    • 编辑``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``文件包含如下内容:
    • IPADDR=10.0.0.51

配置主机名

设置节点主机名为 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

    • 编辑``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``文件包含如下内容:
    • IPADDR=10.0.0.52

配置主机名

设置节点主机名为 object2。

#hostnamectl set-hostname object2

 

修改NTP服务配置

编辑``/etc/chrony.conf`` 文件并注释除``server`` 值外的全部内容。修改它引用控制节点:

server controller iburst 

重启系统以激活修改。

验证连通性

  

Contents

  1. 从*controller*节点,测试可否链接到 Internet:ping 10.10.45.193
  2.  controller 节点,测试到*compute* 节点管理网络是否连通:ping compute1

# 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服务器

  1. 在控制节点上执行这个命令:

# 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服务目前同步的上游服务器前显示 *

  1. 在全部其余节点执行相同命令:

# 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 列的内容应显示控制节点的主机名。

 

、在controller节点完成如下操做

SQL数据库

  

安全并配置组件

  1. 安装软件包:

# yum install mariadb mariadb-server python2-PyMySQL

  1. 建立并编辑 /etc/my.cnf.d/openstack.cnf,而后完成以下动做:
    •  [mysqld] 部分,设置 ``bind-address``值为控制节点的管理网络IP地址以使得其它节点能够经过管理网络访问数据库:

[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

  1. 为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别须要说明的是,为数据库的root用户设置一个适当的密码。

# mysql_secure_installation

建议密码设置的易记

 

消息队列

  

安全并配置组件

  1. 安装包:

# yum install rabbitmq-server

  1. 启动消息队列服务并将其配置为随系统启动:

# systemctl enable rabbitmq-server.service

# systemctl start rabbitmq-server.service

  1. 添加 openstack 用户:

# rabbitmqctl add_user openstack RABBIT_PASS

Creating user "openstack" ...

...done.

用合适的密码替换 RABBIT_DBPASS

  1. 给``openstack``用户配置写和读权限:

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Setting permissions for user "openstack" in vhost "/" ...

...done.


Memcached

  

并配置组件

安装软件包:

# yum install memcached python-memcached

编辑/etc/sysconfig/memcached 文件,完成以下操做:

OPTIONS=”-l 127.0.0.0,::1,controller”

注:修改当前存在的这一行:

OPTIONS=”-l 127.0.0.0,::1”

完成安装

  • 启动Memcached服务,而且配置它随机启动。
  • # systemctl enable memcached.service

# 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