立即注册
登录
About云-梭伦科技
返回首页
pig2的个人空间
https://www.aboutyun.com/?61
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
首页
Portal
专题
BBS
面试
办公|编程助手
更多
我的空间
好友
帖子
收藏
道具
勋章
任务
动态
日志
相册
分享
记录
留言板
群组
导读
日志
openstack【juno】入门 【swift篇】二十四:创建初始rings
已有 4770 次阅读
2015-2-26 18:06
http://www.aboutyun.com/thread-11701-1-1.html
问题导读
1.如何形成环?
2.从本文遇到的错误,配置文件应该注意什么问题?
3.swift-init all start的作用是什么?
在开始使用对象存储服务之前,你必须创建初始账户,容器,和 对象 rings。环生成器所创建的配置文件,每个节点使用确定和部署的存储架构。
为了简单起见,这个向导使用一个地区的区2 ^10(1024)最大分区,每个对象3个副本,和至少一小时时间移动分区不止一次。对象存储一个分区代表一个存储设备上的目录,而不是一个传统分区表,更多内容,查看
部署向导
账户
环
账户服务器使用账户环,保存容器列表
创建环
注意:
执行下面命令在
控制节点
1.进入 /etc/swift目录
cd /etc/swift
2.创建 account.builder
swift-ring-builder account.builder create 10 3 1
3.添加每一个存储节点到环
swift-ring-builder account.builder \
add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6002/DEVICE_NAME DEVICE_WEIGHT
替换存储节点管理网络ip地址
STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS
,替换存储节点设备名称DEVICE_NAME ,例如在存储节点使用的 /dev/sdb1存储设备,替换为下面内容
swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdb1 100
swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdc1 100
swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdb1 100
swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdc1 100
在每个存储节点使用上面命令
4.核实ring内容
swift-ring-builder account.builder
5.负载均衡ring
swift-ring-builder account.builder rebalance
这个过程可能需要时间
容器环
容器服务器使用容器环保存对象服务列表。尽管如此,它不跟踪对象的存储位置。
创建环
在
控制节点
,完成下面内容
1.进入 /etc/swift 目录
cd /etc/swift
2.创建 container.builder文件
swift-ring-builder container.builder create 10 3 1
3.添加存储节点到环
格式如下:
swift-ring-builder container.builder \
add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6001/DEVICE_NAME DEVICE_WEIGHT
分别替换STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 和DEVICE_NAME
替换为下面,变换为下面四种形式
swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdb1 100
swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdc1 100
swift-ring-builder container.builder add r1z1-10.0.0.52:6001/sdb1 100
swift-ring-builder container.builder add r1z1-10.0.0.52:6001/sdc1 100
4.核实环的内容
swift-ring-builder container.builder
5.Rebalance 环
swift-ring-builder container.builder rebalance
对象环
对象服务器使用对象环保存本地对象列表
创建环
注意下面命令在
控制节点
执行
1.进入目录
cd /etc/swift
2.创建文件 object.builder
swift-ring-builder object.builder create 10 3 1
3.添加节点到环
格式如下
swift-ring-builder object.builder \
add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6000/DEVICE_NAME DEVICE_WEIGHT
替换为下面形式,执行下面四个命令
swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdb1 100
swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdc1 100
swift-ring-builder object.builder add r1z1-10.0.0.52:6000/sdb1 100
swift-ring-builder object.builder add r1z1-10.0.0.52:6000/sdc1 100
4.核实环内容
swift-ring-builder object.builder
5.Rebalance 环
swift-ring-builder object.builder rebalance
分发配置文件
复制 account.ring.gz, container.ring.gz, 和 object.ring.gz 文件到/etc/swift 目录(每个存储节点和其它任何运行代理服务的额外节点)
这些包在控制节点:
分别分发到object1和object2
如果没有配置object的hosts,可以直接执行下面命令。
scp container.ring.gz
aboutyun
@10.0.0.51:
/etc/swift
如果没有操作权限,则按照下面scp container.ring.gz
aboutyun
@10.0.0.51:~
/
然后通过
cp命令完成分发。
当然也可以自己写脚本。这里方法很多,只要能达到目的即可。
分发后内容如下:
完成安装
配置hashes 和默认存储策略
在控制节点进行下面操作
1.从对象存储资源库,保存 /etc/swift/swift.conf 文件
curl -o /etc/swift/swift.conf \
https://raw.githubusercontent.com/openstack/swift/stable/juno/etc/swift.conf-sample
2.编辑文件,完成下面内容
sudo nano /etc/swift/swift.conf
a.在[swift-hash] 部分,为环境配置哈希路径 prefix 和 suffix
格式如下:
[swift-hash]
...
swift_hash_path_suffix = HASH_PATH_PREFIX
swift_hash_path_prefix = HASH_PATH_SUFFIX
替换为自定义字符
[swift-hash]
...
swift_hash_path_suffix = about
swift_hash_path_prefix = yun
记得在相应的节点,创建路径
b.在 [storage-policy:0] 部分,配置默认存储策略
[storage-policy:0]
...
name = Policy-0
default = yes
3.复制文件swift.conf到每个存储节点 /etc/swift 目录和其它运行代理服务的节点。
先远程复制
scp swift.conf aboutyun@10.0.0.51:~/
scp swift.conf aboutyun@10.0.0.52:~/
然后复制到相应的目录。
sudo cp swift.conf /etc/swift
4.授权(所有节点)
chown -R swift:swift /etc/swift
5.在控制节点,和其它运行代理服务的节点,重启存储节点服务包括它的依赖
service memcached restart
service swift-proxy restart
6.在存储节点,启动存储节点服务
swift-init all start
输出如下信息:
root@controller:~# swift-init all start
Unable to locate config for container-updater
Unable to locate config for account-auditor
Unable to locate config for object-replicator
Unable to locate config for container-sync
Unable to locate config for container-replicator
Unable to locate config for object-auditor
Unable to locate config for object-expirer
Unable to locate config for container-auditor
Unable to locate config for container-server
Unable to locate config for object-server
Unable to locate config for account-reaper
proxy-server running (3939 - /etc/swift/proxy-server.conf)
proxy-server already started...
Unable to locate config for account-replicator
Unable to locate config for object-updater
Unable to locate config for container-reconciler
Unable to locate config for account-server
注意:
存储节点运行了很多存储节点服务, swift-init 使他们更容易管理
遇到问题
问题1:配置文件含有空格
service swift-proxy restart
执行swift-init all start,报了如下错误:
Error trying to load config from /etc/swift/proxy-server.conf: File contains parsing errors: /etc/swift/proxy-server.conf
[line 2]: ' bind_ip = 0.0.0.0\n'
[line 3]: ' bind_port = 8080\n'
[line 6]: ' swift_dir = /etc/swift\n'
[line 7]: ' user = swift\n'
原因:含有空格
问题2:keystoneauth标记不能识别
File "/usr/bin/swift-proxy-server", line 23, in <module>
sys.exit(run_wsgi(conf_file, 'proxy-server', **options))
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 445, in run_wsgi
loadapp(conf_path, global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 354, in loadapp
ctx = loadcontext(loadwsgi.APP, conf_file, global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 338, in loadcontext
global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 320, in _loadconfig
return loader.get_context(object_type, name, global_conf)
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 61, in get_context
object_type, name=name, global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 450, in get_context
global_additions=global_additions)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 562, in _pipeline_app_context
for name in pipeline[:-1]]
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 61, in get_context
object_type, name=name, global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 408, in get_context
object_type, name=name)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 587, in find_config_section
self.filename))
LookupError: No section 'keystoneauth' (prefixed by 'filter') found in config /etc/swift/proxy-server.conf
解决:
含有空格,造成不能识别配置文件。
总结:
在执行service swift-proxy restart的时候,报错Unknown instance,没有任何日志,然后执行swift-init all start的时候,产生了上面两个错误。两个错误均是配置文件自带,并且去掉注释,因此喜欢手打,不使用粘帖复制的方式,一定要谨慎操作,否则含有空格等,很有可能造成配置文件的配置项不能被识别。
路过
雷人
握手
鲜花
鸡蛋
收藏
分享
邀请
举报
全部
作者的其他最新日志
•
种用于单张图像大尺度人脸三维重建的VRN算法
•
基于 Openpose 实现人体动作识别
•
基于OpenCV使用OpenPose进行多个人体姿态估计
•
《DensePose: Dense Human Pose Estimation In The Wild》阅读笔记
•
Field types of query result and registered TableSink do not match
•
Clickhouse bug DB::Exception: PeekableReadBuffer: Memory limit exceed
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
立即注册
评论
pig2
加为好友
给我留言
打个招呼
发送消息
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈