OpenStack Newton部署官方指南

作者:独笔孤行@TaoCloud
本文档主要基于OpenStack官方文档,对官方文档加以更加详细的说明和解读,更适合新手部署学习OpenStack。
官方文档中主要为英文,只有M版和L版有中文版,但存在部分翻译错误,不建议新手使用。在此提供官方文档链接:OpenStack Docs: Newton Installation Guides

若在虚拟机中部署OpenStack,网络要选择vxlan模式,vlan模式只能在物理机中使用。

1.基础环境
1.1 最低硬件配置:
• 控制节点: 1 处理器, 4 GB 内存, 5 GB 磁盘
• 计算节点: 1 处理器, 2 GB 内存, 10 GB 磁盘
• 存储节点: 1 处理器, 2 GB 内存, 10 GB 磁盘+10G数据盘

节点 主机名 网卡1(eth0) 网卡2(eth1)
控制节点 controller 10.0.0.10 192.168.20.10
计算节点 compute 10.0.0.11 192.168.20.11
存储节点 storage 10.0.0.12 192.168.20.12

eth0用途1:eth0为管理网络,是openstack环境里各个模块之间交互,连接数据库,连接Message Queue的网络,即openstack本身用的IP网段。

eth0用途2:eth0为隧道网络tunnel,openstack里使用vxlan模式,需要有隧道网络;隧道网络采用了点到点通信协议代替了交换连接,tunnel用于虚拟机走网络数据流量。

eth1用途 : eth1用于是链接外网,用户访问openstack虚拟机,必须有个网段是连外网的,用户通过这个网络能访问到虚拟机。

注解
标准的生产环境中,OpenStack需要管理网、外网、隧道网络共3个网段,本次主要遵循官方文档,将管理网络与隧道网络合并用eth0网卡。如果只是测试环境,可以将3个网络合并为一个网卡。

1.2 操作系统
CentOS-7-x86_64-Minimal-1511.iso
1.3 CPU虚拟化
本手册采用VMware WorkStation创建虚拟机搭建OpenStack Newton。按照如下内容打开CPU虚拟化功能。物理服务器需要进入BIOS,打开CPU虚拟化功能。打开完成后,在操作系统中执行:egrep -c '(vmx|svm)' /proc/cpuinfo 命令检测是否打开成功。返回值大于1说明完成。

1.4 网卡配置
本次测试采用每台服务器2个物理网卡,环境无法满足时同样可以只配置1个网卡,OpenStack所有网络都走同一网卡。CentOS7.2安装完成后,默认网卡名称是eno16777736,需要把eno16777736改成eth0.也可以不改使用默认名称。
更改网卡名称为eth0

[root@controller ~]# cd /etc/sysconfig/network-scripts/
[root@controller network-scripts]# mv ifcfg-eno16777736 ifcfg-eth0

编辑网卡配置文件,将NAME和DEVICE内容改为eth0.
编辑 /etc/default/grub。在GRUB_CMDLINE_LINUX中添加net.ifnames=0 biosdevname=0内容。

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root net.ifnames=0 biosdevname=0 rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

运行命令grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成GRUB配置并更新内核参数,完成后执行reboot命令重启服务器。按照同样的操作将其他网卡改成类似的形式。

详细介绍可参考链接:https://jingyan.baidu.com/article/17bd8e524c76a285ab2bb8ff.html

1.5 安全设置
关闭并禁用NetworkManager:

[root@controller ~]# systemctl stop NetworkManager
[root@controller ~]# systemctl disable NetworkManager

关闭并禁用防火墙:

[root@controller ~]# systemctl stop firewall
[root@controller ~]# systemctl disable firewall

1.6 域名解析
配置hosts域名解析,不改变原有内容,添加如下内容:

10.0.0.10   controller
10.0.0.11   compute
10.0.0.12   storage

1.7 yum源配置
OpenStack Newton的yum源有两种配置方式。即网络源和本地源。网络源需要OpenStack服务器能访问互联网。本地源需要把Newton.tar.gz压缩包拷贝到服务器制作本地源。
1.配置OpenStack-Newton网络源

cat /etc/yum.repos.d/OpenStack-Newton.repo
[OpenStack-Newtron]
name=OpenStack-Newtron
baseurl=http://vault.centos.org/7.2.1511/cloud/x86_64/openstack-newton/
gpgcheck=0
enabled=1

安装kvm源

rpm -ivh http://mirrors.163.com/centos/7.4.1708/virt/x86_64/kvm-common/centos-release-qemu-ev-1.0-1.el7.noarch.rpm

2.配置本地yum源
解压缩Newton.tar.gz压缩包到root目录下,并安装createrepo。

[root@compute ~]# cd Newton
[root@compute Newton]# yum localinstall  createrepo-0.9.9-28.el7.noarch.rpm\
python-deltarpm-3.6-3.el7.x86_64.rpm  deltarpm-3.6-3.el7.x86_64.rpm \
libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm  libxml2-2.9.1-6.el7_2.3.x86_64.rpm

创建Newton本地源。

[root@compute ~]# createrepo /root/Newton
Spawning worker 0 with 568 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

编辑yum源配置文件

[root@controller ~]# cat /etc/yum.repos.d/OpenStack-Newton.repo 
[OpenStack-Newton]
name=OpenStack-Newton
baseurl=file:///root/Newton
enabled=1
gpgcheck=0

选择以上任意一种方式配置好yum源后,生成yum源缓存。

[root@controller ~]# yum clean all;yum makecache

2.OpenStack环境
2.1概况

2.2密码安全
用户名称 密码名称 描述
root 数据库密码(不能使用变量) 数据库的root密码
admin ADMIN_PASS admin 用户密码
cinder CINDER_DBPASS 块设备存储服务的数据库密码
cinder CINDER_PASS 块设备存储服务的 cinder 密码
admin DASH_DBPASS Database password for the dashboard
demo DEMO_PASS demo 用户的密码
glance GLANCE_DBPASS 镜像服务的数据库密码
glance GLANCE_PASS 镜像服务的 glance 用户密码
keystone KEYSTONE_DBPASS 认证服务的数据库密码
neutron NEUTRON_DBPASS 网络服务的数据库密码
neutron NEUTRON_PASS 网络服务的 neutron 用户密码
nova NOVA_DBPASS 计算服务的数据库密码
nova NOVA_PASS 计算服务中nova用户的密码
openstack RABBIT_PASS RabbitMQ的guest用户密码
2.3 网络时间协议(NTP)
Controller控制节点
1.安装软件包

# yum install chrony –y

2.编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行添加,修改或者删除:

server controller iburst
  1. 为允许其他节点可以连接到控制节点的 chrony 后台进程,在/etc/chrony.conf 文件添加下面的键值:
    allow 10.0.0.0/24

    如有必要,将10.0.0.0/24替换成你子网的相应描述。

  2. 启动 NTP 服务并将其配置为随系统启动::
    # systemctl enable chronyd.service
    # systemctl start chronyd.service

    在控制节点上运行监测命令: chronyc sources。包含controller内容即可。

其他节点
1.安装软件包

# yum install chrony –y

2.编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行添加,且只保留controller节点的时间同步,删除其他时间同步:

server controller iburst

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

# systemctl enable chronyd.service
# systemctl start chronyd.service

验证操作
建议在继续进一步的操作之前验证 NTP 的同步。有些节点,特别是哪些引用了控制节点的,需要花费一些时间去同步。
1.在控制节点上执行这个命令:

[root@controller ~]# chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ 85.199.214.100                1   6   237    35  -8610us[-8610us] +/-  153ms
^- ntp1.ams1.nl.leaseweb.net     2   6   377    38    +40ms[  +40ms] +/-  343ms
^+ biisoni.miuku.net             2   6   377   102   +572us[-2150us] +/-  110ms
^* cn.ntp.faelix.net             2   6   377    40  +1358us[-1762us] +/-   87ms
^- controller                    3   6   377    33  -6501ns[-6501ns] +/-   87ms

在 Name/IP address 列的内容应显示NTP服务器的主机名或者IP地址。在 S 列的内容应该在NTP服务目前同步的上游服务器前显示 *。红色标记部分出现既可。
2.在所有其他节点执行相同命令:

[root@compute ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* controller                    3   6   377    27  +5882us[+6188us] +/-   90ms

在 Name/IP address 列的内容应显示控制节点的主机名。
2.4 OpenStack包
所有节点
1.安装 OpenStack 客户端:

# yum install python-openstackclient

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

# yum install openstack-selinux

2.5 SQL数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。以下内容只在控制节点上操作。
Controller控制节点
1.安装软件包:

# yum install mariadb mariadb-server python2-PyMySQL

2.创建并编辑 /etc/my.cnf.d/openstack.cnf 文件,完成如下操作:
创建 [mysqld] 部分,设置 bind-address 的值为controller控制节点的管理网ip地址。以使得其它节点可以通过管理网络访问数据库,设置其他键值来启用有用的选项和 UTF-8 字符集:

[mysqld]
bind-address = 10.0.0.10

default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

3.启动数据库服务并设置开机自启动:

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

    2.6 消息队列
    Controller控制节点
    OpenStack使用message queue协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括RabbitMQ, Qpid, and ZeroMQ. 不过,大多数发行版本的OpenStack包支持特定的消息队列服务。本指南安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。如果你想安装不同的消息队列服务,查询与之相关的文档。
    消息队列运行在 controller控制节点上。

  2. 安装软件包:
    # yum install rabbitmq-server -y
  3. 启动消息队列服务并设置开机自启动:
    # systemctl enable rabbitmq-server.service
    # systemctl start rabbitmq-server.service
  4. 添加 openstack 用户:(用户名openstack,密码RABBIT_PASS)
    # rabbitmqctl add_user openstack RABBIT_PASS
    Creating user "openstack" ...

    用合适的密码替换 RABBIT_PASS

  5. 为 openstack 用户配置写和读的权限:
    # rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    Setting permissions for user "openstack" in vhost "/" ...

    2.7 Memcached
    Controller控制节点
    认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在controller控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
    1.安装软件包:

    # yum install memcached python-memcached

    2.为了允许其他节点通过管理网络访问,编辑 /etc/sysconfig/memcached 文件,配置服务使用controller控制节点管理ip地址:

    10.0.0.10

    注解
    替换原有有内容"127.0.0.1"或" "

配置完成后查看/etc/sysconfig/memcached文件内容为:

[root@controller ~]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="10.0.0.10"

3.启动Memcached 服务并设置开机自启动:

# systemctl enable memcached.service
# systemctl start memcached.service

3.认证服务
本节描述如何在控制器节点上安装和配置OpenStack认证服务,即Keystone。考虑到可扩展性,此配置部署了Fernet令牌和Apache HTTP服务器来处理请求。
Controller控制节点
3.1安装和配置
在安装和配置OpenStack认证服务之前,一定要创建数据库和管理员令牌。
1.创建数据库,完成如下操作:
用数据库客户端以root用户连接到数据库服务器:

$ mysql -u root -p

创建 keystone 数据库:

mysql> CREATE DATABASE keystone;

对keystone数据库赋予合适的权限:

mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';

可用合适的密码替换 KEYSTONE_DBPASS。
退出数据库连接。

注解
默认配置文件因分布不同而不同。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置片段中的省略号(…),表示应该保留的原有的默认配置。

注解
本指南使用带有mod_wsgi的Apache HTTP服务器,响应端口5000和35357上的认证服务请求。默认情况下,keystone服务仍然侦听这些端口。因此,该指南手动禁用keystone服务。

2运行如下命令安装软件包:

# yum install openstack-keystone httpd mod_wsgi

3.编辑/etc/keystone/keystone.conf 文件完成如下操作:
在 [database]部分,配置数据库访问:

[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

可用keystone 认证服务数据库设置的密码替换KEYSTONE_DBPASS

注解
注释或者移除[database]部分的其他任何connection选项

在 [token] 部分,配置Fernet 令牌提供者:

[token]
...
provider = fernet

4.同步认证服务数据库:

# su -s /bin/sh -c "keystone-manage db_sync" keystone

5.初始化Fernet 存储库:

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

6.引导认证服务:

# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:35357/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

用合适的管理员用户密码替换 ADMIN_PASS。
7.配置Apache http服务,编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项 为控制节点:

ServerName controller

8.创建指向 /usr/share/keystone/wsgi-keystone.conf 文件的链接:

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

9.启动Apache HTTP服务并设置开机自启动:

# systemctl enable httpd.service
# systemctl start httpd.service

10.配置管理员账户

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3

可用在“安装和配置”部分使用keystone-manage bootstrap 命令设置的密码替换 ADMIN_PASS
3.2创建域、项目、用户和角色
身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 domains, projects, users, 和 roles的组合。
1.本指南使用一个服务项目,该服务项目为添加到环境中的每个服务包含唯一的用户。创建service项目

$ openstack project create --domain default \
 --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
+-------------+----------------------------------+

2.常规(非管理)任务应该使用非特权项目和用户。作为一个例子,这个指南创建demo项目和用户。
创建 demo 项目:

$ openstack project create --domain default \
  --description "Demo Project" demo
    +-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
+-------------+----------------------------------+

注解
在为该项目创建额外用户时,不要重复此步骤。

创建 demo 用户:

$ openstack user create --domain default \
  --password-prompt demo
    User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name          
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值