Openstack 多节点搭建 (O版本)
2017-11-24 14:36
375 查看
这是自己在搭建openstack过程中所记录的文档,参考着官网的文档,配置的过程非常的繁琐,使用自动化部署openstack会非常的方便,但是初学者还是手动的搭建比较好,能够更好的理解每个组件之间的联系以及各自的作用,所以还是静下心来慢慢配置。其中重要的验证我已经上传了图片,方便对比,全部的图片截图以及配置过程在文章最后的文档中。
官网文档:http://download.csdn.net/download/leoe_/10122362
二.配置keystone组件
三.配置glance组件
四.配置nova组件
五.配置neutron组件
六.配置horizion组件
七.一个instance实例
八.配置swift
控制节点:controller 4G内存 1核 双网卡及60GB存储
计算节点:computer 2G内存 1核 双网卡及20GB存储
网络节点:network 2G 内存 1核 双网卡及20GB存储
注:这里是最低内存,内存不足实例有可能无法启动
安装操作系统
CentOS 7双网卡(三台)
Minimal Install
[timezone] Asia/Shanghai
关闭防火墙和SELINUX
配置网络
完装完CentOS7后第一件事是给controller,compute和network配置网络接口。
1.修改机器主机名:
controller13(控制节点),computer13(计算节点),network13(网络节点)
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。用命令打开第二个网卡:
修改以下内容:
控制节点,计算节点和网络节点都是相同的:
说明:如果添加新网卡却找不到其相应文件,可用以下方法解决(此处以计算节点为例进行说明,其他节点也是一样的操作):
1、复制ens33到ens37
2、修改复制得到的ens37:
要修改的内容有:
退出保存。
3、重启网卡,可以看到已经获取到了
出现配置文件就可以按照前面的步骤进行内网的配置。
4、重启网络
重启系统使之生效。
5、编辑/etc/hosts 文件:
验证:采用互ping和ping 百度的方式:
2、 配置 NTP 服务:修改配置文件 /etc/ chrony.conf
**将其中的 NTP_SERVER 替换为主机名或一个更准确的 (lower stratum) NTP 服务器的 IP地址。
3、启动 NTP 服务将将其配置为随系统启动:
2、配置 NTP 服务:修改配置文件 /etc/ chrony.conf改变它引用控制器点:
3、启动 NTP 服务将将其配置为随系统启动:
2、配置 NTP 服务:修改配置文件 /etc/ chrony.conf改变它引用控制器节点:
3、启动 NTP 服务将将其配置为随系统启动:
关闭所有节点的防火墙服务
验证操作:
运行以下命令到各个节点:
注:这里所有的子节点会显示 controller
发布时间表。在所有节点上执行以下这些过程。
1、启用OpenStack库:
2、下载并安装RDO库转使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[/code]
3、更新所有软件包:# yum upgrade -y
4、安装openstack客户端:# yum install python-openstackclient
5、安装OpenStack SELinux包自动地管理安全策略为OpenStack服务:#yum install openstack-selinux1.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 -p1.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=32.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 user2.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 issue2.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:92923.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.service3.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[/code]
查看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[/code]
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[/code]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[/code]
G. 在[glance]小节,配置镜像服务 API 的位置:[glance] # ... api_servers = http://controller13:9292[/code]
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[/code]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[/code]
<二>安装和配置的部件
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[/code]
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[/code]
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.csdn.net/download/leoe_/10131369
相关文章推荐
- 三节点搭建openstack-Mitaka版本
- 虚拟机下32位CentOs版本的linux下hadoop2.4.1集群搭建(3个节点版本)
- OpenStack keystone节点搭建(官方2018年4月份文档)
- [置顶] hive 单节点环境搭建指南 1.2.1版本
- 私有云落地解决方案之openstack高可用(pike版本)-添加计算节点
- OpenStack Newton版本部署---- 网络服务(neutron)(控制节点)
- OpenStack环境搭建(1)--控制节点
- 利用kolla快速搭建openstack-pike多节点
- 如何搭建搭建各个版本的openstack的本地yum源?
- [部署篇3]VMWare搭建Openstack——控制节点的glance的安装
- OpenStack环境搭建(3) --网络节点
- openstack controller ha测试环境搭建记录(十一)——配置neutron(网络节点)
- openstack controller ha测试环境搭建记录(十三)——配置cinder(控制节点)
- Ubuntu搭建Openstack平台(kilo)(五.neutron(二)网络节点与计算节点)
- openstack mitaka之六:搭建网络节点
- openstack搭建--6--控制节点和计算节点安装配置neutron
- Hadoop2.2.0版本多节点集群及eclipse开发环境搭建
- Ubuntu 12.04 单节点 搭建 Openstack Havana