分享

openstack【juno】入门 【swift篇】二十四:创建初始rings

问题导读


1.如何形成环?
2.从本文遇到的错误,配置文件应该注意什么问题?
3.swift-init all start的作用是什么?







在开始使用对象存储服务之前,你必须创建初始账户,容器,和 对象 rings。环生成器所创建的配置文件,每个节点使用确定和部署的存储架构。
为了简单起见,这个向导使用一个地区的区2 ^10(1024)最大分区,每个对象3个副本,和至少一小时时间移动分区不止一次。对象存储一个分区代表一个存储设备上的目录,而不是一个传统分区表,更多内容,查看部署向导


账户

账户服务器使用账户环,保存容器列表

创建环

注意:
执行下面命令在 控制节点

1.进入 /etc/swift目录
  1. cd /etc/swift
复制代码

2.创建 account.builder

  1. swift-ring-builder account.builder create 10 3 1
复制代码
1.png

3.添加每一个存储节点到环


  1. swift-ring-builder account.builder \
  2.   add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6002/DEVICE_NAME DEVICE_WEIGHT
复制代码


替换存储节点管理网络ip地址STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS ,替换存储节点设备名称DEVICE_NAME ,例如在存储节点使用的 /dev/sdb1存储设备,替换为下面内容
  1. swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdb1 100
复制代码
  1. swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdc1 100
复制代码



  1. swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdb1 100
复制代码

  1. swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdc1 100
复制代码




在每个存储节点使用上面命令


4.核实ring内容
  1. swift-ring-builder account.builder
复制代码
2.png


5.负载均衡ring

  1. swift-ring-builder account.builder rebalance
复制代码

这个过程可能需要时间


容器环

容器服务器使用容器环保存对象服务列表。尽管如此,它不跟踪对象的存储位置。

创建环

控制节点,完成下面内容

1.进入 /etc/swift 目录
  1. cd  /etc/swift
复制代码


2.创建 container.builder文件

  1. swift-ring-builder container.builder create 10 3 1
复制代码

3.添加存储节点到环

格式如下:
  1. swift-ring-builder container.builder \
  2.   add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6001/DEVICE_NAME DEVICE_WEIGHT
复制代码

分别替换STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 和DEVICE_NAME

替换为下面,变换为下面四种形式


  1. swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdb1 100
复制代码
  1. swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdc1 100
复制代码


  1. swift-ring-builder container.builder add r1z1-10.0.0.52:6001/sdb1 100
复制代码

  1. swift-ring-builder container.builder add r1z1-10.0.0.52:6001/sdc1 100
复制代码
3.png


4.核实环的内容

  1. swift-ring-builder container.builder
复制代码
4.png

5.Rebalance 环
  1. swift-ring-builder container.builder rebalance
复制代码


对象环


对象服务器使用对象环保存本地对象列表

创建环

注意下面命令在控制节点执行

1.进入目录

  1. cd /etc/swift
复制代码



2.创建文件 object.builder

  1. swift-ring-builder object.builder create 10 3 1
复制代码


3.添加节点到环

格式如下
  1. swift-ring-builder object.builder \
  2.   add r1z1-STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS:6000/DEVICE_NAME DEVICE_WEIGHT
复制代码


替换为下面形式,执行下面四个命令
  1. swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdb1 100
复制代码

  1. swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdc1 100
复制代码

  1. swift-ring-builder object.builder add r1z1-10.0.0.52:6000/sdb1 100
复制代码

  1. swift-ring-builder object.builder add r1z1-10.0.0.52:6000/sdc1 100
复制代码
5.png


4.核实环内容

  1. swift-ring-builder object.builder
复制代码
6.png

5.Rebalance 环

  1. swift-ring-builder object.builder rebalance
复制代码


分发配置文件

复制 account.ring.gz, container.ring.gz, 和 object.ring.gz 文件到/etc/swift 目录(每个存储节点和其它任何运行代理服务的额外节点)

这些包在控制节点:
7.png

分别分发到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命令完成分发。
当然也可以自己写脚本。这里方法很多,只要能达到目的即可。

分发后内容如下:

9.png


8.png


完成安装

配置hashes 和默认存储策略

在控制节点进行下面操作

1.从对象存储资源库,保存 /etc/swift/swift.conf 文件
  1. curl -o /etc/swift/swift.conf \
  2.   https://raw.githubusercontent.com/openstack/swift/stable/juno/etc/swift.conf-sample
复制代码
网盘连接
http://pan.baidu.com/s/1kU1dJWN

2.编辑文件,完成下面内容
  1. sudo nano /etc/swift/swift.conf
复制代码


a.在[swift-hash] 部分,为环境配置哈希路径 prefix 和 suffix

格式如下:
  1. [swift-hash]
  2. ...
  3. swift_hash_path_suffix = HASH_PATH_PREFIX
  4. swift_hash_path_prefix = HASH_PATH_SUFFIX
复制代码
替换为自定义字符
  1. [swift-hash]
  2. ...
  3. swift_hash_path_suffix = about
  4. swift_hash_path_prefix = yun
复制代码
记得在相应的节点,创建路径

b.在 [storage-policy:0] 部分,配置默认存储策略
  1. [storage-policy:0]
  2. ...
  3. name = Policy-0
  4. default = yes
复制代码


3.复制文件swift.conf到每个存储节点 /etc/swift 目录和其它运行代理服务的节点。

先远程复制
  1. scp swift.conf  aboutyun@10.0.0.51:~/
  2. scp swift.conf  aboutyun@10.0.0.52:~/
复制代码




然后复制到相应的目录。

  1. sudo cp swift.conf /etc/swift
复制代码


4.授权(所有节点)

  1. chown -R swift:swift /etc/swift
复制代码

5.在控制节点,和其它运行代理服务的节点,重启存储节点服务包括它的依赖

  1. service memcached restart
  2. service swift-proxy restart
复制代码


6.在存储节点,启动存储节点服务

  1. swift-init all start
复制代码

输出如下信息:
  1. root@controller:~# swift-init all start
  2. Unable to locate config for container-updater
  3. Unable to locate config for account-auditor
  4. Unable to locate config for object-replicator
  5. Unable to locate config for container-sync
  6. Unable to locate config for container-replicator
  7. Unable to locate config for object-auditor
  8. Unable to locate config for object-expirer
  9. Unable to locate config for container-auditor
  10. Unable to locate config for container-server
  11. Unable to locate config for object-server
  12. Unable to locate config for account-reaper
  13. proxy-server running (3939 - /etc/swift/proxy-server.conf)
  14. proxy-server already started...
  15. Unable to locate config for account-replicator
  16. Unable to locate config for object-updater
  17. Unable to locate config for container-reconciler
  18. Unable to locate config for account-server
复制代码
1.png

注意:
存储节点运行了很多存储节点服务, swift-init 使他们更容易管理






遇到问题


问题1:配置文件含有空格



service swift-proxy restart
1.png


执行swift-init all start,报了如下错误:

  1. Error trying to load config from /etc/swift/proxy-server.conf: File contains parsing errors: /etc/swift/proxy-server.conf
  2.         [line  2]: ' bind_ip = 0.0.0.0\n'
  3.         [line  3]: ' bind_port = 8080\n'
  4.         [line  6]: ' swift_dir = /etc/swift\n'
  5.         [line  7]: ' user = swift\n'
复制代码

原因:含有空格
问题2:keystoneauth标记不能识别

  1.   File "/usr/bin/swift-proxy-server", line 23, in <module>
  2.     sys.exit(run_wsgi(conf_file, 'proxy-server', **options))
  3.   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 445, in run_wsgi
  4.     loadapp(conf_path, global_conf=global_conf)
  5.   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 354, in loadapp
  6.     ctx = loadcontext(loadwsgi.APP, conf_file, global_conf=global_conf)
  7.   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 338, in loadcontext
  8.     global_conf=global_conf)
  9.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
  10.     global_conf=global_conf)
  11.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 320, in _loadconfig
  12.     return loader.get_context(object_type, name, global_conf)
  13.   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 61, in get_context
  14.     object_type, name=name, global_conf=global_conf)
  15.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 450, in get_context
  16.     global_additions=global_additions)
  17.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 562, in _pipeline_app_context
  18.     for name in pipeline[:-1]]
  19.   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 61, in get_context
  20.     object_type, name=name, global_conf=global_conf)
  21.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 408, in get_context
  22.     object_type, name=name)
  23.   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 587, in find_config_section
  24.     self.filename))
  25. LookupError: No section 'keystoneauth' (prefixed by 'filter') found in config /etc/swift/proxy-server.conf
复制代码
2.png

解决:
含有空格,造成不能识别配置文件。

总结:

在执行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及网络总结


已有(5)人评论

跳转到指定楼层
yangdy 发表于 2015-11-20 16:45:04
swift-init 除了all start和main start和服务名例如proxy start以外,还可以指定路径的.conf启动吗?Usage: swift-init <server>[.config] [<server>[.config] ...] <command> [options],这句中的[.config]是什么意思?
回复

使用道具 举报

云学生 发表于 2016-4-16 11:54:33
执行swift-ring-builder account.builder add r1z1-10.0.0.52:6002/sdc1 100的时候,发现ip输错了,该如何删除?
回复

使用道具 举报

bioger_hit 发表于 2016-4-16 20:24:22
云学生 发表于 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掉
回复

使用道具 举报

云学生 发表于 2016-4-16 21:17:40
bioger_hit 发表于 2016-4-16 20:24
swift-ring-builder中包含了对ring的各种操作方法,包括create、default、search、list_parts、add、set ...

   赞!
回复

使用道具 举报

yzc2006 发表于 2016-7-11 13:41:34
a.jpg
请问这里在相应节点,是创建什么路径也?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /5 下一条