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

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

#### 在控制节点安装Swift

1. 创建服务凭证。

```
source
~
/.admin-openrc
openstack user create --domain default --password-prompt swift
openstack role add --project service --user swift admin
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，只需要手动修改其中的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. 按“i”进入编辑模式，在文件中修改或添加如下内容。

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

  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
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
```
