安装配置并验证Swift
Swift对象存储,负责存储和检索随机非结构化的数据对象。因为多副本和弹性扩展等特点,使其具备高度容错功能。与传统的数据存储目录树形式有区别,对象和文件数据保存在多个驱动器中。
配置名称解析
在控制节点和存储节点执行以下操作。
- 将第一个存储节点的主机名称设置为object1。
1
hostnamectl set-hostname object1
如果有多个对象存储节点则依次设置为object2,object3…本实例中仅使用一个对象存储节点。
- 编辑配置文件“vim /etc/hosts”文件,需要包含以下内容:
1 2 3
172.168.201.11 controller 172.168.201.12 compute 172.168.201.13 object1
- 重新启动系统以激活更改。
先决环境配置(控制节点)
在控制节点执行以下操作。
- 使用admin用户登录OpenStack命令行。
1
source /etc/keystone/admin-openrc
- 创建Identity Service凭据。
- 创建swift用户。
1
openstack user create --domain default --password-prompt swift
- 将admin角色添加到swift用户。
1
openstack role add --project service --user swift admin
- 创建swift服务实体。
1
openstack service create --name swift --description "OpenStack Object Storage" object-store
- 创建swift用户。
- 创建对象存储服务API端点。
1 2 3
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
安装和配置组件(控制节点)
在控制节点执行以下操作。
- 安装包。
1
yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
- 从对象存储源存储库获取代理服务配置文件。
1
curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/proxy-server.conf-sample --insecure
OpenStack Rocky版本需把stein换成相应的rocky。
- 编辑配置文件“/etc/swift/proxy-server.conf”并完成以下操作:
1
vim /etc/swift/proxy-server.conf
- 配置绑定端口,用户和配置目录。
1 2 3 4
[DEFAULT] bind_port = 8080 user = swift swift_dir = /etc/swift
- 在该[pipeline:main]部分中,删除“tempurl”和“tempauth”模块并添加“authtoken”和“keystoneauth”模块。
1 2
[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
- 在该[app:proxy-server]部分中,启用自动账户创建。
1 2 3
[app:proxy-server] use = egg:swift#proxy account_autocreate = True
- 在该[filter:keystoneauth]部分中,配置操作员角色。
1 2 3
[filter:keystoneauth] use = egg:swift#keystoneauth operator_roles = admin,user
- 在该[filter:authtoken]部分中,配置身份服务访问(注释掉或删除该[filter:authtoken] 部分中的任何其他配置项)。
1 2 3 4 5 6 7 8 9 10 11 12
[filter:authtoken] paste.filter_factory = keystonemiddleware.auth_token:filter_factory www_authenticate_uri = http://controller:5000 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 = <PASSWORD> delay_auth_decision = True
为方便理解,本文将涉及到的密码全部以“<PASSWORD>”代替,请用户根据实际情况进行修改。此处密码是在先决环境配置(控制节点)中,为swift用户创建的密码。
- 在该[filter:cache]部分中,配置memcached位置。
1 2 3
[filter:cache] use = egg:swift#memcache memcache_servers = controller:11211
- 配置绑定端口,用户和配置目录。
先决环境配置(存储节点)
在存储节点执行以下操作。
- 安装支持实用程序包。
1
yum -y install xfsprogs rsync
- 格式化“/dev/sdb”和“/dev/sdc”设备的XFS。
1 2
mkfs.xfs /dev/sdb mkfs.xfs /dev/sdc
sdb和sdc不能是系统盘,是需要另外添加的硬盘。
- 创建挂载点目录结构。
1 2
mkdir -p /srv/node/sdb mkdir -p /srv/node/sdc
- 编辑“/etc/fstab”文件并将以下内容添加到其中。
1 2
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2 /dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
- 安装设备。
1 2
mount /dev/sdb /srv/node/sdb mount /dev/sdc /srv/node/sdc
- 创建或编辑“/etc/rsyncd.conf”文件以包含以下内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 172.168.201.13 [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
address为存储节点的管理网络的IP地址。
- 启动rsyncd服务并将其配置为在系统引导时启动。
1 2
systemctl enable rsyncd.service systemctl start rsyncd.service
安装和配置组件(存储节点)
在存储节点执行以下操作。
- 如果没有安装过,需要先安装OpenStack Stein包,否则下一步无法安装。
- 清空Yum缓存。
1
yum clean all
- 安装OpenStack Stein软件包。
1
yum -y install centos-release-openstack-stein
OpenStack Rocky版本请装相应的软件包。
yum -y install centos-release-openstack-rocky
- 清空Yum缓存。
- 安装Swift软件包。
1 2
yum -y install openstack-swift-account openstack-swift-container \ openstack-swift-object
- 从对象存储源存储库获取记帐,容器和对象服务配置文件。
1 2 3
curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/account-server.conf-sample curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/container-server.conf-sample curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/object-server.conf-sample
OpenStack Rocky版本需把stein换成相应的rocky。
- 编辑配置文件“/etc/swift/account-server.conf”并完成以下操作:
1
vim /etc/swift/account-server.conf
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
1 2 3 4 5 6 7
[DEFAULT] bind_ip = 172.168.201.13 bind_port = 6202 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = True
bind_ip为存储节点上管理网络的IP地址。
- 在该[pipeline:main]部分中,启用相应的模块。
1 2
[pipeline:main] pipeline = healthcheck recon account-server
- 在该[filter:recon]部分中,配置recon(米)缓存目录。
1 2 3
[filter:recon] use = egg:swift#recon recon_cache_path = /var/cache/swift
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
- 编辑配置文件“/etc/swift/container-server.conf”并完成以下操作:
1
vim /etc/swift/container-server.conf
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
1 2 3 4 5 6 7
[DEFAULT] bind_ip = 172.168.201.13 bind_port = 6201 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = True
bind_ip为存储节点上管理网络的IP地址。
- 在该[pipeline:main]部分中,启用相应的模块。
1 2
[pipeline:main] pipeline = healthcheck recon container-server
- 在该[filter:recon]部分中,配置recon缓存目录。
1 2 3
[filter:recon] use = egg:swift#recon recon_cache_path = /var/cache/swift
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
- 编辑配置文件“/etc/swift/object-server.conf”并完成以下操作:
1
vim /etc/swift/object-server.conf
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
1 2 3 4 5 6 7
[DEFAULT] bind_ip = 172.168.201.13 bind_port = 6200 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = True
bind_ip为存储节点上管理网络的IP地址。
- 在该[pipeline:main]部分中,启用相应的模块。
1 2
[pipeline:main] pipeline = healthcheck recon object-server
- 在该[filter:recon]部分中,配置recon(米)缓存和锁定目录。
1 2 3 4
[filter:recon] use = egg:swift#recon recon_cache_path = /var/cache/swift recon_lock_path = /var/lock
- 确保安装点目录结构的正确所有权。
1 2
chown -R swift:swift /srv/node sudo restorecon -R /srv
- 创建recon目录并设置其权限。
1 2 3
mkdir -p /var/cache/swift chown -R root:swift /var/cache/swift chmod -R 775 /var/cache/swift
- 在本[DEFAULT]节中,配置绑定IP地址,绑定端口,用户,配置目录和挂载点目录。
创建账户环
在控制节点执行以下操作。
- 切换到“/etc/swift”目录。
1
cd /etc/swift
- 创建基本account.builder文件。
1
swift-ring-builder account.builder create 10 2 1
- 将每个存储节点添加到环中。
1 2
swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6202 --device sdb --weight 100 swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6202 --device sdc --weight 100
此处--ip后面为存储节点的管理IP地址。
- 验证账户环环内容。
1
swift-ring-builder account.builder
- 重新平衡环。
1
swift-ring-builder account.builder rebalance
创建容器环
在控制节点执行以下操作。
- 切换到“/etc/swift”目录。
1
cd /etc/swift
- 创建基本container.builder文件。
1
swift-ring-builder container.builder create 10 2 1
- 将每个存储节点添加到环中。
1 2
swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6201 --device sdb --weight 100 swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6201 --device sdc --weight 100
此处--ip后面为存储节点的管理IP地址。
- 验证容器环内容。
1
swift-ring-builder container.builder
- 重新平衡环。
1
swift-ring-builder container.builder rebalance
创建对象环
在控制节点执行以下操作。
- 切换到“/etc/swift”目录。
1
cd /etc/swift
- 创建基本“object.builder”文件。
1
swift-ring-builder object.builder create 10 2 1
- 将每个存储节点添加到环中:
1 2
swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdb --weight 100 swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.168.201.13 --port 6200 --device sdc --weight 100
此处--ip后面为存储节点的管理IP地址。
- 验证对象环内容。
1
swift-ring-builder object.builder
- 重新平衡环。
1
swift-ring-builder object.builder rebalance
分配环配置文件
在控制节点执行以下操作。
将生成的副本“account.ring.gz”、“container.ring.gz”以及“object.ring.gz”文件复制到“/etc/swift”每个存储节点和运行代理服务的任何其他节点上目录。
1 2 |
cd /etc/swift/ scp -r ./*.gz root@object1:/etc/swift/ |
修改配置
在控制节点执行以下操作。
- “/etc/swift/swift.conf”从Object Storage源存储库获取文件。
1
curl -o /etc/swift/swift.conf \https://opendev.org/openstack/swift/raw/branch/stable/stein/etc/swift.conf-sample
OpenStack Rocky版本需把stein换成相应的rocky。
- 编辑配置文件“/etc/swift/swift.conf”并完成以下操作:
1
vim /etc/swift/swift.conf
- 在该[swift-hash]部分中,为您的环境配置哈希路径前缀和后缀。
1 2 3
[swift-hash] swift_hash_path_suffix = <PASSWORD> swift_hash_path_prefix = <PASSWORD>
此处的两个<PASSWORD>可以换成任意唯一字符串。
- 在该[storage-policy:0]部分中,配置默认存储策略。
1 2 3
[storage-policy:0] name = Policy-0 default = yes
- 在该[swift-hash]部分中,为您的环境配置哈希路径前缀和后缀。
- 将swift.conf文件复制到每个存储节点上的“/etc/swift”目录下面,如果有多个控制节点,也需要复制到其他控制节点上的“/etc/swift”目录下。
启动服务
在控制节点和存储节点执行以下操作。
- 在所有节点上,确保配置目录的正确所有权。
1
chown -R root:swift /etc/swift
- 在控制器节点和运行代理服务的任何其他节点上,启动对象存储代理服务(包括其依赖项)并将其配置为在系统引导时启动。
1 2
systemctl enable openstack-swift-proxy.service memcached.service systemctl start openstack-swift-proxy.service memcached.service
- 在存储节点上,启动对象存储服务并将其配置为在系统引导时启动。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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 status 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 status 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 systemctl status openstack-swift-object.service openstack-swift-object-auditor.service \ openstack-swift-object-replicator.service openstack-swift-object-updater.service
验证
在控制节点执行以下操作。
- 使用admin用户登录OpenStack命令行。
1
source /etc/keystone/admin-openrc
- 显示服务状态。
1
swift stat
- 创建container1容器。
1
openstack container create container1
- 将测试文件上传到container1容器。
1
openstack object create container1 FILE
- 列出container1容器中的文件。
1
openstack object list container1
- 从container1容器下载测试文件。
1
openstack object save container1 FILE
Swift常用命令
命令行 |
功能描述 |
---|---|
swift stat |
显示swift服务状态 |
openstack container create container1 |
创建存储容器 |
openstack object create container1 FILE |
上传文件到存储容器 |
openstack container delete container1 |
删除存储容器 |
openstack object list container1 |
列出容器中的文件 |
openstack object save container1 FILE |
从容器中下载文件 |