====== Installazione Swift ====== * Autore originale: **Giacinto Donvito** * Formattazione: **Matteo Panella** ===== Installazione pacchetti ===== # apt-get install swift openssh-server rsync memcached python-netifaces python-xattr python-memcache # apt-get install swift-account swift-container swift-object xfsprogs # apt-get install swift-proxy memcached python-keystoneclient python-swiftclient python-webob ===== Configurazione dello storage locale ===== # mkfs.xfs /dev/vdb1 # echo "/dev/vdb1 /srv/node/vdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab # mkdir -p /srv/node/vdb1 # mount /srv/node/vdb1 # chown -R swift:swift /srv/node Creare il file ''/etc/rsyncd.conf'' con il seguente contenuto: uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = [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 Modificare il file /etc/default/rsync: RSYNC_ENABLE = true Generazione dei certificati (self-signed) per SSL: # cd /etc/swift # openssl req -new -x509 -nodes -out cert.crt -keyout cert.key Modificare il file ''/etc/memcached.conf'' apportando il seguente cambiamento: -l 127.0.0.1 to -l Riavviare memcached: # service memcached restart Creare il file di configurazione ''/etc/swift/proxy-server.conf'' come dettagliato sotto. Creare la signing_dir: # mkdir -p /home/swift/keystone-signing # chown -R swift:swift /home/swift/keystone-signing ===== Configurazione dei servizi di storage ===== ==== Creazione dei ring ==== # swift-ring-builder account.builder add z1-$SWIFT_NODE_IP:6002/vdb1 100 # swift-ring-builder container.builder add z1-$SWIFT_NODE_IP:6001/vdb1 100 # swift-ring-builder object.builder add z1-$SWIFT_NODE_IP:6000/vdb1 100 ==== Files di configurazione dei servizi ==== ''/etc/swift/object-server.conf'': [DEFAULT] bind_ip = 0.0.0.0 workers = 2 [pipeline:main] pipeline = object-server [app:object-server] use = egg:swift#object [object-replicator] [object-updater] [object-auditor] ''/etc/swift/account-server.conf'': [DEFAULT] bind_ip = 0.0.0.0 workers = 2 [pipeline:main] pipeline = account-server [app:account-server] use = egg:swift#account [account-replicator] [account-auditor] [account-reaper] ''/etc/swift/container-server.conf'': [DEFAULT] bind_ip = 0.0.0.0 workers = 2 [pipeline:main] pipeline = container-server [app:container-server] use = egg:swift#container [container-replicator] [container-updater] [container-auditor] ''/etc/swift/proxy-server.conf'': [DEFAULT] bind_port = 8080 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 = $CONTROLLER_NODE_PUBLIC_IP auth_port = 35357 # the same admin_token as provided in keystone.conf admin_token = openstack # the service tenant and swift userid and password created in Keystone admin_tenant_name = service admin_user = swift admin_password = $SWIFT_USER_PASSWORD [filter:cache] use = egg:swift#memcache [filter:catch_errors] use = egg:swift#catch_errors [filter:healthcheck] use = egg:swift#healthcheck Lista dei files in ''/etc/swift/'': root@swift:/etc/swift# ls -ltr total 6216 -rw-r--r-- 1 swift swift 183 Apr 9 09:02 object-server.conf -rw-r--r-- 1 swift swift 201 Apr 9 09:02 container-server.conf -rw-r--r-- 1 swift swift 188 Apr 9 09:02 account-server.conf -rw-r--r-- 1 swift swift 113 Jun 12 13:52 swift.conf -rw-r--r-- 1 root root 916 Jun 12 14:00 cert.key -rw-r--r-- 1 root root 1131 Jun 12 14:00 cert.crt lrwxrwxrwx 1 root root 28 Jun 12 14:53 swift-proxy.conf -> /etc/swift/proxy-server.conf -rw-r--r-- 1 root root 1150 Jun 12 15:32 proxy-server.conf -rw-r--r-- 1 root root 1724 Jun 13 14:05 account.ring.gz -rw-r--r-- 1 root root 2099711 Jun 13 14:05 account.builder -rw-r--r-- 1 root root 1725 Jun 13 14:05 container.ring.gz -rw-r--r-- 1 root root 2099709 Jun 13 14:05 container.builder -rw-r--r-- 1 root root 1722 Jun 13 14:06 object.ring.gz -rw-r--r-- 1 root root 2099709 Jun 13 14:06 object.builder drwxr-xr-x 2 root root 4096 Jun 13 14:06 backups -rw-r--r-- 1 root root 222 Jun 13 14:58 novarc ===== Test della configurazione ===== ==== Configurazione variabili di autenticazione ==== # export OS_TENANT_NAME=admin # export OS_USERNAME=admin # export OS_PASSWORD=$SWIFT_USER_PASSWORD # export OS_AUTH_URL="http://$CONTROLLER_NODE_PUBLIC_IP:5000/v2.0/" ==== Test lato client ==== root@swift:/etc/swift# swift stat giacinto prova_big_file Account: AUTH_d9e5b6880a444d2986c691652e53674f Container: giacinto Object: prova_big_file Content Type: application/octet-stream Content Length: 480247808 Last Modified: Fri, 14 Jun 2013 07:46:13 GMT ETag: 19882d2dce6140c6033c514e91e49e37 Meta Orig-Filename: proxmox-ve_3.0-f8f25665-10.iso Accept-Ranges: bytes X-Timestamp: 1371195973.28637