Openstack Swift环境搭建与使用

Openstack Swift环境搭建与使用

OpenStack Swift 开源项目提供了弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。Swift可以使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。



前言

下面就是Openstack Swift的搭建和使用方法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Openstack Swift环境搭建

OpenStack Swift可部署于物理服务器或者虚拟机上,官方建议系统配置内存不小于2GB,硬盘不小于40GB,支持的操作系统包括Ubuntu 14.04,16.04 LTS,Fedora/CentOS,OpenSuse等。官方搭建教程可见https://docs.openstack.org/swift/latest/,搭建步骤较为复杂,由于搭建一套完整的OpenStack Swift篇幅太大,且搭建过程不是本书的重点,为了能够使读者快速了解OpenStack Swift部署和使用方法,本书介绍一种简单的搭建OpenStack Swift方法,只需要一台Linux虚拟机,我们选择的操作系统是Centos7.6,设置的内存至少为4G。按照以下步骤进行安装,注意所有命令均在root权限下执行。

  1. 更新yum源
$ yum update
  1. 关闭防火墙
$ setenforce 0
$ systemctl stop firewalld
$ systemctl disable firewalld
  1. 更新device-mapper
$ yum update device-mapper
  1. 安装rdo
$ yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
  1. 安装packstack
$ yum install -y openstack-packstack
  1. 安装openstack (这一步需要比较长的时间)
$ packstack --allinone

如下图所示,当出现installation completed successfull,则说明安装已经成功

Preparing Aodh entries                                   [ DONE ]
Preparing Puppet manifests                              [ DONE ]
Copying Puppet modules and manifests                  [ DONE ]
Applying ip_controller.pp
ip_controller.pp:                                         [ DONE ]
Applying ip_network.pp
ip_network.pp:                                             [ DONE ]
Applying ip_compute.pp
ip_compute.pp:                                             [ DONE ]
Applying Puppet manifests                                [ DONE ]
Finalizing                                                  [ DONE ]
 **** Installation completed successfully ******
  1. 查看默认admin账号的用户名和密码
$ cat /root/keystonerc_admin
OS_USERNAME字段为用户名
OS_PASSWORD字段为密码 
  1. 访问url
    输入http://ip地址/dashboard访问openstack网页服务,如下图所示:

图 1openstack登录界面
输入上一步查询的用户名和密码,即可登录,登录成功后,点击对象存储,即可进入openstack对象存储界面,如下图所示:
在这里插入图片描述
输入上一步查询的用户名和密码,即可登录,登录成功后,点击对象存储,即可进入openstack对象存储界面,如下图所示:
在这里插入图片描述
用户可以在这个页面上新建容器,在容器中上传和下载文件。
使用网页可以进行多用户创建,点击“身份管理”“用户”“创建用户”,在弹出的框中填写“用户名”、“密码”和“主项目”,点击创建用户,即可成功创建一个新用户。
在这里插入图片描述

二、Openstack Swift使用

下面介绍如何构建HTTP请求和OpenStack Swift通信,我们使用postman工具模拟发送的请求。Postman是Google开发的一款功能强大的网页调试和发送HTTP请求的工具,它可以发送任何类型的HTTP请求,比如GET,POST,PUT,HEAD,DELETE等,附带任何数量的参数和HTTP header,可支持不同类型的认证机制(basic,digest,OAuth),一款用于模拟http请求的软件,能够方便我们调试http请求,它既可以以Chrome浏览器插件的形式存在,也可以是独立的应用程序存在。可以访问Postman官网了解更多信息,官方网站:https://www.getpostman.com/,Postman安装方法不再介绍,本文默认用户已经安装好了此软件。
访问OpenStack Swift需要先向keystone主机获取访问权限,然后使用获取到的token访问swift的代理节点。

  1. 获取token
    使用POST方法,向http://ip:5000/v3/auth/tokens发送请求。Header的Content-Type字段类型为application/json。在requestBody中填写以下内容,其中name和password是需要根据实际情况填写的部分,发送的HTTP请求格式如下:
POST /v3/auth/tokens HTTP/1.1
Host: ip:5000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: f3450130-da1a-0fc0-0590-0d454b4346b3

{"auth": {"identity": {"methods": ["password"],"password": {"user": {"name": "xxxxxx","domain": {"name": "Default"},"password":" xxxxxx "}}}}}

出现如下内容,则表示访问成功。
在这里插入图片描述
responseBody的header中的X-Subject-Token字段就是服务器返回的token。
在这里插入图片描述
token的有效期在/etc/keystone/keystone.conf文件中的[token]下设置,单位为秒。如下图所示,现在的token有效期是一小时。

[token]

#expiration = 3600
expiration=3600
  1. 创建容器
    打开openstack,在菜单栏中选择“访问API”可以看到API的URL接口。从下图中可以看到object storage(对象存储)的访问url接口地址是http://ip:8080/ v1/AUTH_6485249dcb134ada8d99c5e5bf55c613
    在这里插入图片描述
    使用Postman工具构建创建容器的HTTP请求,如下图:
    在这里插入图片描述
    发送的网络请求格式如下:
PUT /v1/AUTH_6485249dcb134ada8d99c5e5bf55c613/testcontainer HTTP/1.1
Host: ip:8080
X-Auth-Token: gAAAAABdSnexV_h0-Ohq9rrZya2yind5FM3MFV5FRAV1oaVt_-cmukIhzoJ1f47Ydv1skwepzbSelaZvfre_M-csX6hgeKiX4R_YQu48g44bI8mg_apPRAe_-1jJ0qb1FA5tb_HOCD3OLY_kKepDf7ZJvV6_tWfwlauyOujZtP4mVu6oRG1gJUo
Content-Type: text/html; charset=UTF-8
Cache-Control: no-cache
Postman-Token: 2b50813c-cc16-74cd-5276-f05d7a14886e

Openstack Swift返回创建成功结果:

在这里插入图片描述
网页上可以看到容器已经创建成功:
在这里插入图片描述
3. 上传文件
使用Postman工具,使用下面url,用put方法向自己创建的user1账户的testcontainer容器中添加一个upload.jpg文件:http://ip:8080/v1/AUTH_6485249dcb134ada8d99c5e5bf55c613/testcontainer/test1.jpg,其中AUTH_6485249dcb134ada8d99c5e5bf55c613是账户account,testcontainer是容器名,upload.jpg是对象名(可以加子路径,例如uploadfolder/ upload.jpg),在body中选择类型为binary并添加文件,在header中添加X-Auth-Token字段,值为token。
在这里插入图片描述
在这里插入图片描述
成功后可以看到文件已成功上传。

在这里插入图片描述
4. 其他操作
下载文件发送GET请求,删除文件发送delete请求,同样都需要加上Token。更多操作api可以参考https://developer.openstack.org/api-ref/object-store/?expanded=

下面介绍跨域问题的解决方法
真实在发送http请求时会遇到跨域问题,需要在openstack中进行设置。具体步骤如下:

  1. 修改keystone,nova,cinder,glance,neutron服务下的conf文件
    注意 :除glance的conf文件是glance-api.conf外,其余都是名称.conf,例如keystone.conf。
    在cors下加上:
allowed_origin=* 
expose_headers=authorization,content-type,X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Requested-With
allow_headers=authorization,content-type,X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Project-Id,X-Project-Name,X-Project-Domain-Id,X-Project-Domain-Name,X-Domain-Id,X-Domain-Name,X-Requested-With
  1. 修改swift的conf
    修改/etc/swift/proxy-server.conf文件,在DEFAULT下添加:
cors_allow_origin=*
cors_expose_headers=authorization,content-type,X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Requested-With
  1. 重启所有修改文件的服务
systemctl restart httpd openstack-cinder-api.service openstack-nova-api.service openstack-glance-api.service neutron-server.service openstack-swift-proxy.service
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值