OpenStack 对象存储(一)

栏目: 服务器 · 发布时间: 6年前

内容简介:无需密码自动登录,系统用户名shiyanlou本课程基于 OpenStack ocata版本单节点环境的基础上,添加安装 swift 组件到环境中去,课程链接:如下图所示,为官方给出的对象存储构建模块的示意图

swift 安装配置

一、实验说明

1. 环境登录

无需密码自动登录,系统用户名shiyanlou

2. 环境介绍

本课程基于 OpenStack ocata版本单节点环境的基础上,添加安装 swift 组件到环境中去,课程链接: https://www.shiyanlou.com/courses/902

二、简单介绍

swift 的组件

  • 代理服务器(proxy-servers)

    处理所有传入的 API 请求

  • 环(rings)

    集群中的实体的名称到物理位置之间的映射。账户,容器和对象都有单独的环

  • 区域(zones)

    隔离各个区域之间的数据数据。一个区域的故障不会影响到集群中其余部分

  • 账户和容器(accounts and containers)

    • 账户数据库包含该账户的容器列表
    • 容器数据库包含该账户中的容器列表
  • 对象(objects)

    数据本身

  • 分区(partitions)

    分区存储

如下图所示,为官方给出的对象存储构建模块的示意图

OpenStack 对象存储(一)

由于在线环境中的还未配置相关的环境变量,请在操作前下载以下脚本并运行。进行配置

wget https://labfile.oss.aliyuncs.com/courses/943/admin-openrc

三、开始实验

3.1 安装配置控制器节点

  • 获得 admin 凭据
$ . ~/admin-openrc
  • 创建 swift 用户,交互式模式下输入 swift 密码,此处我们设置密码为 shiyanlou
$ openstack user create --domain default --password-prompt swift

OpenStack 对象存储(一)

  • 添加 admin 角色给 swift 用户
$ openstack role add --project service --user swift admin

OpenStack 对象存储(一)

  • 创建 swift 服务实体
$ openstack service create --name swift --description "OpenStack Object Storage" object-store

OpenStack 对象存储(一)

  • 创建对象存储服务的 API 端点
$ openstack endpoint create --region RegionOne object-store public http://localhost:8080/v1/AUTH_%\(project_id\)s

OpenStack 对象存储(一)

$ openstack endpoint create --region RegionOne object-store internal http://localhost:8080/v1/AUTH_%\(project_id\)s

OpenStack 对象存储(一)

$ openstack endpoint create --region RegionOne object-store admin http://localhost:8080/v1

OpenStack 对象存储(一)

  • 安装软件包
$ sudo apt-get install swift swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
  • 创建 /etc/swift 目录
$ sudo mkdir /etc/swift
  • 这里我们下载官方的配置文件进行修改
$ sudo curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample

OpenStack 对象存储(一)

  • 编辑 /etc/swift/proxy-server.conf 配置文件
$ sudo vim /etc/swift/proxy-server.conf
  • /etc/swift/proxy-server.conf 文件中的 [Deafult] 项中,配置如下
[DEFAULT]
...
bind_port = 8080
user = swift
swift_dir = /etc/swift
  • /etc/swift/proxy-server.conf 配置文件中的 [pipeline:main] 项中,移除 tempurl , tempauth ,并添加 authtokenkeystoneauth 选项
[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
  • /etc/swift/proxy-server.conf 配置文件中的 [app:proxy-server] 项中,启用 account_autocreate
[app:proxy-server]
use = egg:swift#proxy
...
account_autocreate = True
  • /etc/swift/proxy-server.conf 配置文件中的 [filter:keystoneauth] 项中,配置
[filter:keystoneauth]
use = egg:swift#keystoneauth
...
operator_roles = admin,user
  • /etc/swift/proxy-server.conf 配置文件中的 [filter:authtoken] 项中,配置
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
...
auth_uri = http://localhost:5000
auth_url = http://localhost:35357
memcached_servers = localhost:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = shiyanlou
delay_auth_decision = True
  • /etc/swift/proxy-server.conf 配置文件中的 [filter:cache] 项中,配置
[filter:cache]
use = egg:swift#memcache
...
memcache_servers = localhost:11211

3.2 存储节点

因为实验环境中搭建的是单节点环境,所以控制节点和存储节点都为同一节点,即当前实验环境,这里仅仅做一个区分。

  • 安装包
$ sudo apt-get install xfsprogs rsync
  • 实验环境中并不提供磁盘挂载,所以此处我们创建三个 1G 大小的文件作为三个不同的存储设备用以演示
$ sudo mkdir -p /srv/disk
$ sudo dd if=/dev/zero of=/srv/disk/swift_disk_1 bs=1M count=1024
$ sudo dd if=/dev/zero of=/srv/disk/swift_disk_2 bs=1M count=1024
$ sudo dd if=/dev/zero of=/srv/disk/swift_disk_3 bs=1M count=1024
  • 创建成功后如图所示

OpenStack 对象存储(一)

  • 将创建的三个文件格式化为 XFS 格式
$ sudo mkfs.xfs /srv/disk/swift_disk_1
$ sudo mkfs.xfs /srv/disk/swift_disk_2
$ sudo mkfs.xfs /srv/disk/swift_disk_3
  • 创建挂载点目录
$ sudo mkdir -p /srv/node/sda
$ sudo mkdir -p /srv/node/sdb
$ sudo mkdir -p /srv/node/sdc
  • 编辑 /etc/fstab 文件,添加下列内容,如图所示
/srv/disk/swift_disk_1 /srv/node/sda xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/srv/disk/swift_disk_2 /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/srv/disk/swift_disk_3 /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
  • 挂载服务
$ sudo mount /srv/node/sda
$ sudo mount /srv/node/sdb
$ sudo mount /srv/node/sdc
  • 创建并编辑文件 /etc/rsyncd.conf ,添加下列内容
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 127.0.0.1

[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
  • 编辑 /etc/default/rsync 文件,启用 rsync 服务,
RSYNC_ENABLE=true
  • 启动 rsync 服务
$ sudo service rsync start
  • 安装软件包
$ sudo apt-get install swift swift-account swift-container swift-object
  • 照例,我们获取 github 上给出的官方配置文件
$ sudo curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample
$ sudo curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample
$ sudo curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample
  • 下面,我们对这些配置文件进行修改,首先是 /etc/swift/account-server.conf

  • 修改 /etc/swift/account-server.conf 文件中的 [DEFAULT] 项如下

[DEFAULT]
...
bind_ip = 127.0.0.1
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
  • 修改 /etc/swift/account-server.conf 文件中的 [pipeline:main] 项如下
[pipeline:main]
pipeline = healthcheck recon account-server
  • 修改 /etc/swift/account-server.conf 文件中的 [filter:recon] 项如下
[filter:recon]
use = egg:swift#recon

recon_cache_path = /var/cache/swift
  • 下面编辑 /etc/swift/container-server.conf 配置文件

  • 修改 /etc/swift/container-server.conf 配置文件中的 [DEFAULT] 项如下

[DEFAULT]
...
bind_ip = 127.0.0.1
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
  • 修改 /etc/swift/container-server.conf 配置文件中的 [pipeline:main] 项如下
[pipeline:main]
pipeline = healthcheck recon container-server
  • 修改 /etc/swift/container-server.conf 配置文件中的 [filter:recon] 项如下
[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
  • 最后,编辑 /etc/swift/object-server.conf 文件

  • 修改 /etc/swift/object-server.conf 配置文件中的 [DEFAULT] 项如下

[DEFAULT]
...
bind_ip = 127.0.0.1
bind_port = 6200
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
  • 修改 /etc/swift/object-server.conf 配置文件中的 [pipeline:main] 项如下
[pipeline:main]
pipeline = healthcheck recon object-server
  • 修改 /etc/swift/object-server.conf 配置文件中的 [filter:recon] 项如下
[filter:recon]
use = egg:swift#recon

recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
  • 分别创建目录,并确定所有权
$ sudo chown -R swift:swift /srv/node

$ sudo mkdir -p /var/cache/swift

$ sudo chmod -R 775 /var/cache/swift

3.3 创建和分发初始环

  • 切换到 /etc/swift 目录
$ cd /etc/swift

3.3.1 账户

  • 构建
$ sudo swift-ring-builder account.builder create 10 3 1
  • 添加存储节点到环中
$ sudo swift-ring-builder account.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6202 --device sda --weight 100

$ sudo swift-ring-builder account.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6202 --device sdb --weight 100

$ sudo swift-ring-builder account.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6202 --device sdc --weight 100
  • 验证环中的内容
sudo swift-ring-builder account.builder

OpenStack 对象存储(一)

  • 平衡
sudo swift-ring-builder account.builder rebalance

3.3.2 容器

  • 构建
$ sudo swift-ring-builder container.builder create 10 3 1
  • 添加存储节点到环中
$ sudo swift-ring-builder container.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6201 --device sda --weight 100

$ sudo swift-ring-builder container.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6201 --device sdb --weight 100

$ sudo swift-ring-builder container.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6201 --device sdc --weight 100
  • 验证
$ sudo swift-ring-builder container.builder

OpenStack 对象存储(一)

  • 平衡
$ sudo swift-ring-builder container.builder rebalance

3.3.3 对象

  • 创建
$ sudo swift-ring-builder object.builder create 10 3 1
  • 添加存储节点到环中
$ sudo swift-ring-builder object.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6200 --device sda --weight 100

$ sudo swift-ring-builder object.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6200 --device sdb --weight 100

$ sudo swift-ring-builder object.builder add --region 1 --zone 1 --ip 127.0.0.1 --port 6200 --device sdc --weight 100
  • 验证
$ sudo swift-ring-builder object.builder

OpenStack 对象存储(一)

  • 平衡
$ sudo swift-ring-builder object.builder rebalance

3.4 完成安装

  • 获得 swift.conf 配置文件
$ sudo curl -o /etc/swift/swift.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample
  • 编辑 /etc/swift/swift.conf 配置文件
  • 修改 /etc/swift/swift.conf 配置文件中的 [swift-hash] 选项
[swift-hash]
...
swift_hash_path_suffix = syl
swift_hash_path_prefix = syl
  • 修改 /etc/swift/swift.conf 配置文件中的 [storage-policy:0] 选项
[storage-policy:0]
...
name = Policy-0
default = yes
  • 修改所有权
$ sudo chown -R root:swift /etc/swift
  • 重启服务
$ sudo service memcached restart
$ sudo service swift-proxy restart
  • 初始化启动swift
$ sudo swift-init all start
  • 至此,实验环境已配置完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hello World

Hello World

Hannah Fry / W. W. Norton Company / 2018-9 / GBP 17.99

A look inside the algorithms that are shaping our lives and the dilemmas they bring with them. If you were accused of a crime, who would you rather decide your sentence—a mathematically consistent ......一起来看看 《Hello World》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具