گام3: حال میبایست Swift Ring fileها را از Swift Proxy Node به همه Storage Nodeها کپی نماییم. برای این منظور از دستور scp یا Secure Copy Protocol بصورت زیر استفاده خواهیم کرد:
# scp /etc/swift/*.gz 10.0.0.71:/etc/swift/
# scp /etc/swift/*.gz 10.0.0.71:/etc/swift/
گام4: در این مرحله میبایست به پیکربندی Swift و Rsync بر روی همه Storage Nodeها بپردازیم. برای این منظور میبایست بصورت زیر عمل نماییم:
# chown swift. /etc/swift/*.gz
# vi /etc/swift/swift.conf
# set the value which is set on Proxy Node
[swift-hash]
swift_hash_path_suffix = swift_shared_path
swift_hash_path_prefix = swift_shared_path
# vi /etc/swift/account-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6202
# vi /etc/swift/container-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6201
# vi /etc/swift/object-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6200
# vi /etc/rsyncd.conf
# add to the end
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
# chown swift. /etc/swift/*.gz
# vi /etc/swift/swift.conf
# set the value which is set on Proxy Node
[swift-hash]
swift_hash_path_suffix = swift_shared_path
swift_hash_path_prefix = swift_shared_path
# vi /etc/swift/account-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6202
# vi /etc/swift/container-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6201
# vi /etc/swift/object-server.conf
# line 6: change
bind_ip = 0.0.0.0
bind_port = 6200
# vi /etc/rsyncd.conf
# add to the end
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
گام5: بر روی Storage Node، اگر سرویس SELinux فعال است، میبایست policy آن را بصورت زیر تغییر دهید. فقط توجه داشته باشید که شماره device را بر روی هر Node میبایست تغییر دهید ("device*"):
# semanage fcontext -a -t swift_data_t /srv/node/device0
# restorecon /srv/node/device0
# semanage fcontext -a -t swift_data_t /srv/node/device0
# restorecon /srv/node/device0
گام6: اگر فایروال Firewalld بر روی سرور شما در حال اجراست، با استفاده از دستورات زیر به پورتهای: 873/TCP، 6200/TCP، 6201/TCP و 6202/TCP اجازده دسترسی بدهید:
# firewall-cmd —add-port={873/tcp,6200/tcp,6201/tcp,6202/tcp} —permanent
# firewall-cmd —reload
# firewall-cmd —add-port={873/tcp,6200/tcp,6201/tcp,6202/tcp} —permanent
# firewall-cmd —reload
گام7: حال میبایست Swift سرویسها را بصورت زیر start نمایید:
# systemctl start rsyncd
# systemctl enable rsyncd
# 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
# systemctl start rsyncd
# systemctl enable rsyncd
# 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
چطور از Swift استفاده کنیم؟
در بخشهای قبل با مراحل نصب و راهاندازی و همچنین پیکربندی Swift به عنوان OpenStack Object Storage آشنا شدیم، حال این سوال پیش میآید که چطور میتوان از Swift Storage برای کلاینتها استفاده کرد؟ جهت پاسخ به این سوال سناریو شکل 34-15 را مشاهده نمایید. این سناریو همان سناریو قبل است با این تفاوت که یک Client را نیز به آن اضافه کردهایم.
در بخشهای قبل با مراحل نصب و راهاندازی و همچنین پیکربندی Swift به عنوان OpenStack Object Storage آشنا شدیم، حال این سوال پیش میآید که چطور میتوان از Swift Storage برای کلاینتها استفاده کرد؟ جهت پاسخ به این سوال سناریو شکل 34-15 را مشاهده نمایید. این سناریو همان سناریو قبل است با این تفاوت که یک Client را نیز به آن اضافه کردهایم.
برای این منظور میبایست گامهای زیر را دنبال نمایید:
گام1: ابتدا میبایست کاربری را برای استفاده از Swift بر روی سرور Control Node که پیشتر کامپوننت Keystone را بر روی آن نصب و پیکربندی کردهایم، اضافه نماییم. در این روش، اگر شما میخواهید که به سرعت از Swift استفاده نماییم، نیازی به اضافه کردن یک user جدید نیست و میتوانید از کاربر admin یا swift user موجود بر روی Keystone نیز استفاده نمایید.
• جهت اضافه کردن swiftservice project
# openstack project create —domain default —description "Swift Service Project" swiftservice
گام1: ابتدا میبایست کاربری را برای استفاده از Swift بر روی سرور Control Node که پیشتر کامپوننت Keystone را بر روی آن نصب و پیکربندی کردهایم، اضافه نماییم. در این روش، اگر شما میخواهید که به سرعت از Swift استفاده نماییم، نیازی به اضافه کردن یک user جدید نیست و میتوانید از کاربر admin یا swift user موجود بر روی Keystone نیز استفاده نمایید.
• جهت اضافه کردن swiftservice project
# openstack project create —domain default —description "Swift Service Project" swiftservice
• جهت اضافه کردن نقش SwiftOperator
# openstack role create SwiftOperator
# openstack role create SwiftOperator
• جهت اضافه کردن یک user
# openstack user create —domain default —project swiftservice —password userpassword swiftuser01
# openstack user create —domain default —project swiftservice —password userpassword swiftuser01