pig2 发表于 2015-2-20 12:41:00

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


yangdy 发表于 2015-11-20 16:45:04

swift-init 除了all start和main start和服务名例如proxy start以外,还可以指定路径的.conf启动吗?Usage: swift-init <server>[.config] [<server>[.config] ...] <command> ,这句中的[.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


请问这里在相应节点,是创建什么路径也?
页: [1]
查看完整版本: openstack【juno】入门 【swift篇】二十四:创建初始rings