CentOS 7
Sponsored Link

OpenStack Pike : Swift 設定#3 (Storage ノード)
2017/09/07
 
OpenStack Object Storage(Swift)を設定します。
当例では以下のような環境を例に Swift サービスを設定します。
-+---------------+----------------------------+------------
 |               |                            |
 |           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      |
     +-----------------------+    +-----------------------+    +-----------------------+

 
Storage ノードの設定をします。
Storage ノードは、基本的に台数分全て同じ設定で OK ですが、IPアドレスやデバイス名の数字については異なりますので、それぞれ注意して変更ください。
なお、当例では、Storage ノードとするサーバーにディスクを増設し、[/dev/sdb1] にパーティションを作成して設定しています。
[1] 全 Storage ノード で Swift-Account, Swift-Container, Swift-Object 等々をインストールします。
# Pike, EPEL からインストール

[root@snode01 ~]#
yum --enablerepo=centos-openstack-pike,epel -y install openstack-swift-account openstack-swift-container openstack-swift-object xfsprogs rsync openssh-clients
[2] 全 Storage ノード でディスクの空き領域を XFS でフォーマットし、[/srv/node] にマウントします。 ( [device*] の数字は Storage ノードごとに異なる箇所です)
[root@snode01 ~]#
mkfs.xfs -i size=1024 -s size=4096 /dev/sdb1

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

[root@snode01 ~]#
mkdir -p /srv/node/device0

[root@snode01 ~]#
mount -o noatime,nodiratime,nobarrier /dev/sdb1 /srv/node/device0

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

[root@snode01 ~]#
vi /etc/fstab
# 最終行に追記

/dev/sdb1               /srv/node/device0       xfs     noatime,nodiratime,nobarrier 0 0
[3] Proxy ノードから 全 Storage ノードへ Swift Ring ファイルをコピーします。
[root@proxy ~]#
scp /etc/swift/*.gz 10.0.0.71:/etc/swift/

root@10.0.0.71's password:
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] 全 Storage ノードで Swift および Rsync の設定をします。
[root@snode01 ~]#
chown swift. /etc/swift/*.gz

[root@snode01 ~]#
vi /etc/swift/swift.conf
# プロキシノードに設定したものと同じ値

[swift-hash]
swift_hash_path_suffix =
swift_shared_path
swift_hash_path_prefix = swift_shared_path
[root@snode01 ~]#
vi /etc/swift/account-server.conf
# 6行目:変更

bind_ip =
0.0.0.0

bind_port = 6202
[root@snode01 ~]#
vi /etc/swift/container-server.conf
# 6行目:変更

bind_ip =
0.0.0.0

bind_port = 6201
[root@snode01 ~]#
vi /etc/swift/object-server.conf
# 6行目:変更

bind_ip =
0.0.0.0

bind_port = 6200
[root@snode01 ~]#
vi /etc/rsyncd.conf
# 最終行に追記

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
# それぞれのノードのIPアドレスを指定
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
[5] Storage ノードで SELinux を有効にしている場合は、ポリシーの変更が必要です。 デバイス名の数字はそのれぞのノードのものに置き換えてください。
[root@snode01 ~]#
semanage fcontext -a -t swift_data_t /srv/node/device0

[root@snode01 ~]#
restorecon /srv/node/device0
[6] Storage ノードで Firewalld を有効にしている場合は、サービスポートの許可が必要です。
[root@snode01 ~]#
firewall-cmd --add-port={873/tcp,6200/tcp,6201/tcp,6202/tcp} --permanent

success
[root@snode01 ~]#
firewall-cmd --reload

success
[7] 各サービスを起動します。
[root@snode01 ~]#
systemctl start rsyncd

[root@snode01 ~]#
systemctl enable rsyncd

[root@snode01 ~]#
for ringtype in account container object; do
    systemctl start openstack-swift-$ringtype
    systemctl enable openstack-swift-$ringtype
    for service in replicator updater auditor; do
        if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then
            systemctl start openstack-swift-$ringtype-$service
            systemctl enable openstack-swift-$ringtype-$service
        fi
    done
done 
 
Tweet