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]