openstack【juno】入门 【swift篇】二十四:创建初始rings
问题导读1.如何形成环?
2.从本文遇到的错误,配置文件应该注意什么问题?
3.swift-init all start的作用是什么?
static/image/hrline/4.gif
在开始使用对象存储服务之前,你必须创建初始账户,容器,和 对象 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网盘连接
http://pan.baidu.com/s/1kU1dJWN
2.编辑文件,完成下面内容
sudo nano /etc/swift/swift.conf
a.在 部分,为环境配置哈希路径 prefix 和 suffix
格式如下:
...
swift_hash_path_suffix = HASH_PATH_PREFIX
swift_hash_path_prefix = HASH_PATH_SUFFIX替换为自定义字符
...
swift_hash_path_suffix = about
swift_hash_path_prefix = yun记得在相应的节点,创建路径
b.在 部分,配置默认存储策略
...
name = Policy-0
default = yes
3.复制文件swift.conf到每个存储节点 /etc/swift 目录和其它运行代理服务的节点。
先远程复制
scp swift.confaboutyun@10.0.0.51:~/
scp swift.confaboutyun@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 使他们更容易管理
static/image/hrline/4.gif
遇到问题
问题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
: ' bind_ip = 0.0.0.0\n'
: ' bind_port = 8080\n'
: ' swift_dir = /etc/swift\n'
: ' 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的时候,产生了上面两个错误。两个错误均是配置文件自带,并且去掉注释,因此喜欢手打,不使用粘帖复制的方式,一定要谨慎操作,否则含有空格等,很有可能造成配置文件的配置项不能被识别。
相关内容:
openstack【juno】入门 【准备篇】零:整体介绍
openstack【juno】入门 【准备篇】一: Ubuntu14.04远程连接(ssh安装)
openstack【juno】入门 【准备篇】二::NTP安装
openstack【juno】入门 【准备篇】三:mysql(MariaDB)安装
openstack【juno】入门 【准备篇】四::RabbitMQ 安装
openstack【juno】入门 【keystone篇】五::Keystone部署及介绍
openstack【juno】入门 【keystone篇】六::Keystone使用及遇到问题解决办法
openstack【juno】入门 【keystone篇】七:创建 service entity 和 API endpoint
openstack【juno】入门 【keystone篇】八:新手操作篇(验证操作篇)
openstack【juno】入门 【keystone篇】九:创建openstack客户端环境变量脚本
openstack【juno】入门 【glance 篇】十:glance初步介绍
openstack【juno】入门 【glance 篇】十一:glance安装配置
openstack【juno】入门 【glance 篇】十二:glance安装配置验证及相关操作
openstack【juno】入门 【nova 篇】十三(1):nova简单介绍
openstack【juno】入门 【nova 篇】十三(2):安装配置计算服务
openstack【juno】入门 【网络篇】十四:neutron介绍
openstack【juno】入门 【网络篇】十五:neutron安装部署(控制节点)
openstack【juno】入门 【网络篇】十六:neutron安装部署(网络节点)
openstack【juno】入门 【网络篇】十七:neutron安装部署(计算节点)
openstack【juno】入门 【网络篇】十八:创建实例化网络
openstack【juno】入门 【dashboard篇】十九:添加dashboard
openstack【juno】入门 【cinder篇】二十:cinder介绍及安装配置【控制节点】
openstack【juno】入门 【cinder篇】二十一:安装配置块存储节点(cinder)
openstack【juno】入门 【swift篇】二十二:对象存储安装配置【控制节点】
openstack【juno】入门 【swift篇】二十三:安装配置swift节点
openstack【juno】入门 【swift篇】二十四:创建初始rings
openstack【juno】入门 【swift篇】二十五:验证安装(控制节点)
openstack【juno】入门 【实例篇】二十六:创建实例(neutron)
openstack【juno】入门 【总结篇】二十七:openstack排除故障及常见问题记录
openstack【juno】入门 【总结篇】二十八:keystone及网络总结
swift-init 除了all start和main start和服务名例如proxy start以外,还可以指定路径的.conf启动吗?Usage: swift-init <server>[.config] [<server>[.config] ...] <command> ,这句中的[.config]是什么意思? 执行swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdc1 100的时候,发现ip输错了,该如何删除? 云学生 发表于 2016-4-16 11:54
执行swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdc1 100的时候,发现ip输错了,该如何 ...
swift-ring-builder中包含了对ring的各种操作方法,包括create、default、search、list_parts、add、set_weight、set_info、remove、rebalance、validate、write_ring、pretend_min_part_hours_passed、set_min_part_hours和set_replicas
可以remove掉
bioger_hit 发表于 2016-4-16 20:24
swift-ring-builder中包含了对ring的各种操作方法,包括create、default、search、list_parts、add、set ...
赞!
请问这里在相应节点,是创建什么路径也?
页:
[1]