Swift安装
Server1 1.Update sudo apt-get update sudo apt-get upgrade 2. sudo apt-get install bridge-utils 3.IP 3.1 sudo vi /etc/network/interfaces ---------------------------------------------- auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.75.110 netmask 255.255.255.0 broadcast 192.168.75.255 gateway 192.168.75.2 dns-nameservers 192.168.75.2 auto eth1 iface eth1 inet static address 192.168.4.1 netmask 255.255.255.0 network 192.168.4.0 broadcast 192.168.4.255 3.2 sudo /etc/init.d/networking restart 4.NTP Server 4.1 sudo apt-get install ntp 4.2 sudo vi /etc/ntp.conf -------------------------------- server ntp.ubuntu.com server 127.127.1.0 fudge 127.127.1.0 stratum 10 4.3 sudo service ntp restart 5.database 5.1 sudo apt-get install mysql-server python-mysqldb 设置密码:gis 5.2 sudo vi /etc/mysql/my.cnf ------------------------------------- bind-address = 0.0.0.0 5.3 sudo restart mysql sudo mysql -u root -p use mysql select host, user, password from user; delete from user where user='root' and host='localhost'; delete from user where user='root' and host='::1'; delete from user where user='root' and host='127.0.0.1'; delete from user where user=''; update user set host='%' where user='root'; commit; sudo restart mysql 5.4 sudo mysql -u root -p -e 'CREATE DATABASE keystone;' 5.5 sudo mysql -u root -p -e 'CREATE USER keystone;' 5.6 sudo mysql -u root -p -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';" sudo mysql -u root -p -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'" 5.7 sudo mysql -u root -p -e "SET PASSWORD FOR 'keystone'@'%' = PASSWORD('gis');" 6. sudo apt-get install keystone 6.1 sudo rm /var/lib/keystone/keystone.db 6.2 sudo vi /etc/keystone/keystone.conf bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 admin_token = 012345SECRET99TOKEN012345 compute_port = 8774 verbose = True debug = True log_config = /etc/keystone/logging.conf use_syslog = False connection = mysql://keystone:gis@192.168.75.110/keystone 6.3 sudo keystone-manage pki_setup sudo chown -R keystone:keystone /etc/keystone/ sudo chmod g+rx,o+rx -R /etc/keystone/ sudo chmod -R g+rwx,o+rwx /var/log/keystone/ 6.4 sudo service keystone restart 6.5 sudo keystone-manage db_sync 7 identity 7.1 export OS_SERVICE_TOKEN=012345SECRET99TOKEN012345 export OS_SERVICE_ENDPOINT=http://192.168.75.110:35357/v2.0 keystone tenant-create --name demo --description "Default Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Default Tenant | | enabled | True | | id | 3b440084158a42c0917603e066261aaf | | name | demo | +-------------+----------------------------------+ keystone user-create --tenant-id 3b440084158a42c0917603e066261aaf --name admin --pass secrete +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | d99081655e834ded8abea8e6f6e111bb | | name | admin | | tenantId | 3b440084158a42c0917603e066261aaf | +----------+----------------------------------+ keystone role-create --name admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | c55516c9bcae400bad38b96e98e35279 | | name | admin | +----------+----------------------------------+ keystone user-role-add --user-id d99081655e834ded8abea8e6f6e111bb --tenant-id 3b440084158a42c0917603e066261aaf --role-id c55516c9bcae400bad38b96e98e35279 7.2 keystone tenant-create --name service --description "Service Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | d5f00c8160b94fc5acdf2f2a79d790dc | | name | service | +-------------+----------------------------------+ keystone user-create --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --name glance --pass glance +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 2d16d19937fd4f3eba46a48d0a5d1c90 | | name | glance | | tenantId | d5f00c8160b94fc5acdf2f2a79d790dc | +----------+----------------------------------+ keystone user-role-add --user-id 2d16d19937fd4f3eba46a48d0a5d1c90 --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --role-id c55516c9bcae400bad38b96e98e35279 keystone user-create --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --name ec2 --pass ec2 +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 2782536bd49a4802a575301ccdb44324 | | name | ec2 | | tenantId | d5f00c8160b94fc5acdf2f2a79d790dc | +----------+----------------------------------+ keystone user-role-add --user-id 2782536bd49a4802a575301ccdb44324 --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --role-id c55516c9bcae400bad38b96e98e35279 keystone user-create --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --name swift --pass swiftpass +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | cdee582c005745808f064ceea1e20953 | | name | swift | | tenantId | d5f00c8160b94fc5acdf2f2a79d790dc | +----------+----------------------------------+ keystone user-role-add --user-id cdee582c005745808f064ceea1e20953 --tenant-id d5f00c8160b94fc5acdf2f2a79d790dc --role-id c55516c9bcae400bad38b96e98e35279 7.3 keystone service-create --name=keystone --type=identity --description="Identity Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Identity Service | | id | c697cfd78fa14b8eaf296af2569b711c | | name | keystone | | type | identity | +-------------+----------------------------------+ keystone endpoint-create \ --region RegionOne \ --service-id=c697cfd78fa14b8eaf296af2569b711c \ --publicurl=http://192.168.75.110:5000/v2.0 \ --internalurl=http://192.168.75.110:5000/v2.0 \ --adminurl=http://192.168.75.110:35357/v2.0 +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://192.168.75.110:35357/v2.0 | | id | 6a32df6c6c714e30a9830cfe39e8d64f | | internalurl | http://192.168.75.110:5000/v2.0 | | publicurl | http://192.168.75.110:5000/v2.0 | | region | RegionOne | | service_id | c697cfd78fa14b8eaf296af2569b711c | +-------------+----------------------------------+ keystone service-create --name=ec2 --type=ec2 --description="EC2 Compatibility Layer" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | EC2 Compatibility Layer | | id | 528b19e43cec466192c770c26d3a73a3 | | name | ec2 | | type | ec2 | +-------------+----------------------------------+ keystone --token 012345SECRET99TOKEN012345 \ --endpoint http://192.168.75.110:35357/v2.0/ \ endpoint-create \ --region RegionOne \ --service-id=528b19e43cec466192c770c26d3a73a3 \ --publicurl=http://192.168.75.110:8773/services/Cloud \ --internalurl=http://192.168.75.110:8773/services/Cloud \ --adminurl=http://192.168.75.110:8773/services/Admin +-------------+-------------------------------------------+ | Property | Value | +-------------+-------------------------------------------+ | adminurl | http://192.168.75.110:8773/services/Admin | | id | 64007630d09c450a8418985c98dbcd07 | | internalurl | http://192.168.75.110:8773/services/Cloud | | publicurl | http://192.168.75.110:8773/services/Cloud | | region | RegionOne | | service_id | 528b19e43cec466192c770c26d3a73a3 | +-------------+-------------------------------------------+ keystone service-create --name=swift --type=object-store --description="Object Storage Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Object Storage Service | | id | b162fbd8a371465bba07b9c0ea3f9c32 | | name | swift | | type | object-store | +-------------+----------------------------------+ keystone endpoint-create \ --region RegionOne \ --service-id=b162fbd8a371465bba07b9c0ea3f9c32 \ --publicurl 'http://192.168.75.110:8888/v1/AUTH_%(tenant_id)s' \ --adminurl 'http://192.168.75.110:8888/v1' \ --internalurl 'http://192.168.75.110:8888/v1/AUTH_%(tenant_id)s' +-------------+--------------------------------------------------+ | Property | Value | +-------------+--------------------------------------------------+ | adminurl | http://192.168.75.110:8888/v1 | | id | 5eb5295ee08d4967838f2b8f3fd44939 | | internalurl | http://192.168.75.110:8888/v1/AUTH_%(tenant_id)s | | publicurl | http://192.168.75.110:8888/v1/AUTH_%(tenant_id)s | | region | RegionOne | | service_id | b162fbd8a371465bba07b9c0ea3f9c32 | +-------------+--------------------------------------------------+ 8. unset OS_SERVICE_TOKEN unset OS_SERVICE_ENDPOINT 9. keystone --os-auth-url=http://192.168.75.110:35357/v2.0 token-get keystone --os-username=admin --os-password=secrete --os-auth-url=http://192.168.75.110:35357/v2.0 token-get keystone --os-username=admin --os-password=secrete --os-tenant-name=demo --os-auth-url=http://192.168.75.110:35357/v2.0 token-get keystone --os-username=admin --os-password=secrete --os-auth-url=http://192.168.75.110:35357/v2.0 token-get keystone --os-username=admin --os-password=secrete --os-tenant-name=service --os-auth-url=http://192.168.75.110:35357/v2.0 token-get 11. vi keystonerc export OS_USERNAME=swift export OS_PASSWORD=swiftpass export OS_TENANT_NAME=service export OS_AUTH_URL=http://192.168.75.110:35357/v2.0 export OS_REGION_NAME=RegionOne export OS_SERVICE_TOKEN=012345SECRET99TOKEN012345 export OS_SERVICE_ENDPOINT=http://192.168.75.110:35357/v2.0 export OS_USERNAME=admin export OS_PASSWORD=secrete export OS_TENANT_NAME=demo export OS_AUTH_URL=http://192.168.75.110:35357/v2.0 source keystonerc 12. keystone user-list keystone role-list -------------------------------------Server1, Server2, Server3, Server4---------------------------------------------------- 1.安装SSH和Swift的核心包 sudo apt-get install swift openssh-server rsync memcached python-netifaces python-xattr python-memcache 2.在所有节点上创创建配置文件目录 sudo mkdir -p /etc/swift sudo chown -R swift:swift /etc/swift/ 3. 在所有节点上创创建swift配置文件(/etc/swift/swift.conf) sudo vi /etc/swift/swift.conf [swift-hash] # random unique string that can never change (DO NOT LOSE) swift_hash_path_suffix = fLIbertYgibbitZ sudo chown -R swift:swift /etc/swift/ ------------------------------------Server 2, Server 3, Server 4----------------------------------------------------------- 1.在所有存贮节点上安装Swift包 sudo apt-get install swift-account swift-container swift-object xfsprogs 2. 建立XFS文件系统存贮 sudo fdisk /dev/sdb //#然后一次选择 n, p, 1, 默认, 默认, w sudo mkfs.xfs -f -i size=1024 /dev/sdb1 ( 命令格式: sudo mkfs -t ext3 /dev/sdb1 ) sudo mkdir -p /srv/node/sdb1 sudo echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab sudo mount /srv/node/sdb1 sudo chown -R swift:swift /srv/node 3. 创建数据同步配置文件(/etc/rsyncd.conf) sudo vi /etc/rsyncd.conf uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 192.168.4.2 或 192.168.4.3 或 192.168.4.4 [account] max connections = 2 path = /srv/node/ read only = false lock file = /var/lock/account.lock [container] max connections = 2 path = /srv/node/ read only = false lock file = /var/lock/container.lock [object] max connections = 2 path = /srv/node/ read only = false lock file = /var/lock/object.lock 4.启用系统同步 sudo vi /etc/default/rsync RSYNC_ENABLE = true sudo service rsync start 5.创建目录 sudo mkdir -p /var/swift/recon sudo chown -R swift:swift /var/swift/recon ---------------------------------------------------Server 1---------------------------------------------------------- 1.安装swift-proxy节点包 sudo apt-get install swift-proxy memcached python-keystoneclient python-swiftclient python-webob 2.生成SSL认证文件 cd /etc/swift sudo openssl req -new -x509 -nodes -out cert.crt -keyout cert.key 3.修改缓存配置文件 sudo vi /etc/memcached.conf 将 -l 127.0.0.1 改为 -l 192.168.4.1 4.重启缓存服务 sudo service memcached restart 5.修改swift-proxy缓存配置文件 sudo vi /etc/swift/proxy-server.conf [DEFAULT] cert_file = /etc/swift/cert.crt key_file = /etc/swift/cert.key bind_port = 8888 user = swift [pipeline:main] pipeline = healthcheck cache authtoken keystoneauth proxy-server [app:proxy-server] use = egg:swift#proxy allow_account_management = true account_autocreate = true [filter:keystoneauth] use = egg:swift#keystoneauth operator_roles = Member,admin,swiftoperator [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory # Delaying the auth decision is required to support token-less # usage for anonymous referrers ('.r:*'). delay_auth_decision = true # cache directory for signing certificate signing_dir = /home/swift/keystone-signing # auth_* settings refer to the Keystone server auth_protocol = http auth_host = 192.168.75.110 auth_port = 35357 # the same admin_token as provided in keystone.conf admin_token = 012345SECRET99TOKEN012345 # the service tenant and swift userid and password created in Keystone admin_tenant_name = service admin_user = swift admin_password = swiftpass [filter:cache] use = egg:swift#memcache memcache_servers = 192.168.75.110:11211 [filter:catch_errors] use = egg:swift#catch_errors [filter:healthcheck] use = egg:swift#healthcheck 6. 创建swift的认证目录 sudo mkdir -p /home/swift/keystone-signing sudo chown -R swift:swift /home/swift/keystone-signing 7.创建account, container, object的ring cd /etc/swift sudo swift-ring-builder account.builder create 18 3 24 sudo swift-ring-builder container.builder create 18 3 24 sudo swift-ring-builder object.builder create 18 3 24 8. 将存贮实体加入到环中 sudo swift-ring-builder account.builder add z1-192.168.4.2:6002/sdb1 100 sudo swift-ring-builder container.builder add z1-192.168.4.2:6001/sdb1 100 sudo swift-ring-builder object.builder add z1-192.168.4.2:6000/sdb1 100 sudo swift-ring-builder account.builder add z2-192.168.4.3:6002/sdb1 100 sudo swift-ring-builder container.builder add z2-192.168.4.3:6001/sdb1 100 sudo swift-ring-builder object.builder add z2-192.168.4.3:6000/sdb1 100 sudo swift-ring-builder account.builder add z3-192.168.4.4:6002/sdb1 100 sudo swift-ring-builder container.builder add z3-192.168.4.4:6001/sdb1 100 sudo swift-ring-builder object.builder add z3-192.168.4.4:6000/sdb1 100 9. 查看各个环 sudo swift-ring-builder account.builder sudo swift-ring-builder container.builder sudo swift-ring-builder object.builder 10. 平衡各个环 sudo swift-ring-builder account.builder rebalance sudo swift-ring-builder container.builder rebalance sudo swift-ring-builder object.builder rebalance 11. 将生成的环信息复制到Proxy节点与Storage节点的/etc/swift目录下 account.ring.gz container.ring.gz object.ring.gz sudo chown -R swift:swift /etc/swift sudo chmod g+rw,o+rw -R /etc/swift/ sudo scp account.ring.gz zyx@192.168.75.111:/etc/swift sudo scp account.ring.gz zyx@192.168.75.112:/etc/swift sudo scp account.ring.gz zyx@192.168.75.113:/etc/swift sudo scp container.ring.gz zyx@192.168.75.111:/etc/swift sudo scp container.ring.gz zyx@192.168.75.112:/etc/swift sudo scp container.ring.gz zyx@192.168.75.113:/etc/swift sudo scp object.ring.gz zyx@192.168.75.111:/etc/swift sudo scp object.ring.gz zyx@192.168.75.112:/etc/swift sudo scp object.ring.gz zyx@192.168.75.113:/etc/swift 12. 将各个配置文件的用户改为swift sudo chown -R swift:swift /etc/swift 13. 启动代理服务 sudo service proxy-server start sudo swift-init proxy start (有效) ------------------------------------------Server 2, Server 3, Server 4----------------------------------------------------------- 14.启动存贮服务 sudo service swift-object start sudo service swift-object-replicator start sudo service swift-object-updater start sudo service swift-object-auditor start sudo service swift-container start sudo service swift-container-replicator start sudo service swift-container-updater start sudo service swift-container-auditor start sudo service swift-account start sudo service swift-account-replicator start sudo service swift-account-updater start sudo service swift-account-auditor start sudo swift-init all start (有效) 或 sudo swift-init object-server start sudo swift-init object-replicator start sudo swift-init object-updater start sudo swift-init object-auditor start sudo swift-init container-server start sudo swift-init container-replicator start sudo swift-init container-updater start sudo swift-init container-auditor start sudo swift-init account-server start sudo swift-init account-replicator start sudo swift-init account-auditor start ------------------------------------------Verify the Installation------------------------------------------------------------- 15.验证Swift安装 15.1设置变量 export ADMINPASS=swiftpass export SWIFT_PROXY_CONF="/etc/swift/proxy-server.conf" 15.1验证 swift -V 2.0 -A http://192.168.75.110:5000/v2.0 -U service:swift -K swiftpass stat (有效) curl -d '{"auth":{"tenantName": "service","passwordCredentials":{"username": "swift","password": "swiftpass"}}}' -H "Content-type:application/json" http://192.168.75.110:35357/v2.0/tokens (有效) { "access": { "token": { "issued_at": "2013-07-20T02:20:19.836225", "expires": "2013-07-21T02:20:19Z", "id": "MIIHHAYJ.....", "tenant": { "description": "Service Tenant", "enabled": true, "id": "5e3af2dac2d1451ba90c4f151a40a463", "name": "service" } }, "serviceCatalog": [ { "endpoints": [ { "adminURL": "http://192.168.75.110:8888/v1", "region": "RegionOne", "internalURL": "http://192.168.75.110:8888/v1/AUTH_5e3af2dac2d1451ba90c4f151a40a463", "id": "944b056c8ea44f4bb2f85f350fc6d749", "publicURL": "http://192.168.75.110:8888/v1/AUTH_5e3af2dac2d1451ba90c4f151a40a463" } ], "endpoints_links": [], "type": "object-store", "name": "swift" }, { "endpoints": [ { "adminURL": "http://192.168.75.110:8773/services/Admin", "region": "RegionOne", "internalURL": "http://192.168.75.110:8773/services/Cloud", "id": "14c95395690d4d5393ad91c4c9ce0191", "publicURL": "http://192.168.75.110:8773/services/Cloud" } ], "endpoints_links": [], "type": "ec2", "name": "ec2" }, { "endpoints": [ { "adminURL": "http://192.168.75.110:35357/v2.0", "region": "RegionOne", "internalURL": "http://192.168.75.110:5000/v2.0", "id": "2c48f04762304a46ae6ae2bacfa0d91a", "publicURL": "http://192.168.75.110:5000/v2.0" } ], "endpoints_links": [], "type": "identity", "name": "keystone" } ], "user": { "username": "swift", "roles_links": [], "id": "eef77f25cf8b4563bffbcb4d9a6091bc", "roles": [ { "name": "_member_" }, { "name": "admin" } ], "name": "swift" }, "metadata": { "is_admin": 0, "roles": [ "9fe2ff9ee4384b1894a90878d3e92bab", "76f281288ce7401bbb5472f17e7197ec" ] } } } swift -A http://192.168.75.110:5000/v2.0 -U service:swift -K swiftpass upload myfiles bigfile1.tgz 15.3上传文件 swift upload myfiles bigfile1.tgz (有效) swift -V 2.0 -A http://192.168.75.110:5000/v2.0 -U service:swift -K swiftpass stat (有效)
15.4下载文件 swift -A http://192.168.75.110:5000/v2.0 -U service:swift -K swiftpass download myfiles swift download myfiles (有效) http://blog.csdn.net/gjhnorth/article/details/9036869 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ http://www.openstack.org.cn/ask/?q-24.html ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Swift多节点安装 安装环境: Proxy Node:192.168.5.152 Storage Node1:192.168.5.155 Storage Node1:192.168.5.156 Storage Node1:192.168.5.157 一、 安装配置存储节点(Storage Node) 在192.168.5.155存储节点上进行操作,其他存储节点操作内容相同 1、 安装需要的软件包 apt-get update apt-get install swift swift-account swift-container swift-object swift-doc xfsprogs 2、 创建loopback设备(假设为sdb1)分出一个分区然后格式化 fdisk /dev/sdb mkfs.xfs -i size=1024 /dev/sdb1 上面的方法是官方文档上的方法,也是推荐的方法,我使用的是创建回环设备来存 dd if=/dev/zero of=/srv/swift-node bs=1024 count=0 seek=1000000 mkfs.xfs -i size=1024 /srv/swift-node 3、 更新fstab文件 cat >> /etc/fstab <<EOF /dev/sdb1 /swift/node/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0 /dev/sdc1 /swift/node/sdc1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0 /dev/sdd1 /swift/node/sdd1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0 /dev/sde1 /swift/node/sde1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0 EOF 4、 挂载 mkdir -p /swift/node/sdb1 mkdir -p /swift/node/sdc1 mkdir -p /swift/node/sdd1 mkdir -p /swift/node/sde1 mount /swift/node/sdb1 mount /swift/node/sdc1 mount /swift/node/sdd1 mount /swift/node/sde1 chown -R swift:swift /swift 注意 没有赋权限,会导致创建失败 5、 创建swift的配置文件 cat >/etc/swift/swift.conf <<EOF [swift-hash] # random unique string that can never change (DO NOT LOSE) swift_hash_path_suffix = `od -t x8 -N 8 -A n </dev/random` EOF Note: 这个文件所有的存储节点和代理节点共用,可以用scp拷贝到其它节点 6、 安装rsync apt-get install rsync 7、 创建rsync配置文件 cat > /etc/rsyncd.conf << EOF uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 192.168.5.155 [account] max connections = 2 path = /swift/node read only = false lock file = /var/lock/account.lock [container] max connections = 2 path = /swift/node read only = false lock file = /var/lock/container.lock [object] max connections = 2 path = /swift/node read only = false lock file = /var/lock/object.lock EOF 注意:path 写你实际的(刚才新建的)分区的位置。address修改为当前storage的地址。 8、 启用rsync perl -pi -e 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/' /etc/default/rsync 9、 启动rsync service rsync start 10、 配置account服务 cat > /etc/swift/account-server.conf << EOF [DEFAULT] devices = /swift/node mount_check = false bind_ip = 0.0.0.0 bind_port = 6012 workers = 2 log_facility = LOG_LOCAL3 [pipeline:main] pipeline = account-server [app:account-server] use = egg:swift#account [account-replicator] [account-auditor] [account-reaper] EOF 11、 配置container服务 cat > /etc/swift/container-server.conf << EOF [DEFAULT] devices = /swift/node mount_check = false bind_ip = 0.0.0.0 bind_port = 6011 workers = 2 log_facility = LOG_LOCAL2 [pipeline:main] pipeline = container-server [app:container-server] use = egg:swift#container [container-replicator] [container-updater] [container-auditor] [container-sync] EOF 12、 配置object服务 cat > /etc/swift/object-server.conf << EOF [DEFAULT] devices = /swift/node/ mount_check = false bind_ip = 0.0.0.0 bind_port = 6010 workers = 2 log_facility = LOG_LOCAL1 [pipeline:main] pipeline = object-server [app:object-server] use = egg:swift#object [object-replicator] [object-updater] [object-auditor] [object-expirer] EOF 13、 创建swift日志配置文件 cat > /etc/rsyslog.d/10-swift.conf << EOF local1,local2,local3.* /var/log/swift/all.log local1.* /var/log/swift/object.log local2.* /var/log/swift/container.log local3.* /var/log/swift/account.log EOF 14、 创建日志目录 mkdir -p /var/log/swift chown -R syslog.adm /var/log/swift 15、 重启日志服务进程 service rsyslog restart 二、 安装配置代理节点(Proxy Node) 1、 安装需要的软件包 apt-get update apt-get install swift swift-proxy swift-doc memcached 2、 修改memcached配置文件 perl -pi -e "s/-l 127.0.0.1/-l 192.168.5.152/" /etc/memcached.conf 3、 重启memcached服务 service memcached restart 4、 从存储节点拷贝swift配置文件 mkdir /etc/swift scp root@192.168.5.155:/etc/swift/swift.conf /etc/swift 5、 创建proxy-server配置文件 --------------------------tempauth认证------------------------------------------------ cat > /etc/swift/proxy-server.conf << EOF [DEFAULT] bind_port =8080 bind_ip = 192.168.5.152 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 = 192.168.5.152:11211 EOF -----------------------------keystone认证---------------------------------------------------------- cat > /etc/swift/proxy-server.conf << EOF [DEFAULT] bind_port = 8080 bind_ip = 192.168.5.152 user = swift log_level = DEBUG log_facility = LOG_LOCAL1 [pipeline:main] pipeline = healthcheck cache authtoken keystone proxy-server [app:proxy-server] use = egg:swift#proxy allow_account_management = true 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 delay_auth_decision = 1 auth_port = 35357 auth_host = 192.168.5.152 auth_protocol = http service_protocol = http service_host = 192.168.5.152 service_port = 5000 admin_tenant_name = service admin_user = swift admin_password = 12345678 [filter:healthcheck] use = egg:swift#healthcheck [filter:cache] use = egg:swift#memcache memcache_servers = 192.168.5.152:11211 EOF 6、 创建swift日志配置文件 cat > /etc/rsyslog.d/10-swift.conf << EOF local1.* /var/log/swift/proxy.log EOF 7、 创建日志目录 mkdir -p /var/log/swift chown -R syslo.adm /var/log/swift 8、 重启日志服务进程 service rsyslog restart 9、 首先创建环 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 Note: 后面的数字第一个为存储分区数,第二个为备份次数,备份次数不能小于ZONE数目,第三个为延迟删除的时间,以小时为单位 10、向环里添加存储设备我前面配置了三台存储节点: |---------+------+-----------+-----------+------+--------| | Storage | Zone | IP | Server | Port | Device | |---------+------+-----------+-----------+------+--------| | 1 | 1 |192.168.5.155| account | 6012 | sdb1 | | | | | container | 6011 | sdb1 | | | | | object | 6010 | sdb1 | |---------+------+-----------+-----------+------+--------| | 2 | 2 |192.168.5.156 | account | 6012 | sdb1 | | | | | container | 6011 | sdb1 | | | | | object | 6010 | sdb1 | |---------+------+-----------+-----------+------+--------| | 3 | 3 |192.168.5.157 | account | 6012 | sdb1 | | | | | container | 6011 | sdb1 | | | | | object | 6010 | sdb1 | |---------+------+-----------+-----------+------+--------| cd /etc/swift swift-ring-builder account.builder add z1-192.168.5.155:6012/sdb1 100 swift-ring-builder container.builder add z1-192.168.5.155:6011/sdb1 100 swift-ring-builder object.builder add z1-192.168.5.155:6010/sdb1 100 swift-ring-builder account.builder add z2-192.168.5.156:6012/sdb1 100 swift-ring-builder container.builder add z2-192.168.5.156:6011/sdb1 100 swift-ring-builder object.builder add z2-192.168.5.156:6010/sdb1 100 swift-ring-builder account.builder add z3-192.168.5.157:6012/sdb1 100 swift-ring-builder container.builder add z3-192.168.5.157:6011/sdb1 100 swift-ring-builder object.builder add z3-192.168.5.157:6010/sdb1 100 Note: IP,端口,设备和前面的配置对应 11、 检验每个环里的条目 cd /etc/swift swift-ring-builder account.builder swift-ring-builder container.builder swift-ring-builder object.builder 应该得到类似这样的输出 account.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 Devices: id zone ip address port name weight partitions balance meta 0 1 192.168.5.155 6012 sdb1 100.00 262144 0.00 1 2 192.168.5.156 6012 sdb1 100.00 262144 0.00 2 3 192.168.5.157 6012 sdb1 100.00 262144 0.00 14、 平衡环 cd /etc/swift swift-ring-builder account.builder rebalance swift-ring-builder container.builder rebalance swift-ring-builder object.builder rebalance Note: 这个过程可能需要一些时间 Note: 这三条命令会产生以gz结尾的文件,这些文件就是所有节点要用到的环文件,可以用scp拷贝到其它各节点 Note: 如果创建环的时候指定的副本数大于环的数量,平衡环的时候可能会报类似下面的错误 ... in _initial_balance while available_devs[index]['zone'] in other_zones: IndexError: list index out of range 15、 分发新生成的环文件 scp /etc/swift/*.gz root@192.168.5.155:/etc/swift/ scp /etc/swift/*.gz root@192.168.5.156:/etc/swift/ scp /etc/swift/*.gz root@192.168.5.157:/etc/swift/ 16、 启动各节点相关的服务 # 代理节点 swift-init proxy start # 存储节点 swift-init all start 三、测试swift 1、得到an X-Storage-Url 和X-Auth-Token root@node11:/etc/swift# curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://192.168.5.152:8080/auth/v1.0 * About to connect() to 192.168.5.152 port 8080 (#0) * Trying 192.168.5.152... connected > GET /auth/v1.0 HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: 192.168.5.152:8080 > Accept: */* > X-Storage-User: test:tester > X-Storage-Pass: testing > < HTTP/1.1 200 OK < X-Storage-Url: http://192.168.5.152:8080/v1/AUTH_test < X-Storage-Token: AUTH_tk51644b8e782040f6ab788caa23ad6a1b < X-Auth-Token: AUTH_tk51644b8e782040f6ab788caa23ad6a1b < Content-Length: 0 < Date: Thu, 11 Oct 2012 07:47:53 GMT < * Connection #0 to host 192.168.5.152 left intact * Closing connection #0 root@node11:/etc/swift# curl -v -H 'X-Auth-Token: AUTH_tk51644b8e782040f6ab788caa23ad6a1b' http://192.168.5.152:8080/v1/AUTH_test * About to connect() to 192.168.5.152 port 8080 (#0) * Trying 192.168.5.152... connected > GET /v1/AUTH_test HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: 192.168.5.152:8080 > Accept: */* > X-Auth-Token: AUTH_tk51644b8e782040f6ab788caa23ad6a1b > < HTTP/1.1 204 No Content < X-Account-Object-Count: 0 < X-Account-Bytes-Used: 0 < X-Account-Container-Count: 0 < Accept-Ranges: bytes < Content-Length: 0 < Date: Thu, 11 Oct 2012 07:48:24 GMT < * Connection #0 to host 192.168.5.152 left intact * Closing connection #0 测试swift目前工作状态 swift -A http://192.168.5.152:8080/auth/v1.0 -U test:tester -K testing stat 将当前目录下test.txt文件上传到myfiles目录 swift -A http://192.168.5.152:8080/auth/v1.0 -U test:tester -K testing upload myfiles test.txt