Swift - Object Storage asennus
controller.foo.bar
1. Luodaan Swift-tunnus.
# keystone user-create --name swift --pass swift +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | b9b948f854274d0bb880f22c3df81fa4 | | name | swift | | username | swift | +----------+----------------------------------+
2. Lisätään Cinder-tunnukselle admin-rooli ja lisätään tunnus service tenant-ryhmään.
# keystone user-role-add --user swift --tenant service --role admin (Tämä komento ei oikeinkirjoitettuna tulosta mitään)
3. Luodaan Swift-service ja servicen tyypiksi object-storage.
# keystone service-create --name swift --type object-store \ --description "OpenStack Object Storage" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Object Storage | | enabled | True | | id | f40cf63b7b35461db75ef9276abe4a2d | | name | swift | | type | object-store | +-------------+----------------------------------+
4. Luodaan Swiftin endpointit.
# keystone endpoint-create --service-id $(keystone service-list | awk '/ object-store / {print $2}') \ --publicurl 'http://10.0.0.11:8080/v1/AUTH_%(tenant_id)s' \ --internalurl 'http://10.0.0.11:8080/v1/AUTH_%(tenant_id)s' \ --adminurl http://10.0.0.11:8080 --region regionOne +-------------+---------------------------------------------+ | Property | Value | +-------------+---------------------------------------------+ | adminurl | http://10.0.0.11:8080 | | id | 7704c9c44a2942c4be0d1892da19e036 | | internalurl | http://10.0.0.11:8080/v1/AUTH_%(tenant_id)s | | publicurl | http://10.0.0.11:8080/v1/AUTH_%(tenant_id)s | | region | regionOne | | service_id | f40cf63b7b35461db75ef9276abe4a2d | +-------------+---------------------------------------------+
5. Asennetaan Swift.
# apt-get install swift swift-proxy python-swiftclient python-keystonemiddleware
6. Muokataan /etc/swift/proxy-server.conf -tiedostoa. Huomaa, että filtteri-asetuksen edessä olevat risuaidat (#) täytyy myös kommentoida pois. esim. #[filter:authtoken]
[DEFAULT] ... bind_port = 8080 swift_dir = /etc/swift user = swift [pipeline:main] ... pipeline = authtoken cache healthcheck keystoneauth proxy-logging proxy-server [app:proxy-server] ... allow_account_management = true account_autocreate = true [filter:authtoken] ... paste.filter_factory = keystonemiddleware.auth_token:filter_factory auth_uri = http://10.0.0.11:5000/v2.0 identity_uri = http://10.0.0.11:35357 admin_tenant_name = service admin_user = swift admin_password = swift delay_auth_decision = true cache = swift.cache include_service_catalog = False [filter:keystoneauth] ... use = egg:swift#keystoneauth operator_roles = admin,_member_ [filter:cache] ... memcache_servers = 127.0.0.1:11211
7. Muutetaan hakemiston oikeuksia niin, että swift-tunnuksella on käyttöoikeus hakemistoon.
# chmod 0700 /var/cache/swift/
object.foo.bar
8. Asennetaan rsync.
# apt-get install xfsprogs rsync
9. Luodaan osio sdb-levylle fdiskillä ja luodaan xfs-tiedostojärjestelmä sdb1 -osiolle.
# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=16777152 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=67108608, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=32767, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
10. Luodaan /srv/node/sdb1 -hakemisto, lisätään levyn tiedot fstabiin ja liitetään levy järjestelmään.
# mkdir -p /srv/node/sdb1 # echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2" >> /etc/fstab # mount /srv/node/sdb1
11. Luodaan /etc/rsyncd.conf -tiedosto:
uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 10.0.0.51 [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
12. Aktivoidaan rsync /etc/default/rsync -tiedostosta.
RSYNC_ENABLE=true
13. Käynnistetään rsync.
# service rsync start
14. Asenntetaan swift ja swift-pluginit.
# apt-get install swift swift-account swift-container swift-object
15. Muokataan /etc/swift/account-server.conf -tiedostoa.
[DEFAULT] bind_ip = 10.0.0.51 bind_port = 6002 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = false [pipeline:main] pipeline = healthcheck recon account-server [filter:recon] recon_cache_path = /var/cache/swift
16. Muokataan /etc/swift/container-server.conf -tiedostoa.
[DEFAULT] bind_ip = 10.0.0.51 bind_port = 6001 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = false [pipeline:main] pipeline = healthcheck recon container-server [filter:recon] recon_cache_path = /var/cache/swift
17. Muokataan /etc/swift/object-server.conf -tiedostoa.
[DEFAULT] bind_ip = 10.0.0.51 bind_port = 6000 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = false [pipeline:main] pipeline = healthcheck recon object-server [filter:recon] recon_cache_path = /var/cache/swift
18. Muutetaan swift hakemistojen omistajaksi ja ryhmäksi, ja poistetaan oikeudet muilta käyttäjiltä.
# chown -R swift:swift /srv/node # chown -R swift:swift /var/cache/swift # chmod 0700 /var/cache/swift/
controller.foo.bar
19. Siirrytään /etc/swift -hakemistono ja luodaan
# swift-ring-builder account.builder create 10 3 1 # swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdb1 100 Device d0r1z1-10.0.0.51:6002R10.0.0.51:6002/sdb1_"" with 100.0 weight got id 0 # swift-ring-builder account.builder rebalance Reassigned 1024 (100.00%) partitions. Balance is now 0.00.
# swift-ring-builder container.builder create 10 3 1 # swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdb1 100 Device d0r1z1-10.0.0.51:6001R10.0.0.51:6001/sdb1_"" with 100.0 weight got id 0 # swift-ring-builder container.builder rebalance Reassigned 1024 (100.00%) partitions. Balance is now 0.00.
# swift-ring-builder object.builder create 10 3 1 # swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdb1 100 Device d0r1z1-10.0.0.51:6000R10.0.0.51:6000/sdb1_"" with 100.0 weight got id 0 # swift-ring-builder object.builder rebalance swift-ring-builder object.builder rebalance
20. Kopioidaan account.ring.gz, container.ring.gz, ja object.ring.gz -tiedostot /etc/swift -hakemistoon, kaikille storage node:ille ja node:ille, joissa on swift-proxy -palvelu.
# scp *.gz user@10.0.0.51:/etc/swift
object.foo.bar
21. Muokataan /etc/swift/swift.conf -tiedostoa, johon määritellään swift_hash_path_suffix ja swift_hash_path_prefix -arvot. Nämä kaksi arvoa tulee pitää tallessa, salassa, eikä näitä saa vaihtaa.
[swift-hash] swift_hash_path_suffix = 7ba31e4d3238212bbcaa swift_hash_path_prefix = 79e221c062335ea25f40 [storage-policy:0] name = Policy-0 default = yes
22. Muutetaan /etc/swift -hakemiston omistajaksi ja ryhmäksi swift, ja uudelleenkäynnistetään swiftin -palvelut.
# chown -R swift:swift /etc/swift # swift-init all start
controller.foo.bar
23. Uudelleenkäynnistetään memcached ja swift-proxy.
# service memcached restart # swift-init proxy-server start Starting proxy-server...(/etc/swift/proxy-server.conf)
24. Testataan Swiftin toiminta.
# . ./demorc.sh # swift stat Account: AUTH_8e5fb3fc3c1f4c1fbfccdb68dc86e9ce Containers: 0 Objects: 0 Bytes: 0 X-Put-Timestamp: 1476091790.62288 Connection: keep-alive X-Timestamp: 1476091790.62288 X-Trans-Id: txf0987eca7f114d11a517a-0057fb5f8e Content-Type: text/plain; charset=utf-8 # swift upload demo-container1 FILE FILE # swift list demo-container1 # swift download demo-container1 FILE FILE [auth 0.142s, headers 0.239s, total 0.239s, 0.001 MB/s]