Debian 11 Bullseye
Sponsored Link

OpenStack Victoria : Configure Swift (Storage Node)2021/09/02

 
Configure OpenStack Object Storage (Swift).
This example is based on the environment like follows.
------------+---------------------------+-------------+---
            |                           |             |
        eth0|10.0.0.30              eth0|10.0.0.50    |
+-----------+-----------+   +-----------+-----------+ |
|    [ Control Node ]   |   |    [  Proxy Node  ]   | |
|                       |   |                       | |
|  MariaDB    RabbitMQ  |   |      Swift Proxy      | |
|  Memcached  httpd     |   |                       | |
|  Keystone             |   |                       | |
+-----------------------+   +-----------------------+ |
                                                      |
------------+---------------------------+-------------+-------------+-----------
        eth0|10.0.0.71              eth0|10.0.0.72              eth0|10.0.0.73
+-----------+-----------+   +-----------+-----------+   +-----------+-----------+
|   [ Storage Node#1 ]  |   |   [ Storage Node#2 ]  |   |   [ Storage Node#3 ]  |
|                       |   |                       |   |                       |
|     Swift-Account     |   |     Swift-Account     |   |     Swift-Account     |
|    Swift-Container    |   |    Swift-Container    |   |    Swift-Container    |
|     Swift-Object      |   |     Swift-Object      |   |     Swift-Object      |
+-----------------------+   +-----------------------+   +-----------------------+

 
Configure Storage Node on this section.
It's OK to set the same settings mostly on all Storage Nodes, but only IP address are different each other.
For storage partition, it needs enough size of free area on disks to create new partitions.
[1] Install Swift-Account, Swift-Container, Swift-Object and others on all Storage Node like follows.
root@snode01:~#
apt -y install swift swift-account swift-container swift-object xfsprogs
[2] Format free space of disk ([/dev/sdb1] on this example) with XFS and mount on [/srv/node/device] on all Storage Node like follows.
root@snode01:~#
mkfs.xfs -i size=1024 -s size=4096 /dev/sdb1

meta-data=/dev/sdb1              isize=1024   agcount=4, agsize=5242816 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=20971264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=10239, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

root@snode01:~#
mkdir -p /srv/node/device

root@snode01:~#
mount -o noatime,nodiratime /dev/sdb1 /srv/node/device

root@snode01:~#
chown -R swift. /srv/node

root@snode01:~#
vi /etc/fstab
# add to the end

/dev/sdb1               /srv/node/device       xfs     noatime,nodiratime 0 0
[3] Copy Swift Ring files from the Swift Proxy Node to all Storage Nodes.
root@proxy:~#
scp /etc/swift/*.gz 10.0.0.71:/etc/swift/

account.ring.gz                    100% 3912     3.8KB/s   00:00
container.ring.gz                  100% 3904     3.8KB/s   00:00
object.ring.gz                     100% 3895     3.8KB/s   00:00
[4] Configure Swift and Rsync on all Storage Nodes.
root@snode01:~#
chown swift. /etc/swift/*.gz

root@proxy:~#
vi /etc/swift/swift.conf
# line 9,10 : change (set the same value which is set on Proxy Node)

[swift-hash]
swift_hash_path_suffix =
swift_shared_path

swift_hash_path_prefix =
swift_shared_path
root@snode01:~#
vi /etc/swift/account-server.conf
# line 2,3 : confirm settings like follows

# bind_ip = 0.0.0.0
bind_port = 6202
root@snode01:~#
vi /etc/swift/container-server.conf
# line 2,3 : confirm settings like follows

# bind_ip = 0.0.0.0
bind_port = 6201
root@snode01:~#
vi /etc/swift/object-server.conf
# line 2,3 : confirm settings like follows

# bind_ip = 0.0.0.0
bind_port = 6200
root@snode01:~#
vi /etc/rsyncd.conf
# create new

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
# specify the IP address of each storage node
address = 10.0.0.71

[account]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/account.lock

[container]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/container.lock

[object]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/object.lock

[swift_server]
path            = /etc/swift
read only       = true
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 5
lock file =     /var/lock/swift_server.lock

root@snode01:~#
vi /etc/default/rsync
# line 14 : change

RSYNC_ENABLE=
true
root@snode01:~#
touch /var/log/swift/{swift-account,swift-container}.log

root@snode01:~#
chown -R swift:adm /var/log/swift

[5] Start Swift services.
root@snode01:~#
systemctl restart rsync swift-account-auditor \
swift-account-replicator \
swift-account \
swift-container-auditor \
swift-container-replicator \
swift-container-updater \
swift-container \
swift-object-auditor \
swift-object-replicator \
swift-object-updater \
swift-object
root@snode01:~#
systemctl enable rsync swift-account-auditor \
swift-account-replicator \
swift-account \
swift-container-auditor \
swift-container-replicator \
swift-container-updater \
swift-container \
swift-object-auditor \
swift-object-replicator \
swift-object-updater \
swift-object
Matched Content