1. Tổng quan.
Phần này mô tả cách cài đặt và cấu hình dịch vụ proxy xử lý các yêu cầu đối với các dịch vụ account, container và object hoạt động trên các Controller Node.
Tài liệu tham khảo: https://docs.openstack.org/swift/latest/install/
Để đơn giản, hướng dẫn này sẽ cài đặt và cấu hình dịch vụ proxy trên Controller Node. Tuy nhiên, bạn có thể chạy dịch vụ proxy trên bất kỳ node nào có kết nối mạng với các Storage Node. Ngoài ra, bạn có thể cài đặt và cấu hình dịch vụ proxy trên nhiều node để tăng hiệu suất và tính dự phòng. Để biết thêm thông tin, hãy bấm vào đây.
Lưu ý rằng cài đặt và cấu hình khác nhau tùy theo phân phối, hướng dẫn này dành cho hệ điều hành Ubuntu.
2. Cách dịch vụ proxy trong OpenStack Swift hoạt động.
Dịch vụ proxy phụ thuộc vào một cơ chế xác thực và ủy quyền, như dịch vụ Identity của OpenStack. Dịch vụ Identity quản lý người dùng, role và quyền truy cập trong môi trường OpenStack.
Tuy nhiên, không giống như các dịch vụ khác trong OpenStack, dịch vụ proxy cũng cung cấp một cơ chế nội bộ cho phép nó hoạt động mà không cần đến bất kỳ dịch vụ OpenStack nào khác. Điều này có thể hữu ích trong các tình huống mà bạn chỉ muốn sử dụng Swift mà không cần đến toàn bộ hệ sinh thái OpenStack.
Trước khi bạn cấu hình dịch vụ Object Storage (Swift), bạn phải tạo thông tin xác thực dịch vụ và một API endpoint. API endpoint là URL mà các dịch vụ khác trong OpenStack sẽ sử dụng để giao tiếp với Swift.
Dịch vụ Object Storage (Swift) không sử dụng cơ sở dữ liệu SQL trên controller node. Thay vào đó, nó sử dụng SQLite phân tán trên mỗi controller node. SQLite là một hệ thống quản lý cơ sở dữ liệu SQL nhẹ nhàng, không cần một máy chủ cơ sở dữ liệu riêng biệt để hoạt động. Mỗi storage node sẽ có cơ sở dữ liệu SQLite riêng của nó, cho phép Swift hoạt động mà không cần đến một cơ sở dữ liệu trung tâm.
2.1. Sử dụng quyền admin để truy cập vào CLI.
. admin-openrc
2.2. Để tạo thông tin xác thực dịch vụ, hãy hoàn thành các bước sau:
Tạo swift
user với mật khẩu là SWIFT_PASS
.
shell> openstack user create --domain default --password SWIFT_PASS swift
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | d535e5cbd2b74ac7bfb97db9cced3ed6 |
| name | swift |
+-----------+----------------------------------+
Thêm quyền admin cho swift
user (lệnh này không có output).
openstack role add --project service --user swift admin
Tạo service swift
.
shell> openstack service create --name swift \
--description "OpenStack Object Storage" object-store
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Object Storage |
| enabled | True |
| id | 75ef509da2c340499d454ae96a2c5c34 |
| name | swift |
| type | object-store |
+-------------+----------------------------------+
Tạo các API endpoint cho dịch vụ swift
.
shell> openstack endpoint create --region RegionOne \
object-store public http://controller:8080/v1/AUTH_%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 12bfd36f26694c97813f665707114e0d |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
| service_name | swift |
| service_type | object-store |
| url | http://controller:8080/v1/AUTH_%(project_id)s |
+--------------+----------------------------------------------+
shell> openstack endpoint create --region RegionOne \
object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 7a36bee6733a4b5590d74d3080ee6789 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
| service_name | swift |
| service_type | object-store |
| url | http://controller:8080/v1/AUTH_%(project_id)s |
+--------------+----------------------------------------------+
shell> openstack endpoint create --region RegionOne \
object-store admin http://controller:8080/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | ebb72cd6851d4defabc0b9d71cdca69b |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
| service_name | swift |
| service_type | object-store |
| url | http://controller:8080/v1 |
+--------------+----------------------------------+
3. Cài đặt và cấu hình các thành phần Swift.
Các file cấu hình mặc định có thể khác nhau tùy theo bản phân phối Linux mà bạn đang sử dụng. Ví dụ, một file cấu hình trên Ubuntu có thể khác với file cấu hình tương tự trên CentOS.
Khi bạn cấu hình một dịch vụ, bạn có thể cần phải thêm các phần và tùy chọn mới vào file cấu hình, thay vì chỉ sửa đổi các phần và tùy chọn hiện có.
Khi bạn thấy dấu ba chấm (…) trong một đoạn cấu hình, điều này chỉ ra rằng có các tùy chọn cấu hình mặc định mà bạn nên giữ nguyên. Điều này giúp đảm bảo rằng bạn không vô tình thay đổi một tùy chọn quan trọng nào đó khi cấu hình dịch vụ.
Cài đặt các packages.
apt-get install swift swift-proxy python3-swiftclient \
python3-keystoneclient python3-keystonemiddleware \
memcached -y
Ghi chú: Môi trường OpenStack hoàn chỉnh có thể bao gồm một số gói này.
Tạo thư mục /etc/swift
.
mkdir /etc/swift
Lấy file cấu hình dịch vụ proxy từ Object Storage source repository:
curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/proxy-server.conf-sample
Hãy chỉnh sửa file /etc/swift/proxy-server.conf
ở các thành phần như sau:
Trong phần [DEFAULT]
.
[DEFAULT]
#...
bind_port = 8080
user = swift
swift_dir = /etc/swift
Trong phần [pipeline:main]
hãy xóa các modules tempurl
và tempauth
và thêm các modules authtoken
và keystoneauth
, lưu ý rằng không được thay đổi thứ tự của các modules.
Để biết thêm thông tin về các modules khác để kích hoạt các tính năng bổ sung sau này, hãy bấm vào đây.
[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
Trong phần [app:proxy-server]
bật tạo tài khoản tự động:
[app:proxy-server]
use = egg:swift#proxy
#...
account_autocreate = true
Lưu ý: account_autocreate = true
(không viết hoa chữ T nhé).
Trong phần [filter:keystoneauth]
hãy cấu hình vai trò của người vận hành:
[filter:keystoneauth]
use = egg:swift#keystoneauth
#...
operator_roles = admin,user
Trong phần [filter:authtoken]
cấu hình quyền truy cập dịch vụ xác thực danh tính (Identity)
:
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
#...
www_authenticate_uri = http://controller:5000/v3
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = swift
password = SWIFT_PASS
delay_auth_decision = True
Lưu ý: delay_auth_decision = True
(Chữ True của tùy chọn này bắt buộc viết hoa chữ T nhé).
Thay thế SWIFT_PASS bằng mật khẩu bạn đã tạo cho người dùng Swift trong Identity service.
Lưu ý: Hãy comment hoặc xóa các tùy chọn còn lại trong phần [filter:authtoken]
.
Trong phần [filter:cache] cấu hình memcached cho Swift.
[filter:cache]
use = egg:swift#memcache
#...
memcache_servers = controller:11211