CentOS 6
Sponsored Link

OpenStack Grizzly - Swift 設定#3 (ストレージノード)2013/08/23

 
OpenStack Object Storage(Swift)の設定です。
Swift は、認証ノード、プロキシノード、ストレージノードで構成されます。
これまでの例では Keystone, Glance, Cinder, Nova, Horizon を全て一つのサーバーにインストールする All-in-One 構成で設定してきましたが、 Swift の設定は以下のようにノードごとにサーバーを用意して、計5台を使って設定してみることにします。 (構築済みの All-in-One サーバーを認証ノードとして利用することにします)
                               |
     +------------+            |            +-----------+
     |  Auth Node |10.0.0.30   |   10.0.0.31|   Proxy   |
     | (Keystone) |------------+------------|    Node   |
     +------------+            |            +-----------+
                               |
      +------------------------+-----------------------+
      |                        |                       |
      |10.0.0.51               |10.0.0.52              |10.0.0.53
+-----------+            +-----------+           +-----------+
|  Storage  |            |  Storage  |           |  Storage  |
|   Node1   |------------|   Node2   |-----------|   Node3   |
+-----------+            +-----------+           +-----------+

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

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

meta-data=/dev/sdb1              isize=1024   agcount=4, agsize=6553514 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=26214055, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

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

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

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

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

/dev/sdb1               /srv/node/device0       xfs     noatime,nodiratime,nobarrier 0 0
[3] Swift Ring ファイルを Swift Proxy (プロキシノード) からコピー
[root@proxy ~]#
scp /etc/swift/*.gz 10.0.0.51:/etc/swift/

The authenticity of host '10.0.0.51 (10.0.0.51)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:f3:ed:54.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.51' (RSA) to the list of known hosts.
root@10.0.0.51's password:
account.ring.gz                            100% 3867     3.8KB/s   00:00
container.ring.gz                          100% 3899     3.8KB/s   00:00
object.ring.gz                             100% 3877     3.8KB/s   00:00
[4] Swift Proxy (プロキシノード) からコピーしたSwift Ring ファイルの所有者を変更しておく
[root@node01 ~]#
chown swift. /etc/swift/*.gz

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

[swift-hash] swift_hash_path_suffix =
swift_shared_path
[root@node01 ~]#
vi /etc/swift/account-server.conf
# 2行目:自身のIPアドレスに変更

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/swift/container-server.conf
# 2行目:自身のIPアドレスに変更

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/swift/object-server.conf
# 2行目:自身のIPアドレスに変更

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/rsyncd.conf
# 以下のように新規作成

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 10.0.0.51

[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
[6] 各サービス起動
[root@node01 ~]#
chkconfig rsync on

[root@node01 ~]#
chkconfig xinetd on

[root@node01 ~]#
/etc/rc.d/init.d/xinetd start

Starting xinetd: [ OK ]
[root@node01 ~]#
for ringtype in account container object; do
    /etc/rc.d/init.d/openstack-swift-$ringtype start
    chkconfig openstack-swift-$ringtype on
    for service in replicator updater auditor; do
        if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then
            /etc/rc.d/init.d/openstack-swift-$ringtype-$service start
            chkconfig openstack-swift-$ringtype-$service on
        fi
    done
done
Starting swift-account-server:                             [  OK  ]
Starting swift-account-replicator:                         [  OK  ]
Starting swift-account-auditor:                            [  OK  ]
Starting swift-container-server:                           [  OK  ]
Starting swift-container-replicator:                       [  OK  ]
Starting swift-container-updater:                          [  OK  ]
Starting swift-container-auditor:                          [  OK  ]
Starting swift-object-server:                              [  OK  ]
Starting swift-object-replicator:                          [  OK  ]
Starting swift-object-updater:                             [  OK  ]
Starting swift-object-auditor:                             [  OK  ]
関連コンテンツ