问题导读
1.如何形成环?
2.从本文遇到的错误,配置文件应该注意什么问题?
3.swift-init all start的作用是什么?
在开始使用对象存储服务之前,你必须创建初始账户,容器,和 对象 rings。环生成器所创建的配置文件,每个节点使用确定和部署的存储架构。
为了简单起见,这个向导使用一个地区的区2 ^10(1024)最大分区,每个对象3个副本,和至少一小时时间移动分区不止一次。对象存储一个分区代表一个存储设备上的目录,而不是一个传统分区表,更多内容,查看部署向导
账户环
账户服务器使用账户环,保存容器列表
创建环
注意:
执行下面命令在 控制节点
1.进入 /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 目录
复制代码
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.进入目录
复制代码
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.在[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.在存储节点,启动存储节点服务
复制代码
输出如下信息:
- 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的时候,产生了上面两个错误。两个错误均是配置文件自带,并且去掉注释,因此喜欢手打,不使用粘帖复制的方式,一定要谨慎操作,否则含有空格等,很有可能造成配置文件的配置项不能被识别。
相关内容:
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及网络总结
|