---
title: 安装Swift
description: "Swift提供了弹性可伸缩、高可用的分布式对象存储服务，适合存储大规模非结构化数据。请在控制节点和存储节点安装Swift。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackwallaby_04_021.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackwallaby_04_021.html
indexId: 22ac663ebf432195064fb2f56e210bf6d794b4b626d39b54a073ac465651d8a084
---
# 安装Swift

Swift提供了弹性可伸缩、高可用的分布式对象存储服务，适合存储大规模非结构化数据。请在控制节点和存储节点安装Swift。

#### 在控制节点安装和配置Swift

1. 创建Swift服务凭证。

  a. 创建swift用户。

```
openstack user create --domain default --password-prompt swift
```


  b. 将用户swift添加到项目service中，并授予swift用户以admin角色。

```
openstack role add --project service --user swift admin
```


  c. 创建swift服务实体。

```
openstack service create --name swift --description "OpenStack Object Storage" object-store
```


密码请勿包含字符“#@$”，支持特殊字符“&=- _ . + ! * ()”


2. 创建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
```


3. 安装软件包。

```
yum install openstack-swift-proxy python3-swiftclient python3-keystoneclient python3-keystonemiddleware memcached
```


4. 配置proxy-server相关配置。Swift RPM包里已经包含了一个基本可用的proxy-server.conf，只需要手动修改其中的swift password即可。

  a. 打开文件。

```
vi /etc/swift/proxy-server.conf
```


  b. 按“i”进入编辑模式，修改变量。

```
[filter:authtoken]
password =
SWIFT_PASSWORD
```


    SWIFT_PASSWORD为swift用户的密码。

  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。


#### 在存储节点安装Swift

1. 安装和配置存储支持的程序包。

```
yum install xfsprogs rsync
```


  如果用户不需要容灾功能，2~6中只需要一个存储设备即可，同时可以跳过下面的rsync配置，即7~8。

2. 选择两个闲置的存储设备并格式化为XFS格式，以下命令示例中使用的是vdb、vdc，请根据实际情况修改。

```
mkfs.xfs -f /dev/vdb
mkfs.xfs -f /dev/vdc
```


3. 创建挂载点目录结构。

```
mkdir -p /srv/node/vdb
mkdir -p /srv/node/vdc
```


4. 找到新分区的UUID。

```
blkid
```


5. 编辑“/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
```


6. 挂载设备。

```
mount /srv/node/vdb
mount /srv/node/vdc
```


7. 可选：创建或编辑“/etc/rsyncd.conf”文件以包含以下内容。
如果用户不需要容灾功能，请跳过此步骤。


  a. 打开文件。

```
vi /etc/rsyncd.conf
```


  b. 修改文件，使文件包含以下内容。

```
[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地址。

8. 启动rsyncd服务并配置它在系统启动时启动。

```
systemctl enable rsyncd.service
systemctl start rsyncd.service
```


9. 安装软件包。

```
yum install openstack-swift-account openstack-swift-container openstack-swift-object
```


10. 修改“/etc/swift”目录中的account-server.conf、container-server.conf和object-server.conf文件，将bind_ip替换为当前节点上管理网络的IP地址。
11. 确保挂载点目录结构的正确所有权。

```
chown -R swift:swift /srv/node
```


12. 创建recon目录并确保其拥有正确的所有权。

```
mkdir -p /var/cache/swift
chown -R root:swift /var/cache/swift
chmod -R 775 /var/cache/swift
```


#### 在控制节点配置环

1. 创建账号环。

  a. 切换到“/etc/swift”目录。

```
cd /etc/swift
```


  b. 创建基础account.builder文件。

```
swift-ring-builder account.builder create 10 1 1
```


  c. 将每个存储节点添加到环中。

```
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。

  d. 验证环内容。

```
swift-ring-builder account.builder
```


  e. 重新平衡环。

```
swift-ring-builder account.builder rebalance
```


2. 创建容器环。

  a. 切换到“/etc/swift”目录。

```
cd /etc/swift
```


  b. 创建基础container.builder文件。

```
swift-ring-builder container.builder create 10 1 1
```


  c. 将每个存储节点添加到环中。

```
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。

  d. 验证环内容。

```
swift-ring-builder container.builder
```


  e. 重新平衡环。

```
swift-ring-builder container.builder rebalance
```


3. 创建对象环。

  a. 切换到“/etc/swift”目录。

```
cd /etc/swift
```


  b. 创建基础object.builder文件。

```
swift-ring-builder object.builder create 10 1 1
```


  c. 将每个存储节点添加到环中。

```
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。


  d. 验证环内容。

```
swift-ring-builder object.builder
```


  e. 重新平衡环。

```
swift-ring-builder object.builder rebalance
```


4. 安装Swift。

  a. 打开“/etc/swift/swift.conf”文件。

```
vi /etc/swift/swift.conf
```


  b. 按“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
```


  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  d. 将swift.conf文件复制到每个存储节点和运行代理服务的任何其他节点上的“/etc/swift”目录。
  e. 在所有节点上，确保配置目录的正确所有权。

```
chown -R root:swift /etc/swift
```


  f. 在控制节点和运行代理服务的任何其他节点上，启动对象存储代理服务及其依赖项，并将它们配置为在系统启动时启动。

```
systemctl enable openstack-swift-proxy.service memcached.service
systemctl start openstack-swift-proxy.service memcached.service
```


#### 启动服务

在存储节点上，启动对象存储服务并将它们配置为在操作系统启动时启动。
```
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
```
