Phần này mô tả cách cài đặt và cấu hình các node lưu trữ chứa các dịch vụ tài khoản, container và đối tượng. Để đơn giản, hướng dẫn này tham chiếu đến hai storage nodes mỗi nút chứa hai thiết bị lưu trữ khối địa phương trống. Hướng dẫn sử dụng /dev/sdb và /dev/sdc, nhưng bạn có thể thay thế các giá trị khác phù hợp với các nút của mình.
Mặc dù Object Storage hỗ trợ bất kỳ hệ thống file nào có các thuộc tính mở rộng (xattr), các bài kiểm tra và đánh giá hiệu suất cho thấy hiệu suất và độ tin cậy tốt nhất trên hệ thống file XFS. Để biết thêm thông tin về việc mở rộng ngang môi trường của bạn, xem Hướng dẫn triển khai.
Phần này áp dụng cho Ubuntu 14.04 (LTS) trở lên và Debian.
Yêu cầu tiên quyết Trước khi bạn cài đặt và cấu hình dịch vụ Object Storage trên các storage nodes, bạn phải chuẩn bị các thiết bị lưu trữ.
Lưu ý: Thực hiện các bước này trên mỗi storage nodes.
Các bước cài đặt và cấu hình được thực hiện trên Ubuntu 14.04 (LTS) và Debian. Đầu tiên, cần cài đặt các gói hỗ trợ:
apt-get install xfsprogs rsync -y
Tiếp theo, định dạng các thiết bị /dev/sdb và /dev/sdc bằng XFS:
# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
Sau đó, tạo cấu trúc thư mục điểm gắn kết:
# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc
Tìm UUID của các phân vùng mới:
# blkid
Chỉnh sửa file /etc/fstab và thêm các thông số sau đây:
UUID="<UUID-from-output-above>" /srv/node/sdb xfs noatime 0 2
UUID="<UUID-from-output-above>" /srv/node/sdc xfs noatime 0 2
Tiếp theo, gắn kết các thiết bị:
# mount /srv/node/sdb
# mount /srv/node/sdc
Sau đó, tạo hoặc chỉnh sửa file /etc/rsyncd.conf để chứa các thông số cấu hình cho dịch vụ đồng bộ hóa file rsync:
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = MANAGEMENT_INTERFACE_IP_ADDRESS
[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock
[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock
[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock
Cần thay thế MANAGEMENT_INTERFACE_IP_ADDRESS bằng địa chỉ IP của mạng quản lý trên nút lưu trữ.
Cuối cùng, chỉnh sửa file /etc/default/rsync và bật dịch vụ rsync:
RSYNC_ENABLE=true
Điều này cho phép dịch vụ rsync được chạy tự động khi khởi động hệ thống. Sau khi chỉnh sửa xong, lưu lại file và khởi động dịch vụ rsync bằng lệnh:
service rsync start
Với những bước này, bạn đã cài đặt và cấu hình các nút lưu trữ trên Object Storage trên Ubuntu 14.04 hoặc Debian.
Cài đặt và cấu hình các thành phần hệ thống.
Tiếp theo trong quá trình triển khai Swift Object Storage, ta cần cài đặt và cấu hình các thành phần của Swift trên từng node lưu trữ.
Lưu ý: Các file cấu hình mặc định khác nhau tùy theo bản phân phối. Bạn có thể cần thêm các phần và tùy chọn này thay vì sửa đổi các phần và tùy chọn hiện có. Ngoài ra, dấu ba chấm (…) trong các đoạn mã cấu hình chỉ ra các tùy chọn cấu hình mặc định có thể bạn nên giữ lại.
Lưu ý: Thực hiện các bước này trên mỗi node lưu trữ.
Đầu tiên, ta cần cài đặt các gói cần thiết bằng lệnh sau:
apt-get install swift swift-account swift-container swift-object -y
Sau đó, ta cần lấy các file cấu hình cho các dịch vụ tài khoản, container và object từ kho lưu trữ nguồn Object Storage:
# curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/account-server.conf-sample
# curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/container-server.conf-sample
# curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/object-server.conf-sample
Sau đó, ta cần chỉnh sửa file cấu hình cho các dịch vụ tài khoản, container và object.
Trong file /etc/swift/account-server.conf, ta cần thực hiện các hành động sau:
- Trong phần [DEFAULT], cấu hình địa chỉ IP liên kết, cổng liên kết, người dùng, thư mục cấu hình và thư mục điểm gắn:
[DEFAULT]
...
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
Thay thế MANAGEMENT_INTERFACE_IP_ADDRESS bằng địa chỉ IP của mạng quản lý trên node lưu trữ.
Trong phần [pipeline:main], bật các module thích hợp:
[pipeline:main]
pipeline = healthcheck recon account-server
Lưu ý: Để biết thêm thông tin về các module khác cho phép các tính năng bổ sung, hãy xem Hướng dẫn triển khai.
Trong phần [filter:recon], cấu hình thư mục cache recon (meters):
[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
Tiếp theo, ta cần chỉnh sửa file cấu hình cho dịch vụ container trong /etc/swift/container-server.conf
, với các hành động sau:
- Trong phần
[DEFAULT]
, ta cần cấu hình địa chỉ IP và port để bind cho dịch vụ, tên user được sử dụng bởi dịch vụ, thư mục cấu hình và điểm mount của thiết bị:
[DEFAULT]
...
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
Ở đây, MANAGEMENT_INTERFACE_IP_ADDRESS
sẽ được thay thế bằng địa chỉ IP của mạng quản lý trên storage node.
- Trong phần
[pipeline:main]
, ta cần kích hoạt các modules phù hợp để dịch vụ container hoạt động:
[pipeline:main]
pipeline = healthcheck recon container-serve
Ngoài các modules này, ta có thể kích hoạt thêm các modules khác để thêm tính năng cho dịch vụ container, chi tiết về các modules này có thể được tìm thấy trong Deployment Guide.
- Trong phần
[filter:recon]
, ta cần cấu hình thư mục cache của recon (meters):
[filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
Như đã đề cập trước đó, recon (meters) được sử dụng để theo dõi các hoạt động của hệ thống và đảm bảo tính sẵn sàng của các node. Thư mục cache này sẽ được sử dụng để lưu trữ các thông tin thu thập được bởi recon.
Sau khi cấu hình các file cấu hình cho các dịch vụ, ta cần tiến hành chủ động thiết lập quyền sở hữu cho các thư mục mount point. Để làm điều này, ta sử dụng lệnh sau trên terminal:
chown -R swift:swift /srv/node
Lệnh này sẽ gán quyền sở hữu cho tất cả các file và thư mục trong /srv/node cho người dùng và nhóm swift.
Tiếp theo, ta sẽ tạo thư mục recon trong /var/cache/swift và đảm bảo quyền sở hữu cho nó. Để thực hiện điều này, ta sử dụng các lệnh sau:
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift
Lệnh đầu tiên sẽ tạo thư mục recon trong /var/cache/swift. Lệnh thứ hai sẽ gán quyền sở hữu cho thư mục này cho người dùng root và nhóm swift. Cuối cùng, lệnh thứ ba sẽ thiết lập quyền truy cập vào thư mục cho người dùng và nhóm swift.
Create and distribute initial rings
Trước khi bắt đầu dịch vụ Lưu trữ Đối tượng, bạn phải tạo tài khoản ban đầu, đồng thời tạo các ring (nhẫn) cho container và đối tượng. Ring builder sẽ tạo ra các file cấu hình mà mỗi nút sử dụng để xác định và triển khai kiến trúc lưu trữ. Để đơn giản, hướng dẫn này sử dụng một khu vực và hai vùng với tối đa 2^10 (1024) phân vùng, 3 bản sao cho mỗi đối tượng và thời gian tối thiểu là 1 giờ giữa các lần di chuyển phân vùng. Đối với Lưu trữ Đối tượng, một phân vùng chỉ định một thư mục trên thiết bị lưu trữ thay vì bảng phân vùng thông thường. Để biết thêm thông tin, xem Hướng dẫn Triển khai.
Hãy thực hiện các bước sau trên controller node.
Tạo account ring cho Object Storage services.
Account ring được sử dụng để duy trì danh sách các container. Để tạo account ring, trước hết, ta cần tạo file cơ bản “account.builder” bằng lệnh sau:
swift-ring-builder account.builder create 10 3 1
Tiếp theo, ta cần thêm mỗi node lưu trữ vào ring bằng lệnh:
swift-ring-builder account.builder \
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6202 \
--device DEVICE_NAME --weight DEVICE_WEIGHT
Trong đó, thay thế STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS bằng địa chỉ IP của mạng quản lý trên node lưu trữ và thay thế DEVICE_NAME bằng tên thiết bị lưu trữ trên cùng một node.
Sau đó, ta cần lặp lại lệnh trên cho mỗi thiết bị lưu trữ trên mỗi node lưu trữ.
Cuối cùng, để kiểm tra nội dung của ring, ta chạy lệnh:
swift-ring-builder account.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdb --weight 100
Sau đó, ta cần lặp lại lệnh trên cho mỗi thiết bị lưu trữ trên mỗi node lưu trữ.
# swift-ring-builder account.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdb --weight 100
Device d0r1z1-10.0.0.51:6202R10.0.0.51:6202/sdb_"" with 100.0 weight got id 0
# swift-ring-builder account.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdc --weight 100
Device d1r1z2-10.0.0.51:6202R10.0.0.51:6202/sdc_"" with 100.0 weight got id 1
# swift-ring-builder account.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6202 --device sdb --weight 100
Device d2r1z3-10.0.0.52:6202R10.0.0.52:6202/sdb_"" with 100.0 weight got id 2
# swift-ring-builder account.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6202 --device sdc --weight 100
Device d3r1z4-10.0.0.52:6202R10.0.0.52:6202/sdc_"" with 100.0 weight got id 3
Cuối cùng, để kiểm tra nội dung của ring, ta chạy lệnh:
# swift-ring-builder account.builder
account.builder, build version 4
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1
The overload factor is 0.00% (0.000000)
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
0 1 1 10.0.0.51 6202 10.0.0.51 6202 sdb 100.00 0 -100.00
1 1 1 10.0.0.51 6202 10.0.0.51 6202 sdc 100.00 0 -100.00
2 1 2 10.0.0.52 6202 10.0.0.52 6202 sdb 100.00 0 -100.00
3 1 2 10.0.0.52 6202 10.0.0.52 6202 sdc 100.00 0 -100.00
Nếu muốn cân bằng lại ring, ta chạy lệnh:
# swift-ring-builder account.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
Việc cân bằng ring sẽ đảm bảo rằng các partitions (tương ứng với thư mục trên thiết bị lưu trữ) được phân bổ đồng đều trên các node lưu trữ để đảm bảo tính sẵn sàng cao cho Object Storage services.
Tạo container ring
Máy chủ container sử dụng container ring để duy trì danh sách các đối tượng. Tuy nhiên, nó không theo dõi vị trí đối tượng.
Chuyển đến thư mục /etc/swift.
Tạo file container.builder cơ bản:
swift-ring-builder container.builder create 10 3 1
Lưu ý: Lệnh này không cung cấp bất kỳ đầu ra nào.
Thêm từng nút lưu trữ vào ring bằng lệnh “swift-ring-builder” để thêm các thiết bị lưu trữ vào Swift Ring Builder. Cụ thể, đoạn văn mô tả cách thêm các thiết bị lưu trữ trên các node lưu trữ khác nhau, mỗi node có một thiết bị lưu trữ /dev/sdb và trọng số (weight) của thiết bị là 100.
Để thêm một thiết bị lưu trữ, ta sử dụng lệnh “swift-ring-builder container.builder add” kèm các tham số cần thiết như sau:
- –region: định nghĩa khu vực lưu trữ
- –zone: định nghĩa vùng lưu trữ
- –ip: địa chỉ IP của node lưu trữ
- –port: cổng sử dụng trên node lưu trữ
- –device: thiết bị lưu trữ được sử dụng trên node lưu trữ
- –weight: trọng số của thiết bị lưu trữ
Sau khi thực hiện lệnh trên, hệ thống sẽ cung cấp cho chúng ta một id duy nhất để xác định thiết bị lưu trữ vừa được thêm vào Swift Ring Builder. Nhớ thay ĐỊA_CHỈ_IP_GIAO_DIỆN_QUẢN_LÝ_NÚT_LƯU_TRỮ bằng địa chỉ IP của mạng quản lý trên nút lưu trữ. Thay TÊN_THIẾT_BỊ bằng tên thiết bị lưu trữ trên cùng một nút lưu trữ.
swift-ring-builder container.builder \
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6201 \
--device DEVICE_NAME --weight DEVICE_WEIGHT
Ví dụ, sử dụng thiết bị lưu trữ /dev/sdb và trọng lượng là 100 trên nút lưu trữ đầu tiên trong cài đặt và cấu hình các nút lưu trữ với thiết bị lưu trữ /dev/sdb và trọng lượng là 100:
swift-ring-builder container.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdb --weight 100
Lặp lại lệnh này cho mỗi thiết bị lưu trữ trên từng nút lưu trữ. Trong kiến trúc ví dụ, sử dụng lệnh trong bốn biến thể:
# swift-ring-builder container.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdb --weight 100
Device d0r1z1-10.0.0.51:6201R10.0.0.51:6201/sdb_"" with 100.0 weight got id 0
# swift-ring-builder container.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdc --weight 100
Device d1r1z2-10.0.0.51:6201R10.0.0.51:6201/sdc_"" with 100.0 weight got id 1
# swift-ring-builder container.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6201 --device sdb --weight 100
Device d2r1z3-10.0.0.52:6201R10.0.0.52:6201/sdb_"" with 100.0 weight got id 2
# swift-ring-builder container.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6201 --device sdc --weight 100
Device d3r1z4-10.0.0.52:6201R10.0.0.52:6201/sdc_"" with 100.0 weight got id 3
Sau khi đã thêm tất cả các storage device vào ring, ta sử dụng lệnh sau để kiểm tra nội dung của ring:
# swift-ring-builder container.builder
container.builder, build version 4
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1
The overload factor is 0.00% (0.000000)
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
0 1 1 10.0.0.51 6201 10.0.0.51 6201 sdb 100.00 0 -100.00
1 1 1 10.0.0.51 6201 10.0.0.51 6201 sdc 100.00 0 -100.00
2 1 2 10.0.0.52 6201 10.0.0.52 6201 sdb 100.00 0 -100.00
3 1 2 10.0.0.52 6201 10.0.0.52 6201 sdc 100.00 0 -100.00
Lệnh swift-ring-builder container.builder rebalance
có tác dụng cân bằng lại các phân vùng trên các thiết bị lưu trữ trong Ring để đảm bảo rằng mỗi thiết bị chứa số lượng phân vùng tương đương và sử dụng bộ nhớ lưu trữ một cách hiệu quả. Khi thêm hoặc xóa một thiết bị lưu trữ khỏi Ring, hoặc thay đổi trọng số của một thiết bị, cân bằng lại Ring là rất cần thiết để đảm bảo rằng hệ thống Swift hoạt động hiệu quả và tránh tình trạng quá tải trên một số thiết bị lưu trữ. Khi cân bằng lại Ring, các phân vùng sẽ được chuyển từ các thiết bị bị quá tải sang các thiết bị trống để đạt được sự cân bằng giữa các thiết bị trong Ring.
# swift-ring-builder container.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
Create object ring
Máy chủ object ring sử dụng object ring container để duy trì danh sách các đối tượng. Tuy nhiên, nó không theo dõi vị trí đối tượng.
Chuyển đến thư mục /etc/swift.
Tạo file container.builder cơ bản:
swift-ring-builder object.builder create 10 3 1
Lệnh này không cung cấp bất kỳ đầu ra nào.
Tiếp theo để thêm một storage node vào ring builder của object. Bằng cách sử dụng lệnh này, chúng ta có thể thêm các storage node vào để lưu trữ các đối tượng (objects) trên Swift Object Storage.
Cụ thể, để thêm một storage node, ta sử dụng lệnh swift-ring-builder object.builder add
. Trong lệnh này, ta cần cung cấp thông tin về region, zone, địa chỉ IP, port, tên thiết bị (device) và trọng số (weight) của storage node đó.
Việc thêm storage node này vào ring builder sẽ giúp Swift Object Storage có thể phân phối các đối tượng (objects) trên các storage node trong hệ thống.
swift-ring-builder object.builder \
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6200 \
--device DEVICE_NAME --weight DEVICE_WEIGHT
sử dụng lệnh swift-ring-builder để cấu hình và tạo các đối tượng cho hệ thống lưu trữ phân tán Swift. Để thực hiện việc này, bạn cần thay thế địa chỉ IP của mạng quản lý trên node lưu trữ và tên thiết bị lưu trữ với tên và địa chỉ IP của thiết bị lưu trữ cụ thể trên node lưu trữ đó.
swift-ring-builder object.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdb --weight 100
Sau đó, bạn thực hiện lệnh swift-ring-builder để tạo các đối tượng cho hệ thống lưu trữ phân tán. Bạn cần lặp lại lệnh này cho từng thiết bị lưu trữ trên từng node lưu trữ khác nhau. Sau khi tạo xong các đối tượng, bạn kiểm tra nội dung của vòng lưu trữ để xác nhận chúng.
# swift-ring-builder object.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdb --weight 100
Device d0r1z1-10.0.0.51:6200R10.0.0.51:6200/sdb_"" with 100.0 weight got id 0
# swift-ring-builder object.builder add \
--region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdc --weight 100
Device d1r1z2-10.0.0.51:6200R10.0.0.51:6200/sdc_"" with 100.0 weight got id 1
# swift-ring-builder object.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6200 --device sdb --weight 100
Device d2r1z3-10.0.0.52:6200R10.0.0.52:6200/sdb_"" with 100.0 weight got id 2
# swift-ring-builder object.builder add \
--region 1 --zone 2 --ip 10.0.0.52 --port 6200 --device sdc --weight 100
Device d3r1z4-10.0.0.52:6200R10.0.0.52:6200/sdc_"" with 100.0 weight got id 3
Lệnh “swift-ring-builder object.builder” được sử dụng để tạo và quản lý các ring (như object ring, account ring và container ring) cho hệ thống Swift, một hệ thống lưu trữ đối tượng phân tán mã nguồn mở. Ring chứa thông tin về các thiết bị lưu trữ dữ liệu và phân vùng được sử dụng để lưu trữ các đối tượng. Lệnh này cho phép bạn thêm hoặc xoá các thiết bị lưu trữ khỏi ring, cân bằng các phân vùng giữa các thiết bị lưu trữ và tạo lại các ring nếu cần thiết.
# swift-ring-builder object.builder
object.builder, build version 4
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1
The overload factor is 0.00% (0.000000)
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
0 1 1 10.0.0.51 6200 10.0.0.51 6200 sdb 100.00 0 -100.00
1 1 1 10.0.0.51 6200 10.0.0.51 6200 sdc 100.00 0 -100.00
2 1 2 10.0.0.52 6200 10.0.0.52 6200 sdb 100.00 0 -100.00
3 1 2 10.0.0.52 6200 10.0.0.52 6200 sdc 100.00 0 -100.00
Nếu muốn cân bằng lại các phân vùng trong vòng lưu trữ, bạn có thể sử dụng lệnh swift-ring-builder rebalance.
# swift-ring-builder object.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
Cuối cùng, bạn sao chép các file account.ring.gz, container.ring.gz và object.ring.gz vào thư mục /etc/swift trên mỗi node lưu trữ và bất kỳ node bổ sung nào chạy dịch vụ proxy.
Hoàn tất cài đặt cho Ubuntu và Debian
Bước này hướng dẫn cách cài đặt và cấu hình Swift Object Storage trên hệ điều hành Ubuntu 14.04 (LTS) và Debian. Để làm điều này, các bước cần thực hiện là:
- Tải file cấu hình mẫu swift.conf từ kho lưu trữ nguồn của Object Storage bằng lệnh curl:
curl -o /etc/swift/swift.conf \
https://opendev.org/openstack/swift/raw/branch/master/etc/swift.conf-sample
- Chỉnh sửa file cấu hình swift.conf theo các hướng dẫn, bao gồm:
- Trong phần [swift-hash], cấu hình tiền tố và hậu tố đường dẫn băm cho môi trường của bạn. Ví dụ:
[swift-hash]
...
swift_hash_path_suffix = HASH_PATH_SUFFIX
swift_hash_path_prefix = HASH_PATH_PREFIX
Lưu ý: Giữ các giá trị này bí mật và không được thay đổi hoặc mất chúng.
- Trong phần [storage-policy:0], cấu hình chính sách lưu trữ mặc định:
[storage-policy:0]
...
name = Policy-0
default = yes
- Sao chép file swift.conf đến thư mục /etc/swift trên mỗi nút lưu trữ và bất kỳ nút bổ sung nào chạy dịch vụ proxy.
- Trên tất cả các nút, đảm bảo sự sở hữu đúng của thư mục cấu hình:
chown -R root:swift /etc/swift
5. Trên nút điều khiển và bất kỳ nút nào khác chạy dịch vụ proxy, khởi động lại dịch vụ proxy Object Storage kèm các phụ thuộc của nó:
# service memcached restart
# service swift-proxy restart
6. Trên các nút lưu trữ, khởi động các dịch vụ Object Storage:
# swift-init all start
Lưu ý: Nút lưu trữ chạy nhiều dịch vụ Object Storage và lệnh swift-init giúp quản lý chúng dễ dàng hơn. Bạn có thể bỏ qua các lỗi từ các dịch vụ không chạy trên nút lưu trữ.
Xác minh hoạt động của dịch vụ Object Storage.
Lưu ý: Thực hiện các bước này trên nút điều khiển. Nếu bạn đang sử dụng Red Hat Enterprise Linux 7 hoặc CentOS 7 và một hoặc nhiều bước không hoạt động, hãy kiểm tra file /var/log/audit/audit.log để tìm các thông báo SELinux cho thấy từ chối các hành động cho các quy trình swift. Nếu có, hãy thay đổi bối cảnh bảo mật của thư mục /srv/node thành mức bảo mật thấp nhất (s0) cho loại swift_data_t, vai trò object_r và người dùng system_u:
chcon -R system_u:object_r:swift_data_t:s0 /srv/node
Kích hoạt các credentials demo để thực hiện các lệnh sau.
. demo-openrc
Kiểm tra trạng thái swift.
$ swift stat
Account: AUTH_ed0b60bf607743088218b0a533d5943f
Containers: 0
Objects: 0
Bytes: 0
X-Account-Project-Domain-Id: default
X-Timestamp: 1444143887.71539
X-Trans-Id: tx1396aeaf17254e94beb34-0056143bde
X-Openstack-Request-Id: tx1396aeaf17254e94beb34-0056143bde
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
Tiếp theo chúng ta tạo ra một container trong dịch vụ Object Storage bằng OpenStack CLI trên máy chủ điều khiển:
$ openstack container create container1
+---------------------------------------+------------+------------------------------------+
| account | container | x-trans-id |
+---------------------------------------+------------+------------------------------------+
| AUTH_ed0b60bf607743088218b0a533d5943f | container1 | tx8c4034dc306c44dd8cd68-0056f00a4a |
+---------------------------------------+------------+------------------------------------+
Tải lên một file thử nghiệm vào container1 bằng lệnh openstack object create container1 FILE
. Tên FILE
ở đây là tên file cục bộ cần tải lên.
$ openstack object create container1 FILE
+--------+------------+----------------------------------+
| object | container | etag |
+--------+------------+----------------------------------+
| FILE | container1 | ee1eca47dc88f4879d8a229cc70a07c6 |
+--------+------------+----------------------------------+
Liệt kê các file trong container1 bằng lệnh openstack object list container1
.
$ openstack object list container1
+------+
| Name |
+------+
| FILE |
+------+
Tải xuống một file thử nghiệm từ container1 bằng lệnh openstack object save container1 FILE
. Tên FILE
ở đây là tên file trong container1 cần tải xuống. Lưu ý rằng lệnh này sẽ không hiển thị bất kỳ đầu ra nào.
$ openstack object save container1 FILE