这是自己在搭建openstack过程中所记录的文档,参考着官网的文档,配置的过程非常的繁琐,使用自动化部署openstack会非常的方便,但是初学者还是手动的搭建比较好,能够更好的理解每个组件之间的联系以及各自的作用,所以还是静下心来慢慢配置。其中重要的验证我已经上传了图片,方便对比,全部的图片截图以及配置过程在文章最后的文档中。
官网文档:http://download.youkuaiyun.com/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 文件中相同的密码。
完成安装
- 网络服务初始化脚本/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
- 初始化数据库
# 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
- 启动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
- 检查实例的状态:
# 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
- 从控制器节点或提供者物理网络上的任何主机访问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
- 验证对因特网的访问:
ping -c 4 www.baidu.com
远程访问实例
1.在提供者虚拟网络上创建一个浮动IP地址:
# openstack floating ip create provider
- 将浮点IP地址与实例相关联:
openstack server add floating ip selfservice-instance 192.168.160.4
3.检查您的浮动IP地址的状态:
#openstack server list
- 通过控制器节点或任何主机上的浮动IP地址验证对实例的连接
提供者物理网络:
ping -c 4 192.168.160.4
- 从控制器节点或提供者物理网络上的任何主机访问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.gz和object.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
- 在存储节点上,启动对象存储服务,并配置它们在系统启动时启动:
# 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.youkuaiyun.com/download/leoe_/10131369
本文详细介绍OpenStack搭建过程,包括环境配置、Keystone、Glance、Nova等核心组件安装配置,以及Horizon界面部署和Swift对象存储配置。
565





