内容简介:无需密码自动登录,系统用户名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)
分区存储
如下图所示,为官方给出的对象存储构建模块的示意图
由于在线环境中的还未配置相关的环境变量,请在操作前下载以下脚本并运行。进行配置
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
- 添加
admin
角色给swift
用户
$ openstack role add --project service --user swift admin
- 创建
swift
服务实体
$ openstack service create --name swift --description "OpenStack Object Storage" object-store
- 创建对象存储服务的 API 端点
$ openstack endpoint create --region RegionOne object-store public http://localhost:8080/v1/AUTH_%\(project_id\)s
$ openstack endpoint create --region RegionOne object-store internal http://localhost:8080/v1/AUTH_%\(project_id\)s
$ openstack endpoint create --region RegionOne object-store admin http://localhost:8080/v1
- 安装软件包
$ 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
- 编辑
/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
,并添加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
- 在
/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
- 创建成功后如图所示
- 将创建的三个文件格式化为 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
- 平衡
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
- 平衡
$ 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
- 平衡
$ 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
- 至此,实验环境已配置完成
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 块存储、文件存储、对象存储三者之比较
- 存储助力业务:58对象存储系统WOS研发实践
- 分布式存储ceph对象存储配置zone同步
- OpenStack 对象存储
- 对象存储已死
- 基于 Ceph 对象存储构建实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。