安装Swift
Swift提供了弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。请在控制节点和存储节点安装Swift。
在控制节点安装和配置Swift
- 创建Swift服务凭证。
- 创建swift用户。
openstack user create --domain default --password-prompt swift
- 将用户swift添加到项目service中,并授予swift用户以admin角色。
openstack role add --project service --user swift admin
- 创建swift服务实体。
openstack service create --name swift --description "OpenStack Object Storage" object-store
密码请勿包含字符“#@$”,支持特殊字符“&=- _ . + ! * ()”
- 创建swift用户。
- 创建swift API端点。
openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1
- 安装软件包。
yum install openstack-swift-proxy python3-swiftclient python3-keystoneclient python3-keystonemiddleware memcached
- 配置proxy-server相关配置。Swift RPM包里已经包含了一个基本可用的proxy-server.conf,只需要手动修改其中的swift password即可。
- 打开文件。
vi /etc/swift/proxy-server.conf
- 按“i”进入编辑模式,修改变量。
[filter:authtoken] password = SWIFT_PASSWORD
SWIFT_PASSWORD为swift用户的密码。
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开文件。
在存储节点安装Swift
- 安装和配置存储支持的程序包。
yum install xfsprogs rsync
- 选择两个闲置的存储设备并格式化为XFS格式,以下命令示例中使用的是vdb、vdc,请根据实际情况修改。
mkfs.xfs -f /dev/vdb mkfs.xfs -f /dev/vdc
- 创建挂载点目录结构。
mkdir -p /srv/node/vdb mkdir -p /srv/node/vdc
- 找到新分区的UUID。
blkid
- 编辑“/etc/fstab”文件并将以下内容添加到其中。
UUID="<UUID-from-output-above>" /srv/node/vdb xfs noatime 0 2 UUID="<UUID-from-output-above>" /srv/node/vdc xfs noatime 0 2
- 挂载设备。
mount /srv/node/vdb mount /srv/node/vdc
- 可选:创建或编辑“/etc/rsyncd.conf”文件以包含以下内容。
如果用户不需要容灾功能,请跳过此步骤。
- 打开文件。
vi /etc/rsyncd.conf
- 修改文件,使文件包含以下内容。
[DEFAULT] 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
将MANAGEMENT_INTERFACE_IP_ADDRESS替换为当前节点上管理网络的IP地址。
- 打开文件。
- 启动rsyncd服务并配置它在系统启动时启动。
systemctl enable rsyncd.service systemctl start rsyncd.service
- 安装软件包。
yum install openstack-swift-account openstack-swift-container openstack-swift-object
- 修改“/etc/swift”目录中的account-server.conf、container-server.conf和object-server.conf文件,将bind_ip替换为当前节点上管理网络的IP地址。
- 确保挂载点目录结构的正确所有权。
chown -R swift:swift /srv/node
- 创建recon目录并确保其拥有正确的所有权。
mkdir -p /var/cache/swift chown -R root:swift /var/cache/swift chmod -R 775 /var/cache/swift
在控制节点配置环
- 创建账号环。
- 切换到“/etc/swift”目录。
cd /etc/swift
- 创建基础account.builder文件。
swift-ring-builder account.builder create 10 1 1
- 将每个存储节点添加到环中。
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
- 将STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS替换为存储节点上管理网络的IP地址。
- 将DEVICE_NAME替换为存储设备名称,如sda。
- DEVICE_WEIGHT表示设备搜索权重,表示该设备所在节点在哈希环中对应的虚拟节点数,一般取100。
- 验证环内容。
swift-ring-builder account.builder
- 重新平衡环。
swift-ring-builder account.builder rebalance
- 切换到“/etc/swift”目录。
- 创建容器环。
- 切换到“/etc/swift”目录。
cd /etc/swift
- 创建基础container.builder文件。
swift-ring-builder container.builder create 10 1 1
- 将每个存储节点添加到环中。
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
- 将STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS替换为存储节点上管理网络的IP地址。
- 将DEVICE_NAME替换为存储设备名称,如sda。
- DEVICE_WEIGHT表示设备搜索权重,表示该设备所在节点在哈希环中对应的虚拟节点数,一般取100。
- 验证环内容。
swift-ring-builder container.builder
- 重新平衡环。
swift-ring-builder container.builder rebalance
- 切换到“/etc/swift”目录。
- 创建对象环。
- 切换到“/etc/swift”目录。
cd /etc/swift
- 创建基础object.builder文件。
swift-ring-builder object.builder create 10 1 1
- 将每个存储节点添加到环中。
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
- 将STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS替换为存储节点上管理网络的IP地址。
- 将DEVICE_NAME替换为存储设备名称,如sda。
- DEVICE_WEIGHT表示设备搜索权重,表示该设备所在节点在哈希环中对应的虚拟节点数,一般取100。
- 验证环内容。
swift-ring-builder object.builder
- 重新平衡环。
swift-ring-builder object.builder rebalance
- 切换到“/etc/swift”目录。
- 安装Swift。
- 打开“/etc/swift/swift.conf”文件。
vi /etc/swift/swift.conf
- 按“i”进入编辑模式,添加如下内容,用唯一值替换test-hash。
[swift-hash] swift_hash_path_suffix = test-hash swift_hash_path_prefix = test-hash [storage-policy:0] name = Policy-0 default = yes
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 将swift.conf文件复制到每个存储节点和运行代理服务的任何其他节点上的“/etc/swift”目录。
- 在所有节点上,确保配置目录的正确所有权。
chown -R root:swift /etc/swift
- 在控制节点和运行代理服务的任何其他节点上,启动对象存储代理服务及其依赖项,并将它们配置为在系统启动时启动。
systemctl enable openstack-swift-proxy.service memcached.service systemctl start openstack-swift-proxy.service memcached.service
- 打开“/etc/swift/swift.conf”文件。
启动服务
在存储节点上,启动对象存储服务并将它们配置为在操作系统启动时启动。
systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service systemctl start openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service systemctl enable openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service systemctl start openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service systemctl start openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
父主题: 部署并验证