创建或检查vim /etc/swift/object-server.conf
- [DEFAULT]
- devices = /sdb1
- mount_check = false
- bind_ip = 0.0.0.0
- bind_port = 6000
- workers = 2
- [pipeline:main]
- pipeline = object-server
- [app:object-server]
- use = egg:swift#object
- [object-replicator]
- [object-updater]
- [object-auditor]
注意去掉:object-expirer
启动storage service:
- swift-init object-server restart
- swift-init object-replicator restart
- swift-init object-updater restart
- swift-init object-auditor restart
- swift-init container-server restart
- swift-init container-replicator restart
- swift-init container-updater restart
- swift-init container-auditor restart
- swift-init account-server restart
- swift-init account-replicator restart
- swift-init account-auditor restart
- 也可以用命令
- swift-init all restart
4.安装和配置Proxy Node
- apt-get install swift-proxy swift-doc memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
为ssl建立签名证书
- cd /etc/swift
- openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
修改/etc/memcched.conf
- -l 127.0.0.1
- #改为proxy节点的ip
- -l 10.214.0.181
重新启动memcached服务
- service memcached restart
新建 vim /etc/swift/proxy-server.conf
- [DEFAULT]
- bind_port = 8080
- bind_ip = 10.214.0.181
- user = swift
- [pipeline:main]
- pipeline = catch_errors healthcheck cache authtoken keystone proxy-server
- [app:proxy-server]
- use = egg:swift#proxy
- account_autocreate = true
- [filter:keystone]
- paste.filter_factory = keystone.middleware.swift_auth:filter_factory
- operator_roles = admin, swiftoperator
- [filter:authtoken]
- paste.filter_factory = keystone.middleware.auth_token:filter_factory
- # Delaying the auth decision is required to support token-less
- # usage for anonymous referrers ('.r:*').
- delay_auth_decision = true
- service_port = 5000
- service_host = 10.214.0.179
- auth_port = 35357
- auth_host = 10.214.0.179
- auth_token =123456
- admin_token =123456
- auth_protocol = http
- auth_uri = http://10.214.0.179:5000/
- admin_tenant_name = admin
- admin_user = admin
- admin_password = 123456
- [filter:cache]
- use = egg:swift#memcache
- memcache_servers = 10.214.0.181:11211
- set log_name = cache
- [filter:catch_errors]
- use = egg:swift#catch_errors
- [filter:healthcheck]
- use = egg:swift#healthcheck
注意:如果你运行多个memcache ,把多个ip:端口添加到在[filter:cache]中,例如:
- memcache_servers =10.1.2.3:11211,10.1.2.4:11211
如果不想用keystone可以用下面的配置内容代替:
- [DEFAULT]
- bind_port =8080
- bind_ip = 10.214.0.181
- user = swift
- [pipeline:main]
- pipeline = healthcheck cache tempauth proxy-server
- [app:proxy-server]
- use = egg:swift#proxy
- allow_account_management = true
- account_autocreate = true
- [filter:tempauth]
- use = egg:swift#tempauth
- user_admin_admin = admin .admin .reseller_admin
- user_test_tester = testing .admin
- user_test2_tester2 = testing2 .admin
- user_test_tester3 = testing3
- [filter:healthcheck]
- use = egg:swift#healthcheck
- [filter:cache]
- use = egg:swift#memcache
- memcache_servers = 10.214.0.181:11211
创建环,建立account,container,object的ring,参数18代表“环”是2^18,参数3 代表每一个存储对象有3份拷贝,当然这是有至少3个storage的情况下,所有的所有服务都在一个节点上,那就写1吧。参数1代表1小时可以移动分区一次(即延迟时间)。
- cd /etc/swift
- swift-ring-builder account.builder create 18 3 1
- swift-ring-builder container.builder create 18 3 1
- swift-ring-builder object.builder create 18 3 1
添加ring节点,例如,我们在Zone 1中建立的一个存储节点,ip地址为10.214.0.182,分区为/sdb1, 路径在rsyncd.conf(存储节点)文件path中。100 代表设备的权重。可以根据磁盘的容量设定对应值,比如2T的100,则1T的可以是50。端口要与配置文件中的对应。
- swift-ring-builder account.builder add z1-10.214.0.179:6002/sdb1 93
- swift-ring-builder container.builder add z1-10.214.0.179:6001/sdb1 93
- swift-ring-builder object.builder add z1-10.214.0.179:6000/sdb1 93
注意:假定有若干个zones,每一个zones有一个node。zone应该起始于1,以1递增。例如:swift-ring-builder account.builder add z2-10.214.0.180:6002/sdb1 28
(为了以后重新建立环境方便,可以把它们写在vim set_devices.sh中: (一条条复制也挺烦的。)
- swift-ring-builder account.builder add z1-10.214.0.179:6002/sdb1 93
- swift-ring-builder container.builder add z1-10.214.0.179:6001/sdb1 93
- swift-ring-builder object.builder add z1-10.214.0.179:6010/sdb1 93
- swift-ring-builder account.builder add z2-10.214.0.180:6002/sdb1 28
- swift-ring-builder container.builder add z2-10.214.0.180:6001/sdb1 28
- swift-ring-builder object.builder add z2-10.214.0.180:6010/sdb1 28
- swift-ring-builder account.builder add z3-10.214.0.182:6002/sdb1 23
- swift-ring-builder container.builder add z3-10.214.0.182:6001/sdb1 23
- swift-ring-builder object.builder add z3-10.214.0.182:6000/sdb1 23
- swift-ring-builder account.builder
- swift-ring-builder container.builder
- swift-ring-builder object.builder
- 执行脚本。
sh set_devices.sh)
如果添加错了而你有不止到怎么修改,那可以删除/etc/swift下的account.builder、container.builder、 object.builder后重新创建环即重新执行swift-ring-builder account.builder create 18 3 1等。
核实ring的内容
- swift-ring-builder account.builder
- swift-ring-builder container.builder
- swift-ring-builder object.builder
平衡rings
- swift-ring-builder account.builder rebalance
- swift-ring-builder container.builder rebalance
- swift-ring-builder object.builder rebalance
成功之后会在当前目录生成 account.ring.gz 文件,把/etc/swift/下的account.ring.gz, container.ring.gz, and object.ring.gz拷贝到每一个proxy节点和storage节点。
确定所有的配置文件的权限:
- chown -R swift:swift /etc/swift
启动proxy服务
- swift-init proxy restart
5.重启服务
- swift-init main restart
- swift-init rest restart
- swift-init all restart
各个Storage节点:swift-init all start