Openstack 多节点搭建 (O版本)

云计算 waitig 985℃ 百度已收录 0评论

这是自己在搭建openstack过程中所记录的文档,参考着官网的文档,配置的过程非常的繁琐,使用自动化部署openstack会非常的方便,但是初学者还是手动的搭建比较好,能够更好的理解每个组件之间的联系以及各自的作用,所以还是静下心来慢慢配置。其中重要的验证我已经上传了图片,方便对比,全部的图片截图以及配置过程在文章最后的文档中。

官网文档:http://download.csdn.net/download/leoe_/10122362


搭建过程

一.搭建环境
二.配置keystone组件
三.配置glance组件
四.配置nova组件
五.配置neutron组件
六.配置horizion组件
七.一个instance实例
八.配置swift


一. 搭建环境


1.1环境要求

系统版本Centos 7
控制节点:controller 4G内存 1核 双网卡及60GB存储
计算节点:computer 2G内存 1核 双网卡及20GB存储
网络节点:network 2G 内存 1核 双网卡及20GB存储

注:这里是最低内存,内存不足实例有可能无法启动


安装操作系统
CentOS 7双网卡(三台)
Minimal Install
[timezone] Asia/Shanghai


关闭防火墙和SELINUX

关闭 selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0

关闭 iptables
systemctl start firewalld.service
systemctl stop  firewalld.service
systemctl disable firewalld.service

配置网络

完装完CentOS7后第一件事是给controller,compute和network配置网络接口。
1.修改机器主机名:
controller13(控制节点),computer13(计算节点),network13(网络节点)

#hostnamectl set-hostname hostname

2.外网:
将controller,compute和network的第一块网卡变成网络接口即为外网。
外网(蓝色网卡):外部网络(External Network),对于公有云,External Network一般指的是 Internet。 对于企业私有云,External Network 则可以是 Intranet 中的某个网络。(此处,是提供商提供的,目前我们只是模拟外网,这里使用 ens33)此时,因为我们使用 vm 里面的虚拟机来搭建 openstack,所以,设置内网的 ip 和宿主机的 ip 在同一个网段上,而外网 ip 我们任意设置一个。说明:CentOS 7默认安装好之后是自动开启网络连接的,所 以不需要我们自己配置

3.内网
将controller,compute和network的第二块网卡作为provider网络即为内网。内网(红色网卡):用于 OpenStack 内部管理用,比如各服务之间通信。 这里使用 ens37。用命令打开第二个网卡:

#gedit   /etc/sysconfig/network-scripts/ifcfg-ens37

修改以下内容:

DEVICE=ens37 
TYPE=Ethernet 
ONBOOT="yes" 
BOOTPROTO="none" 

控制节点,计算节点和网络节点都是相同的:

说明:如果添加新网卡却找不到其相应文件,可用以下方法解决(此处以计算节点为例进行说明,其他节点也是一样的操作):
1、复制ens33到ens37

#cd /etc/sysconfig/network-scripts
#cp ifcfg-ens33 ifcfg-ens37

2、修改复制得到的ens37:

# gedit ifcfg-ens37

要修改的内容有:

 UUID     我没有查到UUID,可用直接删除
 NAME     改为当前的网卡名ens37
 DEVICE     改为当前的网卡名ens37

退出保存。

3、重启网卡,可以看到已经获取到了

    #systemctl restart network

出现配置文件就可以按照前面的步骤进行内网的配置。
4、重启网络

# systemctl restart network

重启系统使之生效。

5、编辑/etc/hosts 文件:

  #gedit /etc/hosts

验证:采用互ping和ping 百度的方式:


1.2网络时间协议(NTP)

您必须安装 NTP 来正确地在各个节点之间同步服务。我们推荐您配置控制节点来关联更准确的 (下层的) 服务器,然后将其他节点与控制节点关联。

控制节点:

1、 安装 NTP 服务

# yum install chrony

2、 配置 NTP 服务:修改配置文件 /etc/ chrony.conf

#gedit /etc/chrony.conf  
server NTP_SERVER iburst
allow 192.168.160.138

**将其中的 NTP_SERVER 替换为主机名或一个更准确的 (lower stratum) NTP 服务器的 IP地址。

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

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

计算节点:

1、安装 NTP 服务

# yum install chrony

2、配置 NTP 服务:修改配置文件 /etc/ chrony.conf改变它引用控制器点:

server controller13 iburst

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

systemctl enable chronyd.service
systemctl start chronyd.service

网络节点

1、安装 NTP 服务

# yum install chrony

2、配置 NTP 服务:修改配置文件 /etc/ chrony.conf改变它引用控制器节点:

server controller13 iburst

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

关闭所有节点的防火墙服务

# systemctl disable firewalld
# systemctl stop firewalld

验证操作:
运行以下命令到各个节点:# chronyc sources

注:这里所有的子节点会显示 controller


1.3 OpenStack包(所有节点)

发行版作为分发的一部分发布OpenStack包,或者由于不同而使用其他方法
发布时间表。在所有节点上执行以下这些过程。
1、启用OpenStack库:

# yum install centos-release-openstack-ocata

2、下载并安装RDO库转使OpenStack库。

# yum install https://rdoproject.org/repos/rdo-release.rpm

3、更新所有软件包:

# yum upgrade -y

4、安装openstack客户端:

# yum install python-openstackclient

5、安装OpenStack SELinux包自动地管理安全策略为OpenStack服务:

#yum install openstack-selinux

1.4 SQL数据库(运行于管理节点)

大多数OpenStack服务使用SQL数据库存储信息,指南中的步骤依据不同的发行版使用MariaDB或 MySQL。OpenStack 服务也支持其他 SQL 数据库。

1、安装和配置组件:

#  yum install mariadb mariadb-server python2-PyMySQL

2、 创建并编辑文件/etc/my.cnf.d/openstack.cnf

创建[mysqld]小节,设置 bind-address 配置项为管理节点的管理 IP 地址。添加其他有用的配置项,以及支持 UTF-8 字符集

[mysqld]
bind-address = 192.168.160.138
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

3、完成安装
A. 启动数据库服务并设置开机自动启动。

# systemctl enable mariadb.service
# systemctl start mariadb.service

B. 执行 mysql_secure_installation,设置数据库管理员 root 用户的密码。

# mysql_secure_installation

4、检查是否可以登陆数据库:

mysql -u root -p

1.5消息队列(运行于管理节点)

OpenStack 使用消息队列服务进行服务之间的协调和状态信息的同步。

1、安装软件包

# yum install rabbitmq-server –y

2、启动消息队列服务并设置开机自动启动。

# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service

3、添加 openstack 用户

# rabbitmqctl add_user openstack 123

4、为 openstack 用户赋予读和写访问权限。

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

1.6 Memcached 缓存令牌(运行于管理节点)

identity 服务身份认证机制使用 Memcached 缓存令牌。

1、安装软件包。

# yum install memcached python-memcached –y

2、编辑/etc/sysconfig/memcached 文件,为使其他节点可以访问。编辑现有配置项:OPTIONS="-l 127.0.0.1,::1"

OPTIONSOPTIONS="-l 127.0.0.1,::1,controller13"

3、 启动 Memcached 服务并设置开机自动启动。

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

二.安装和配置keystone(身份认证)组件


2.1在管理节点安装和配置身份服务

先决条件
在安装配置 OpenStack 身份服务前,你必须创建一个数据库和管理员令牌。
1、创建数据库,并完成下列操作

A. 使用数据库命令行客户端,以 root 身份登录数据库服务器

# mysql -u root –p123

B. 创建 keystone 数据库

MariaDB [(none)]> CREATE DATABASE keystone;

C. 授予数据库用户 keystone 访问 keystone 数据库的权限。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
替换 123为一个合适的密码。

(退出数据库)


2.2安装并配置组件

1、安装软件包

# yum install openstack-keystone httpd mod_wsgi –y

2、编辑/etc/keystone/keystone.conf 文件并完成下列操作:
A. 在[database]小节,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://keystone:123@controller13/keystone

替换 KEYSTONE_DBPASS 为合适的密码。

B. 在[token]小节,配置使用 Fernet 技术提供令牌。

[token]
# ...
provider = fernet

3、初始化身份服务数据库:

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

4、 初始化 Fernet key 仓库:

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

**验证数据库是否初始化成功:查看表是否存在

mysql -u root -p

use keystone;

show tables;

5、 引导身份服务,创建管理员。

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

替换 123 为合适的密码。


2.3配置 Apache HTTP 服务

1、编辑/etc/httpd/conf/httpd.conf 文件并配置 ServerName 配置项为管理节点的主机名:

ServerName controller13

2、创建到文件/usr/share/keystone/wsgi-keystone.conf 的链接:

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

2.4完成安装

1、 启动 Apache HTTP 服务并设置开机自动启动:

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

验证:netstat -lntup|grep httpd

这里写图片描述


2、配置管理账号

# export OS_USERNAME=admin
# export OS_PASSWORD=123
# export OS_PROJECT_NAME=admin
# export OS_USER_DOMAIN_NAME=Default
# export OS_PROJECT_DOMAIN_NAME=Default
# export OS_AUTH_URL=http://controller13:35357/v3
# export OS_IDENTITY_API_VERSION=3

2.5创建域,项目,用户和角色

身份服务为每一个 OpenStack 服务提供认证服务。认证服务使用一个 domain(域),projects(项目(tenants(租户))),users(用户)和roles(角色)的组合。

1、 在 openstack 环境中创建一个包含其他服务唯一账号的 service 项目,创建 service 项目:

# openstack project create --domain default --description "Service Project" service

2、日常(非管理员)任务一般使用一个非特权项目和用户。在本手册中,创建 demo 项目和用户:

A. 创建 demo 项目:

# openstack project create --domain default --description "Demo Project" demo

B. 创建 demo 用户:

# openstack user create --domain default --password-prompt demo

C. 创建 user 角色:

# openstack role create user

D. 添加 user 角色到 demo 项目和用户:

# openstack role add --project demo --user demo user

2.6验证操作

在安装其他服务前,验证身份服务是否正常。

1、由于安全的原因,关闭临时认证令牌机制。
编辑/etc/keystone/keystone-paste.ini 文件并移除[pipeline:public_api], [pipeline:admin_api], 和[pipeline:api_v3]小节的 admin_token_auth 项。

注:删除其中的admin_token_auth即可,该项也可能不存在

2、 删除临时环境变量 OS_AUTH_URL 和 OS_PASSWORD:

# unset OS_AUTH_URL OS_PASSWORD

3、 使用 admin 用户,请求认证令牌

# openstack --os-auth-url http://controller13:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

4、使用 demo 用户,请求认证令牌:

# openstack --os-auth-url http://controller13:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue

这里写图片描述


2.7创建 OpenStack 客户端环境脚本

为 admin 和 demo 项目和用户创建客户端环境脚本。本手册后续部分将使用这些脚本加载用户凭据。
1、编辑 admin-openrc 文件,并添加下列内容:

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller13:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换 ADMIN_PASS 为身份服务中 admin 用户的密码

2、 编辑 demo-openrc 文件,并添加下列内容:

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller13:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换 DEMO_PASS 为身份服务中 demo 用户的密码。

2.8使用脚本

1、加载 admin-openrc 文件用来填充身份服务中 admin 项目和用户的用户凭据到环境变量:

# . admin-openrc

2、请求认证令牌

# openstack token issue

这里写图片描述


三.安装和配置glance组件


本章介绍在 Controller node(管理节点)安装和配置镜像服务,代号(glance)。出于简单的目的,本次使用本地文件系统存储镜像。

3.1先决条件

1、创建数据库,完成下列步骤:

A. 使用数据库命令行客户端,以 root 身份登录数据库服务器。

# mysql -u root -p123

B. 创建 glance 数据库

MariaDB [(none)]> CREATE DATABASE glance;

C. 授予数据库用户 glance 访问 glance 数据库的权限。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123';

D. 退出数据库

2、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

3、创建服务凭据,完成下列操作:

A. 创建 glance 用户

# openstack user create --domain default --password-prompt glance

B. 添加 admin 角色到 glance 用户和 service 项目

# openstack role add --project service --user glance admin

C. 创建 glance 服务实体:

# openstack service create --name glance --description "OpenStack Image" image

4、 创建镜像服务 API 端点:

# openstack endpoint create --region RegionOne image public http://controller13:9292
# openstack endpoint create --region RegionOne image internal http://controller13:9292
# openstack endpoint create --region RegionOne image admin http://controller13:9292  

3.2安装和配置组件

1、安装软件包

# yum install openstack-glance –y

2、编辑/etc/glance/glance-api.conf 文件并完成下列操作:

A. 在[database]小节,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://glance:123@controller13/glance

B. 在[keystone_authtoken]和[paste_deploy]小节配置身份服务访问信息:

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123
[paste_deploy]
# ...
flavor = keystone
替换 GLANCE_DBPASS 为认证服务中 glance 用户的密码。

C. 在[glance_store]小节,配置使用本地系统存储和镜像文件存储路径:

[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

4、编辑/etc/glance/glance-registry.conf 文件并完成下列操作:

A. 在[database]小节,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://glance:123@controller13/glance

B. 在[keystone_authtoken]和[paste_deploy]小节,配置身份服务访问信息:

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123
[paste_deploy]
# ...
flavor = keystone

5、初始化镜像服务数据库

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

这里写图片描述

进入到数据库查砍表验证是否初始化成功:

mysql -u root -p
use glance;
show tables;

3.3完成安装

启动镜像服务并设置开机自动启动:

# systemctl enable openstack-glance-api.service openstack-glance-registry.service
# systemctl start openstack-glance-api.service openstack-glance-registry.service

3.4确认安装

使用 CirrOS 镜像确认镜像服务是否安装正常。CirrOS 是一个小型Linux 镜像,可以用来测试你的 OpenStack 环境。

1、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

2、下载镜像文件

# wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

查看CirrOS是否已经下载成功,存在于文件夹:

3、上传镜像文件到镜像服务,使用 QCOW2 磁盘格式,bare 容器格式,添加公共可见选项,是所有项目可以访问该镜像:

# openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public

4、 确认镜像已经上传并验证属性:

# openstack image list

这里写图片描述


四.安装和配置nova组件

使用 OpenStack 计算服务托管和管理云计算系统。OpenStack 计算服务是基础架构即服务(IaaS)系统的重要组成部分。


安装并配置控制节点

4.1.1先决条件

1、创建数据库,完成下列步骤:

A. 使用数据库命令行客户端,以 root 身份登录数据库服务器。

# mysql -u root -p123

B. 创建 nova_api,nova 和 nova_cell0 数据库:

MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;

C. 创建数据库用户 nova,并授予数据库用户 nova 访问 nova_api和 nova 数据库的权限。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@' localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@' localhost' IDENTIFIED BY '123';
MariaDB [(none)]>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@' localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123';
替换 NOVA_DBPASS 为一个合适的密码。

D. 退出数据库

2、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

3、创建服务凭据,并完成下列步骤:

A. 创建 nova 用户

# openstack user create --domain default --password-prompt nova

B. 添加 admin 角色到 nova 用户和 service 项目

# openstack role add --project service --user nova admin

C. 创建 nova 服务实体:

# openstack service create --name nova --description "OpenStack Compute" compute

4、创建计算服务的 API 端点:

# openstack endpoint create --region RegionOne compute public http://controller13:8774/v2.1
# openstack endpoint create --region RegionOne compute internal http://controller13:8774/v2.1
# openstack endpoint create --region RegionOne compute admin http://controller13:8774/v2.1

5、创建 Placement 服务用户

# openstack user create --domain default --password-prompt placement

6、将 placement 用户以 admin 角色加入到 service 项目

# openstack role add --project service --user placement admin

7、在身份服务的服务目录中,添加 placement 服务。

# openstack service create --name placement --description "Placement API" placement

8、创建 Placement API 服务端点

# openstack endpoint create --region RegionOne placement public http://controller13:8778
# openstack endpoint create --region RegionOne placement internal http://controller13:8778
# openstack endpoint create --region RegionOne placement admin http://controller13:8778

4.1.2安装配置组件

1、安装软件包

# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api openstack-nova-compute -y

2、 编辑/etc/nova/nova.conf 文件并完成下列操作:

A. 在[DEFAULT]小节,只启用 compute 和 metadata 的 API。

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

B. 在[api_database]和[database]小节,配置数据库访问:

[api_database]
# ...
connection = mysql+pymysql://nova:123@controller13/nova_api
[database]
# ...
connection = mysql+pymysql://nova:123@controller13/nova

C. 在[DEFAULT]小节配置 RabbitMQ 消息队列访问:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123@controller13

D. 在[api]和[keystone_authtoken]小节配置身份服务访问信息:

[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123

E. 在[DEFAULT]小节,配置 my_ip 配置项为管理节点的管理接口 IP地址。

[DEFAULT]
# ...
my_ip = 192.168.160.138

F. 在[DEFAULT]小节,启用支持 neutron 网络服务:

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

G. 在[vnc]小节,配置 vnc 代理,使用管理节点的管理接口 IP 地址:

[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

H. 在[glance]小节,配置镜像服务 API 的位置:

[glance]
# ...
api_servers = http://controller13:9292

I. 在[oslo_concurrency]小节,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

J. 在[placement]小节,配置 placement API 信息:

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller13:35357/v3
username = placement
password = 123

K. 由于软件包 bug,必须将下列配置添加到文件/etc/httpd/conf.d/00-nova-placement-api.conf 中,以启用对 Placement API的访问。

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>

L. 重启 httpd 服务:

# systemctl restart httpd

大家可以通过status命令来查看服务的状态:

systemctl status httpd

3、初始化 nova_api 数据库:

# su -s /bin/sh -c "nova-manage api_db sync" nova

4、注册 cell0 数据库

# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

5、 创建 cell1 cell

# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

6、 初始化 nova 数据库

# su -s /bin/sh -c "nova-manage db sync" nova

7、 验证 nova cell0 和 cell1 已经注册

# nova-manage cell_v2 list_cells

这里写图片描述

检查数据库里面是否有数据

mysql -u root -p

use nova;

show tables;

4.1.3完成安装

1、 探测你的计算节点是否支持硬件虚拟机化:

# egrep -c '(vmx|svm)' /proc/cpuinfo

如果结果大于或等于 1,则表示你的计算节点支持硬件虚拟化。如果等于 0,则表示不支持,那么你必须配置 libvirt,用 QEMU 代替KVM。
编辑/etc/nova/nova.conf 文件中的[libvirt]小节:

[libvirt]
# ...
virt_type = qemu

2、启动计算服务并设置开机自动运行:

# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service libvirtd.service openstack-nova-compute.service
# systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service libvirtd.service openstack-nova-compute.service 

安装并配置计算节点

4.2.1安装和配置组件

1、安装软件包:

# yum install openstack-nova-compute

2、 编辑/etc/nova/nova.conf文件并完成以下操作:

A. 在[DEFAULT]小节,只启用 compute 和 metadata 的 API。

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

B.在[DEFAULT]小节配置 RabbitMQ 消息队列访问:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123@controller13

C.在[api]和[keystone_authtoken]小节配置身份服务访问信息:

[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123

D. 在[DEFAULT]小节,配置 my_ip 配置项为管理节点的管理接口 IP地址。

[DEFAULT]
# ...
my_ip = 192.168.160.140(计算节点ip)

E. 在[DEFAULT]小节,启用支持 neutron 网络服务:

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

F. 在[vnc]小节,启用和配置远程控制台访问:

[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller13:6080/vnc_auto.html

G. 在[glance]小节,配置镜像服务 API 的位置:

[glance]
# ...
api_servers = http://controller13:9292

H.在[oslo_concurrency]小节,配置锁路径:

[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

I.在[placement]小节,配置 placement API 信息:

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller13:35357/v3
username = placement
password = 123

完成安装:

1、探测你的计算节点是否支持硬件虚拟机化:

# egrep -c '(vmx|svm)' /proc/cpuinfo

如果结果大于或等于 1,则表示你的计算节点支持硬件虚拟化。如果等于 0,则表示不支持,那么你必须配置 libvirt,用 QEMU 代替KVM。
编辑/etc/nova/nova.conf 文件中的[libvirt]小节:

[libvirt]
# ...
virt_type = qemu

2、启动计算服务并设置开机自动运行:

# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service

将计算节点添加到单元数据库(控制节点)

1、

#. admin-openrc
# openstack hypervisor list

这里写图片描述

2、发现计算主机:

# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

这里写图片描述

3、你添加新的计算节点,您必须运行管理cell_v2 discover_hosts,控制器节点上注册那些新的计算节点。或者,您可以设置适当的在/etc/nova/nova.conf进行修改:

[scheduler]
discover_hosts_in_cells_interval = 300

验证操作(控制节点)

1、 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

2、 通过列出服务组件,确认每一个进程已经成功启动和注册:

# openstack compute service list

这里写图片描述

3、列出在身份服务中的端点,以验证与身份服务的连接正常:

openstack catalog list

4、 列出镜像服务中的镜像,以验证与镜像服务连接正常:

openstack image list

5、检查 cells 和 Placement API 工作是否正常

nova-status upgrade check

五.安装和配置neutron组件

OpenStack 网络服务(neutron),管理所有网络方面的内容。包括虚拟网络基础架构(VNI)和接入层方面的物理网络基础架构(PNI)。


安装并配置在控制节点

5.1.1先决条件
在配置 Openstack Networking(neutron) service 之前,必须创建数据库,服务凭据和 API 端点。
1、 创建数据库,并完成下列步骤:

A. 使用数据库命令行客户端,以 root 身份登录数据库服务器。

# mysql -u root -p123

B. 创建 neutron 数据库

MariaDB [(none)]> CREATE DATABASE neutron;

C. 创建数据库用户 neutron,并授予数据库用户 neutron 访问

neutron 数据库的权限。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123';
替换 NEUTRON_DBPASS 为一个合适的密码。

D. 退出数据库

2、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

3、创建服务凭据,并完成下列步骤:

A. 创建 neutron 用户:

# openstack user create --domain default --password-prompt neutron

B. 添加 admin 角色到 neutron 用户和 service 项目

# openstack role add --project service --user neutron admin

C. 创建 neutron 服务实体:

# openstack service create --name neutron --description "OpenStack Networking" network

4、创建网络服务的 API 端点:

# openstack endpoint create --region RegionOne network public http://controller13:9696
# openstack endpoint create --region RegionOne network internal http://controller13:9696
# openstack endpoint create --region RegionOne network admin http://controller13:9696

5.1.2安装并配置服务组件

1、安装组件

# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables ipset -y

2、编辑/etc/neutron/neutron.conf 文件并完成下列操作:

A. 在[database]小节,配置数据库访问信息:

[database]
# ...
connection = mysql+pymysql://neutron:123@controller13/neutron

B. 在[DEFAULT]小节,启用二层模块(ML2)插件,路由服务和重叠地址功能:

[DEFAULT]
# ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true

C. 在[DEFAULT]小节,配置 RabbitMQ 消息队列访问信息:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123@controller13

D. 在[DEFAULT]和[keystone_authtoken]小节,配置身份服务访问

[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123

E. 在[DEFAULT]和[nova]小节,配置当网络拓扑发生改变时向计算服务发送网络通知。

[DEFAULT]
# ...
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[nova]
# ...
auth_url = http://controller13:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 123

F. 在[oslo_concurrency]小节,配置锁路径:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

配置二层(ML2)模块插件
ML2 插件使用 Linux bridge 机制为云主机建立二层虚拟网络基础。

1、 编辑/etc/neutron/plugins/ml2/ml2_conf.ini 文件并完成下列操作:

A. 在[ml2]小节,启用 flat,VLAN 和 VXLAN 网络:

[ml2]
# ...
type_drivers = flat,vlan,vxlan

B. 在[ml2]小节,启用 VXLAN 为用户自定义网络:

[ml2]
# ...
tenant_network_types = vxlan

C. 在[ml2]小节,启用 Linux bridge 和 layer-2 population 机制:

[ml2]
# ...
mechanism_drivers = linuxbridge,l2population

D. 在[ml2]小节,启用端口安全扩展驱动:

[ml2]
# ...
extension_drivers = port_security

E. 在[ml2_type_flat]小节,配置 provider 虚拟网络使用 flat 网络:

[ml2_type_flat]
# ...
flat_networks = provider

F. 在[ml2_type_vxlan]小节,配置自定义 VXLAN 网络的 id 范围:

[ml2_type_vxlan]
# ...
vni_ranges = 1:1000

G. 在[securitygroup]小节,启用 ipset 增强安全组的工作效率:

[securitygroup]
# ...
enable_ipset = true

配置 Linux bridge agent

Linux bridge agent 为云主机和处理安全组建立二层虚拟网络基础。

1、 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件并完成下列操作:

A. 在[linux_bridge]小节,映射 provider 虚拟网络到 provider 物理网络接口:

[linux_bridge]
physical_interface_mappings = provider: ens37

替换 PROVIDER_INTERFACE_NAME 为 provider 物理网络接口的名字。

B. 在[vxlan]小节,启用 VXLAN 覆盖网络,配置处理覆盖网络物理网络接口的 IP 地址。启用 layer-2 population:

[vxlan]
enable_vxlan = true
local_ip = 192.168.126.102
l2_population = true

C. 在[securitygroup]小节,启用安全组并配置 Linux bridge
iptables 防火墙驱动:

[securitygroup]
# ...
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true

配置三层代理

Layer-3 (L3) agent 为自定义虚拟网络提供路由和 NAT 服务。
1、 编辑/etc/neutron/l3_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动和外部网络网桥:

[DEFAULT]
# ...
interface_driver = linuxbridge

配置 DHCP 代理
DHCP 代理为虚拟网络提供 DHCP 服务。
1、编辑/etc/neutron/dhcp_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动,Dnsmasq DHCP 驱动并启用 isolated metadata,以便云主机可以通过 provider 网络访问元数据:

[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

配置元数据代理

metadata agent(元数据代理)提供配置信息,例如云主机的凭据。
1、 编辑/etc/neutron/metadata_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置元数据主机和共享秘钥:

[DEFAULT]
# ...
nova_metadata_ip = controller13
metadata_proxy_shared_secret = METADATA_SECRET

配置计算服务使用 neutron 网络
1、编辑/etc/nova/nova.conf 文件并完成下列操作:
在[neutron]小节,配置访问参数,启用元数据代理,并配置共享秘钥:

[neutron]
# ...
url = http://controller13:9696
auth_url = http://controller13:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123
service_metadata_proxy = true
metadata_proxy_shared_secret = 123

替换 NEUTRON_PASS 为身份服务中 neutron 用户的密码。替换 METADATA_SECRET 为/etc/neutron/metadata_agent.ini 文件中相同的密码。

完成安装

  1. 网络服务初始化脚本/etc/neutron/plugin.ini 实际上是一个链接文件,它指向 ML2 插件的配置文件/etc/neutron/plugins/ml2/ml2_conf.ini,如果该链接文件不存在,则需要使用下面的命令创建:
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  1. 初始化数据库
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

查看数据库是否初始化成功:

 mysql -u root -p
 use neutron;
 show tables;

3、 重启计算的 API 服务

# systemctl restart openstack-nova-api.service

# systemctl restart openstack-nova-compute.service  

4、 启动网络服务并配置开机自动运行:

# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service

安装和配置计算节点

计算节点处理实例的连接性和安全性组。
安装并配置服务组件

1、 安装组件

# yum install openstack-neutron-linuxbridge ebtables ipset

2、 编辑/etc/neutron/neutron.conf 文件并完成下列操作:
A.在[DEFAULT]小节,配置 RabbitMQ 消息队列访问信息:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123@controller13

B.在[DEFAULT]和[keystone_authtoken]小节,配置身份服务访问信息:

[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123

C. 在[oslo_concurrency]小节,配置锁路径:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

配置 Linux bridge agent
Linux bridge agent 为云主机和处理安全组建立二层虚拟网络基础。

1、 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件并完成下列操作:

A. 在[linux_bridge]小节,映射 provider 虚拟网络到 provider 物理网络接口:

[linux_bridge]
physical_interface_mappings = provider: ens37

B. 在[vxlan]小节,启用 VXLAN 覆盖网络,配置处理覆盖网络物理网络接口的 IP 地址。启用 layer-2 population:

[vxlan]
enable_vxlan = true
local_ip = 192.168.126.104
l2_population = true

C. 在[securitygroup]小节,启用安全组并配置 Linux bridge
iptables 防火墙驱动:

[securitygroup]
# ...
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

enable_security_group = true

配置计算服务使用 neutron 网络
1、 编辑/etc/nova/nova.conf 文件并完成下列操作:
在[neutron]小节,配置访问参数,启用元数据代理,并配置共享秘钥:

[neutron]
# ...
url = http://controller13:9696
auth_url = http://controller13:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123

完成安装

1.重新启动计算服务:

# systemctl restart openstack-nova-compute.service
  1. 启动Linux桥接代理,并在系统启动时将其配置为启动:
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service

安装和配置网络节点

网络节点主要为虚拟网络处理内部和外部路由及 DHCP 服务。
安装网络组件

# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch

配置网络的通用组件
网络通用组件的配置包括认证机制、消息代理和插件。
1、编辑/etc/neutron/neutron.conf 文件并完成下列操作:
A.在[DEFAULT]小节,配置 RabbitMQ 消息队列访问信息:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123@controller13 

B. 在 [DEFAULT] 和 [keystone_authtoken] 部分,配置身份认证服务的访问:

[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123

C.在 [DEFAULT] 部分,启用 Modular Layer 2 (ML2) 插件、router 服务和 overlappingIP 地址:

[DEFAULT]
# ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true

配置 Modular Layer 2 (ML2) 插件
ML2 插件使用 Linux bridge 机制为云主机建立二层虚拟网络基础。
1、编辑/etc/neutron/plugins/ml2/ml2_conf.ini 文件并完成下列操作:
A. 在[ml2]小节,启用 flat,VLAN 和 VXLAN 网络:

[ml2]
# ...
type_drivers = flat,vlan,vxlan

B. 在[ml2]小节,启用 VXLAN 为用户自定义网络:

[ml2]
# ...
tenant_network_types = vxlan

C. 在[ml2]小节,启用 Linux bridge 和 layer-2 population 机制:

[ml2]
# ...
mechanism_drivers = linuxbridge,l2population

D. 在[ml2]小节,启用端口安全扩展驱动:

[ml2]
# ...
extension_drivers = port_security

E. 在[ml2_type_flat]小节,配置 provider 虚拟网络使用 flat 网络:

[ml2_type_flat]
# ...
flat_networks = provider

F. 在[ml2_type_vxlan]小节,配置自定义 VXLAN 网络的 id 范围:

[ml2_type_vxlan]
# ...
vni_ranges = 1:1000

G. 在[securitygroup]小节,启用 ipset 增强安全组的工作效率:

[securitygroup]
# ...
enable_ipset = true

配置三层代理
Layer-3 (L3) agent 为自定义虚拟网络提供路由和 NAT 服务。
1、 编辑/etc/neutron/l3_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动和外部网络网桥:

[DEFAULT]
# ...
interface_driver = linuxbridge

配置 DHCP 代理
DHCP 代理为虚拟网络提供 DHCP 服务。
1、 编辑/etc/neutron/dhcp_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动,Dnsmasq DHCP 驱动并启用 isolated metadata,以便云主机可以通过 provider 网络访问元数据:

[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

配置元数据代理
metadata agent(元数据代理)提供配置信息,例如云主机的凭据。

1、 编辑/etc/neutron/metadata_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置元数据主机和共享秘钥:

[DEFAULT]
# ...
nova_metadata_host = controller13
metadata_proxy_shared_secret = METADATA_SECRET

完成安装

1、 Networking 服务初始化脚本需要一个象征性的链接将 /etc/neutron/plugin.ini 指向 ML2插件的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini。

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

2、 启动 Networking 服务并将其配置为随系统启动:

# systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service \
neutron-dhcp-agent.service neutron-metadata-agent.service \
neutron-ovs-cleanup.service
# systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service \
neutron-dhcp-agent.service neutron-metadata-agent.service

验证操作

在 controller node(管理节点)完成下列操作。

1、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

2、 列出加载的扩展模块,确认 neutron-server 服务进程成功启动:

# openstack extension list –network

3、 列出代理确认 neutron 代理成功启动:

# openstack network agent list

这里写图片描述


六.安装和配置horizion组件

Dashboard(horizon)是一个 web 界面,可以通过它以管理员或普通用户身份管理 OpenStack 资源和服务。


本章介绍在 controller node(控制节点)安装和配置 dashboard

安装和配置组件
1、安装软件包

# yum install openstack-dashboard -y

2、 编辑/etc/openstack-dashboard/local_settings 文件,并完成下列操作:
A. 配置 dashboard 使用管理节点的 Openstack 服务:

OPENSTACK_HOST = "controller13" 

B. 允许所有客户端访问 dashboard:

ALLOWED_HOSTS = ['*', ]

C. 配置 memcached 会话存储服务:

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller13:11211',
}
}

D. 启用身份服务 API 版本 3:

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

E. 启用支持多域:

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

F. 配置 API 版本:

OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}

G. 配置 default 为你在 dashboard 创建的用户的默认域:

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

H. 配置 user 为你在 dashboard 创建用户的默认角色:

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

I. 配置时区:

TIME_ZONE = "Asia/Shanghai"

完成安装
重启 web 服务和会话存储服务:

# systemctl restart httpd.service memcached.service

并且用status来查看一下相关服务是否正确开启。具体如下:

systemctl status httpd.service memcached.service

验证操作

使用 http://controller13/dashboard 访问 dashboard。

认证使用 admin 或 demo 用户。域为 default。

1、进行验证时会出现500错误,是由于存在bug,进行以下操作解决bug:

在/etc/httpd/conf.d/openstack-daskboard.conf 中加入WSGIApplicationGroup %{GLOBAL}

2、在进行登陆出现界面,说明horizion组件已经部署完成。


七.创建一个instance实例

在 controller node(管理节点)完成下列操作。

创建 provider 网络

1.、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

2、 创建网络:

# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider

3、 在 provider 网络上创建子网:

openstack subnet create --network provider --allocation-pool start=192.168.160.1,end=192.168.160.99 --dns-nameserver  8.8.4.4  --gateway 192.168.250.250 --subnet-range 192.168.160.0/24 provider 

创建自定义网络
1、在管理节点,执行 demo 凭据脚本,以便以 demo 身份执行后续命令:

# . demo-openrc

2、 创建网络

# openstack network create selfservice   

3、在自定义网络上创建子网

# openstack subnet create --network selfservice --dns-nameserver 8.8.4.4  --gateway 10.49.1.1 --subnet-range 10.49.1.0/24 selfservice

创建一个路由器
1、 执行 demo,admin 凭据脚本,以便以 admin,demo 身份执行后续命令:

#. admin-openrc
# . demo-openrc

2、创建路由器

# openstack router create router

3、 将自定义网络的子网连接到路由器的接口:

# neutron router-interface-add router selfservice

4、设置 provider 网络为路由器的网关:

# neutron router-gateway-set router provider

验证操作

在 controller node(管理节点)完成下列操作。
1、执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc

2、 列出网络名称空间。你应该看到一个qrouter命名空间和两qdhcp命名空间:

#ip netns

这里写图片描述

3、列出路由器上的端口,以确定提供者网络上的网关IP地址:

#neutron router-port-list router

4、从控制器节点或物理提供者网络上的任何主机ping此IP地址:

这里写图片描述


m1.nano flavor创建m1.nano规格的主机

默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的m1.nano规格的主机。若单纯为了测试的目的,请使用m1.nano规格的主机来加载CirrOS镜像。

1、openstack flavor create –id 0 –vcpus 1 –ram 64 –disk 1 m1.nano

这里写图片描述


生成密钥对

大多数云的图像比常规支持公钥认证“认证密码。
1、获取demo项目凭据:

#. demo-openrc

2、生成密钥对并添加公钥:

#ssh-keygen -q -N ""
 #openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

3.验证密钥对的添加:

# openstack keypair list

这里写图片描述


添加安全组规则

默认情况下,默认安全组适用于所有实例,并包含拒绝远程的防火墙访问实例。我们建议允许至少ICMP(ping)和安全shell(SSH)。
向默认安全组添加规则:

A.ICMP (ping):

#openstack security group rule create --proto icmp default

B.允许安全Shell(SSH)址:

#openstack security group rule create --proto tcp --dst-port 22 default

启动一个实例

如果选择了网络选项1,则只能在提供者网络上启动实例。如果你选择了网络选项2,您可以在提供者网络和自助网络上启动实例。

<一>在provider网络启动实例

1 . 提供demo凭据以获得对用户唯一CLI命令的访问权限:

# . demo-openrc

2.flavor指定虚拟资源分配配置文件,其中包括处理器、内存和存储。

列出可用的flavor:#openstack flavor list

3.列出可用图像:

#  openstack image list

4.列出可用网络:

#openstack network list

注意保存可用网络的ID,在启动实例时要使用。

5.列出可用的安全组:

#openstack security group list

这里写图片描述

6.启动实例:
与供应商的供应商网络的ID代替provider_net_id。

#openstack server create --flavor m1.nano --image cirros \
--nic net-id=7af371c3-d2ec-4bd4-bf8d-28e7bfbaf348 --security-group default \
--key-name mykey provider-instance
  1. 检查实例的状态:
# openstack server list

这里写图片描述


使用虚拟控制台访问实例
1. 取得虚拟网络计算(VNC)为您的会议和访问它的URL从Web的实例
浏览器:

#openstack console url show provider-instance   

2.验证对供应商物理网络网关的访问:

#ping -c 4 192.168.126.11

3.验证对互联网的访问:

#ping -c 4 www.baidu.com

远程访问实例
1. 从控制器节点或提供者物理网络上的任何主机验证连接到实例:

#ping -c 4 192.168.126.11
  1. 从控制器节点或提供者物理网络上的任何主机访问SSH实例:
#ssh cirros@192.168.126.11

<二>在自定义网络上启动一个实例

1.在控制器节点上,提供demo凭据以获得对用户仅CLI命令的访问权限:

#. demo-openrc

2 . flavor指定虚拟资源分配配置文件,其中包括处理器、内存和存储。
列出可用的flavor: #openstack flavor list

3 . 列出可用图像: # openstack image list

4.列出可用网络:#openstack network list

5 .列出可用的安全组:# openstack security group list

6 . 启动实例:

#openstack server create --flavor m1.nano --image cirros \
--nic net-id=549c1532-ce02-472f-936b-ec5627a97c96 --security-group default \
--key-name mykey selfservice-instance

7.检查实例的状态:

#openstack server list

使用虚拟控制台访问实例

1 .取得虚拟网络计算(VNC)为您的会议和访问它的URL从Web的实例
浏览器:

#openstack console url show selfservice-instance

2.验证对自定义网络网关的访问:

ping -c 4 10.49.1.1
  1. 验证对因特网的访问:
ping -c 4 www.baidu.com

远程访问实例
1.在提供者虚拟网络上创建一个浮动IP地址:

# openstack floating ip create provider
  1. 将浮点IP地址与实例相关联:
openstack server add floating ip selfservice-instance 192.168.160.4

3.检查您的浮动IP地址的状态:

#openstack server list
  1. 通过控制器节点或任何主机上的浮动IP地址验证对实例的连接
    提供者物理网络:
ping -c 4 192.168.160.4
  1. 从控制器节点或提供者物理网络上的任何主机访问SSH实例:
#ssh cirros@192.168.160.4

八. 安装和配置swift

《一》安装和配置控制器节点

<一>前提条件
代理服务依赖于身份验证和授权机制,如身份服务。但是,与其他服务不同的是,它还提供了一种内部机制,允许其在没有任何其他OpenStack服务的情况下运行。在配置对象存储服务之前,您必须创建服务凭证和API端点。
1.来源admin凭据来访问仅管理员CLI命令:

# . admin-openrc

2.要创建身份服务凭据,请完成以下步骤:
A.创建swift用户:

# openstack user create --domain default --password-prompt swift

B.将admin角色添加到swift用户:

openstack role add --project service --user swift admin

C.创建swift服务实体:

openstack service create --name swift \
  --description "OpenStack Object Storage" object-store

3.创建对象存储服务API端点:

#openstack endpoint create --region RegionOne \
  object-store public http://controller13:8080/v1/AUTH_%\(tenant_id\)s
#openstack endpoint create --region RegionOne \
  object-store internal http://controller13:8080/v1/AUTH_%\(tenant_id\)s
#openstack endpoint create --region RegionOne \
  object-store admin http://controller13:8080/v1

<二>安装和配置的部件

1、安装软件包:

#yum install openstack-swift-proxy python-swiftclient \
  python-keystoneclient python-keystonemiddleware \
  memcached

2、从Object Storage源存储库获取代理服务配置文件:

# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/pike 

3、 编辑/etc/swift/proxy-server.conf文件并完成以下操作:

A.在该[DEFAULT]部分中,配置绑定端口,用户和配置目录:

[DEFAULT]
...
bind_port = 8080
user = swift
swift_dir = /etc/swift

B.在[pipeline:main]部分中,删除tempurl和 tempauth模块并添加authtoken和keystoneauth 模块:

[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

C.在[app:proxy-server]部分中,启用自动帐户创建:

[app:proxy-server]
use = egg:swift#proxy
...
account_autocreate = True

D.在[filter:keystoneauth]部分中,配置操作员角色:

[filter:keystoneauth]
use = egg:swift#keystoneauth
...
operator_roles = admin,user

E.在[filter:authtoken]小节中,配置身份服务访问:

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
...
auth_uri = http://controller13:5000
auth_url = http://controller13:35357
memcached_servers = controller13:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = 123
delay_auth_decision = True

F.在[filter:cache]部分中,配置memcached位置:

[filter:cache]
use = egg:swift#memcache
...
memcache_servers = controller13:11211

安装和配置存储节点

(此处的存储节点为计算节点和网络节点,分别在两个节点都运行以下步骤,以下是以其中一个节点为例)


<一>先决条件

在安装和配置存储节点上的对象存储服务之前,必须准备存储设备(添加两块硬盘,大小为5G)

1、 安装支持实用程序包:# yum install xfsprogs rsync

2、 格式/dev/sdb和/dev/sdc设备XFS:

# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc

3、 创建挂载点目录结构:

# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc

4、 编辑/etc/fstab文件,添加以下:

/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

5、 安装设备:

# mount /srv/node/sdb
# mount /srv/node/sdc

6、 创建或编辑/etc/rsyncd.conf文件包含以下:

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address =192.168.93.133
[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock
[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock
[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock

7、开始rsyncd服务并将其配置为在系统启动时启动:

# systemctl enable rsyncd.service
# systemctl start rsyncd.service    

<二>安装和配置组件

1.安装软件包;

# yum install openstack-swift-account openstack-swift-container \
  openstack-swift-object

2.从对象存储源存储库获取accounting, container, and object服务配置文件:

# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/pike
# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/pike
# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/pike

3、 编辑/etc/swift/account-server.conf文件并完成以下操作:

A.在[DEFAULT]部分中,配置绑定IP地址、绑定端口、用户、配置目录和挂载点目录:

[DEFAULT]
...
bind_ip = 192.168.93.132
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

B. 在[pipeline:main]部分,启用适当的模块:

[pipeline:main]
pipeline = healthcheck recon account-server

C. 在[filter:recon]部分,配置 recon (meters)缓存目录:

[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift

4、 编辑/etc/swift/container-server.conf文件并完成以下操作:

A.在[DEFAULT]部分中,配置绑定IP地址、绑定端口、用户、配置目录和挂载点目录:

[DEFAULT]
...
bind_ip = 192.168.93.132
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

B. 在[pipeline:main]部分,启用适当的模块:

[pipeline:main]
pipeline = healthcheck recon container-server

C. 在[filter:recon]部分,配置 recon (meters)缓存目录:

[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift

5、编辑/etc/swift/object-server.conf文件并完成以下操作:

A.在[DEFAULT]部分中,配置绑定IP地址、绑定端口、用户、配置目录和挂载点目录:

[DEFAULT]
...
bind_ip = 192.168.93.132
bind_port = 6200
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

B. 在[pipeline:main]部分,启用适当的模块:

[pipeline:main]
pipeline = healthcheck recon object-server

C. 在[filter:recon]部分,配置 recon (meters)缓存目录:

[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock 

6、确保挂载点目录结构的正确所有权:

# chown -R swift:swift /srv/node

7、创建recon目录并确保它的正确所有权:

# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# ls

《三》创建并分发初始铃声

在启动对象存储服务之前,您必须创建初始帐户,容器和对象环。环形构建器创建每个节点用来确定和部署存储体系结构的配置文件。

<一>创建账户ring

帐户服务器使用帐户环来维护容器列表。

1.转到/etc/swift目录。

2.创建基本account.builder文件:

# swift-ring-builder account.builder create 10 3 1

3.将每个存储节点添加到环中:

#swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6202 --device sdb --weight 100
#swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6202 --device sdc --weight 100
#swift-ring-builder account.builder add \
 --region 1 --zone 1 --ip 192.168.93.134 --port 6202 --device sdb --weight 100
#swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 192.168.93.134 --port 6202 --device sdc --weight 100

4.验证 ring 的内容:

#swift-ring-builder account.builder

5.平衡 ring:

#swift-ring-builder account.builder rebalance

<二>创建容器ring

帐户服务器使用帐户 ring 来维护一个容器的列表。
1、切换到 /etc/swift目录。

2、创建基本container.builder文件:

#swift-ring-builder container.builder create 10 3 1

3、添加每个节点到 ring 中:

swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6201 --device sdb --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6201 --device sdc --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.93.134 --port 6201 --device sdb --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.93.134 --port 6201 --device sdc --weight 100

4、验证 ring 的内容:

#swift-ring-builder container.builder

5、平衡 ring:# swift-ring-builder container.builder rebalance

<三>创建对象ring

对象服务器使用对象环来维护对象在本地设备上的位置列表。
1、切换到 /etc/swift目录。

2、创建基本object.builder文件:

# swift-ring-builder object.builder create 10 3 1

3、添加每个节点到 ring 中:

#swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6200 --device sdb --weight 100 swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.93.133 --port 6200 --device sdc --weight 100
#swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.93.134 --port 6200 --device sdb --weight 100
swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.93.134 --port 6200 --device sdc --weight 100

4、验证 ring 的内容:

#swift-ring-builder object.builder

5、平衡 ring:

swift-ring-builder object.builder rebalance

分发环配置文件¶

复制account.ring.gz,container.ring.gzobject.ring.gz 文件到每个存储节点和其他运行了代理服务的额外节点的 /etc/swift 目录。


《四》完成安装

1、/etc/swift/swift.conf从Object Storage源存储库中获取文件:

# curl -o /etc/swift/swift.conf \
  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/pike

2、编辑/etc/swift/swift.conf文件并完成以下操作:

A.在该[swift-hash]部分中,为您的环境配置散列路径前缀和后缀。

[swift-hash]
...
swift_hash_path_suffix = hsystsy.cy
swift_hash_path_prefix = hsystsy.cy

B.在该[storage-policy:0]部分中,配置默认存储策略:

[storage-policy:0]
...
name = Policy-0
default = yes

3、将swift.conf文件复制到/etc/swift每个存储节点上的目录以及任何运行代理服务的其他节点。
4、在所有节点上,确保配置目录的正确所有权:

# chown -R root:swift /etc/swift

5.在控制器节点和运行代理服务的任何其他节点上,启动Object Storage代理服务(包括其依赖关系),并将其配置为在系统引导时启动:

# systemctl enable openstack-swift-proxy.service memcached.service
# systemctl start openstack-swift-proxy.service memcached.service
  1. 在存储节点上,启动对象存储服务,并配置它们在系统启动时启动:
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
  openstack-swift-account-reaper.service openstack-swift-account-replicator.service
# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \
  openstack-swift-account-reaper.service openstack-swift-account-replicator.service
# systemctl enable openstack-swift-container.service \
  openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
  openstack-swift-container-updater.service
# systemctl start openstack-swift-container.service \
  openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
  openstack-swift-container-updater.service
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \
  openstack-swift-object-replicator.service openstack-swift-object-updater.service
# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \
  openstack-swift-object-replicator.service openstack-swift-object-updater.service 

《五》验证操作

验证对象存储服务的操作。
如果您使用的是红帽企业版Linux 7或CentOS 7,并且其中一个或多个步骤不起作用,请检查/var/log/audit/audit.log SELinux消息文件,指出拒绝swift进程的操作。如果存在,则将/srv/node目录的安全上下文更改为swift_data_t类型,object_r 角色和system_u用户的最低安全级别(s0):

# chcon -R system_u:object_r:swift_data_t:s0 /srv/node

1、来源demo证书:

#. demo-openrc

2、显示服务状态:

swift stat

3、创建container1容器:

openstack container create container1

4、将测试文件上传到container1容器:

openstack object create container1 yue

5、在container1容器中列出文件:

openstack object list container1

6、从container1容器中下载一个测试文件:

openstack object save container1 yue    

篇幅有点长,如果大家发现有错误请及时留言。因为搭建中的截图非常多,这里上传麻烦,
所以有需要的请下载详细过程文档:http://download.csdn.net/download/leoe_/10131369


本文由【waitig】发表在等英博客
本文固定链接:Openstack 多节点搭建 (O版本)
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)