OpenStack Ocata : Swift 設定#3 (Storage ノード)2017/03/05 |
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 等々をインストールします。 |
[root@snode01 ~]# yum --enablerepo=centos-openstack-ocata,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 |
Sponsored Link |