(九)OpenStack---M版---双节点搭建---Swift安装和配置(单存储节点)

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: (九)OpenStack---M版---双节点搭建---Swift安装和配置(单存储节点)

↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓

》》》》》》传送门

↓↓↓↓↓↓↓↓视频已上线阿里云开发者社区云视频↓↓↓↓↓↓↓↓

》》》》》》传送门

本次搭建仅采用Compute单节点做swift组件

1.Controller安装并配置控制节点

2.Compute安装和配置存储节点

3.Compute节点安装并配置组件

4.Controller节点创建,分发并初始化rings

5.启动服务

6.Controller执行验证操作

1.Controller安装并配置控制节点

1.获得凭证并创建身份认证服务的凭证

# . /root/admin-openrc

# openstack user create --domain default --password 000000 swift
# openstack role add --project service --user swift admin

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

在这里插入图片描述

2.创建对象存储服务 API 端点

# openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s

# openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s

# openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1

在这里插入图片描述
在这里插入图片描述

3.安装并配置组件

[root@controller ~]# yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached

编辑文件 /etc/swift/proxy-server.conf,删除原有内容,直接添加如下内容

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


[DEFAULT]
bind_port = 8080
swift_dir = /etc/swift
user = swift
[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]
use = egg:swift#proxy
account_autocreate = True
[filter:tempauth]
use = egg:swift#tempauth
user_admin_admin = admin .admin .reseller_admin
user_test_tester = testing .admin
user_test2_tester2 = testing2 .admin
user_test_tester3 = testing3
user_test5_tester5 = testing5 service
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = 000000
delay_auth_decision = True
[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin,user
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:cache]
memcache_servers = controller:11211
use = egg:swift#memcache
[filter:ratelimit]
use = egg:swift#ratelimit
[filter:domain_remap]
use = egg:swift#domain_remap
[filter:catch_errors]
use = egg:swift#catch_errors
[filter:cname_lookup]
use = egg:swift#cname_lookup
[filter:staticweb]
use = egg:swift#staticweb
[filter:tempurl]
use = egg:swift#tempurl
[filter:formpost]
use = egg:swift#formpost
[filter:name_check]
use = egg:swift#name_check
[filter:list-endpoints]
use = egg:swift#list_endpoints
[filter:proxy-logging]
use = egg:swift#proxy_logging
[filter:bulk]
use = egg:swift#bulk
[filter:slo]
use = egg:swift#slo
[filter:dlo]
use = egg:swift#dlo
[filter:container-quotas]
use = egg:swift#container_quotas
[filter:account-quotas]
use = egg:swift#account_quotas
[filter:gatekeeper]
use = egg:swift#gatekeeper
[filter:container_sync]
use = egg:swift#container_sync
[filter:xprofile]
use = egg:swift#xprofile
[filter:versioned_writes]
use = egg:swift#versioned_writes

编辑文件/etc/swift/swift.conf 删除原有内容,添加如下内容

# vi /etc/swift/swift.conf

[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]
添加权限

# chown -R root:swift /etc/swift

在这里插入图片描述

2.Compute安装和配置存储节点

1.安装软件包
[root@compute ~]# yum -y install xfsprogs rsync openstack-swift-account openstack-swift-container openstack-swift-object
2.使用XFS格式化/dev/sdc`设备

搭建Swift存储节点需要一块空盘,此处我们查看添加的空盘

# lsblk

在这里插入图片描述
创建分区

# fdisk /dev/sdc

在这里插入图片描述

# mkfs.xfs  /dev/sdc1

在这里插入图片描述

3.创建挂载点目录结构
[root@compute ~]# mkdir -p /swift/node

在这里插入图片描述

4.编辑/etc/fstab文件并添加以下内容
# vi /etc/fstab

/dev/sdc1 /swift/node xfs noatime,nodiratime,nobarrier,logbufs=8 0 0

在这里插入图片描述

5.挂载设备
[root@compute ~]# mount /dev/sdc1 /swift/node/

在这里插入图片描述

6.编辑/etc/rsyncd.conf文件并添加以下内容
[root@compute ~]#vi /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 127.0.0.1
[account]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/account.lock
[container]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/container.lock
[object]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/object.lock
[swift_server]
path            = /etc/swift
read only       = true
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 5
lock file =     /var/lock/swift_server.lock

在这里插入图片描述

7.启动 “rsyncd” 服务和配置它随系统启动
# systemctl start rsyncd.service
# systemctl enable rsyncd.service

在这里插入图片描述

3.Compute节点安装并配置组件

1.编辑 /etc/swift/account-server.conf 文件,删除原有内容,直接添加以下内容
#vi /etc/swift/account-server.conf

[DEFAULT]
bind_port = 6002
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon account-server
[app:account-server]
use = egg:swift#account
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[account-replicator]
[account-auditor]
[account-reaper]
[filter:xprofile]
use = egg:swift#xprofile

在这里插入图片描述

2.编辑/etc/swift/container-server.conf文件,删除原有内容,直接添加以下内容:
# vi /etc/swift/container-server.conf

[DEFAULT]
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon container-server
[app:container-server]
use = egg:swift#container
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]
[filter:xprofile]
use = egg:swift#xprofile

在这里插入图片描述

3.编辑/etc/swift/object-server.conf文件,删除原有内容,直接添加以下内容:
# vi /etc/swift/object-server.conf

[DEFAULT]
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon object-server
[app:object-server]
use = egg:swift#object
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
[object-replicator]
[object-reconstructor]
[object-updater]
[object-auditor]
[filter:xprofile]
use = egg:swift#xprofile

在这里插入图片描述

4.编辑文件/etc/swift/swift.conf 删除原有内容,添加如下内容
# vi /etc/swift/swift.conf

[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]

在这里插入图片描述

5.确认挂载点目录结构是否有合适的所有权:
# chown -R swift:swift /swift/node

在这里插入图片描述

6.创建 “recon” 目录和确保它有合适的所有权:
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift
# chown -R root:swift /etc/swift

在这里插入图片描述

4.Controller节点创建,分发并初始化rings

1.创建账户ring

1.切换到 ``/etc/swift``目录。创建基本 account.builder 文件:

# cd /etc/swift
# swift-ring-builder account.builder create 18 1 1
2.添加每个节点到 ring 中:
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6002 --device sdc1 --weight 100
3.验证ring内容
# swift-ring-builder account.builder
4.平衡ring
# swift-ring-builder account.builder rebalance

在这里插入图片描述

2.创建ring容器

1.切换到 ``/etc/swift``目录。创建基本``container.builder``文件:
# cd /etc/swift
# swift-ring-builder container.builder create 10 1 1
2.添加每个节点到 ring 中:
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6001 --device sdc1 --weight 100
3.验证 ring 的内容:
# swift-ring-builder container.builder
4.平衡 ring:
# swift-ring-builder container.builder rebalance

在这里插入图片描述

3.创建Ring对象

1.切换到 ``/etc/swift``目录。创建基本``object.builder``文件:
# swift-ring-builder object.builder create 10 1 1
2.添加每个节点到 ring 中:
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6000 --device sdc1 --weight 100
3.验证 ring 的内容:
# swift-ring-builder object.builder
4.平衡 ring:
# swift-ring-builder object.builder rebalance

在这里插入图片描述

4.Compute节点复制Controller的配置文件

复制``account.ring.gz``,container.ring.gz``和``object.ring.gz 文件到每个存储节点和其他运行了代理服务的额外节点的 /etc/swift 目录。
[root@compute ~]# scp controller:/etc/swift/*.ring.gz /etc/swift/

在这里插入图片描述

5.启动服务

1.在控制节点Controller上,启动对象存储代理服务及其依赖服务,并将它们配置为随系统启动:

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

在这里插入图片描述

2.在存储节点Compute上,启动对象存储服务,并将其设置为随系统启动

# 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-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.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-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service

# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service

在这里插入图片描述

6.Controller执行验证操作

1.导入demo凭证

# . /root/demo-openrc

2. 显示服务状态:

# swift stat 

在这里插入图片描述

3.创建容器 container1

# openstack container create container1

在这里插入图片描述

4.上传一个测试文件到container1容器

# openstack object create container1 /root/demo-openrc

在这里插入图片描述

5.列出container1容器里的所有文件

# openstack object list container1

在这里插入图片描述

6.从container1容器里下载一个测试文件

# openstack object save container1 /root/demo-openrc

在这里插入图片描述

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
目录
相关文章
|
IDE Linux KVM
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
564 0
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
577 0
|
云计算 数据安全/隐私保护 虚拟化
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
760 0
|
存储 网络协议 Linux
如何安装OpenStack?
【8月更文挑战第21天】
1792 1
|
存储 Swift 对象存储
OpenStack的对象存储(Swift)
【8月更文挑战第24天】
601 1
|
Linux 网络安全 API
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
784 0
|
存储 网络性能优化 块存储
OpenStack的块存储卷管理创建与配置
【8月更文挑战第27天】
694 3
|
存储 程序员 Swift
Swift开发——存储属性与计算属性
Swift推荐使用结构体进行开发,结构体支持属性和方法,且作为值类型。结构体属性包括存储属性(如radius)和计算属性(如r),计算属性不存储值,类似方法。结构体用`struct`定义,命名遵循大驼峰规则。实例名遵循小驼峰规则。属性可在结构体中任意位置定义,静态属性用`static`。存储属性可为`lazy`实现懒加载。结构体实例通过`.`访问属性和方法,静态属性和方法用`结构体名.`访问。计算属性可读写,可通过`get`和`set`定义。程序段1展示了结构体Point和Circle的属性和方法,包括私有属性、只读计算属性、可读写计算属性及`mutating`方法。
157 0
Swift开发——存储属性与计算属性
|
安全 编译器 Swift
【Swift开发专栏】Swift的编译优化与构建配置
【4月更文挑战第30天】Swift编译优化与构建配置对开发效率和应用性能至关重要。编译优化包括不同级别的优化、函数内联、泛型特化、尾递归优化、死代码消除和链接时优化。在Xcode的"Build Settings"中可调整相关标志。构建配置涉及Debug与Release模式、自定义配置、条件编译、构建设置和脚本。开发时,应适时测试、选择适当优化级别、避免过度优化,并利用条件编译区分不同版本的代码。有效管理构建设置可提升开发质量和性能。
444 0
|
存储 运维 Swift
openstack cinder、swift运维命令
Cinder是OpenStack的块存储服务,提供虚拟机块设备功能,包括卷的创建、挂载等。它由cinder-api、cinder-scheduler和cinder-volume三个组件构成,前者处理请求,中间者负责调度,后者执行卷管理。Swift是OpenStack的分布式对象存储服务,高可用、持久性,适用于大文件存储。Swift架构对称,无单点故障,提供类似文件系统的简单逻辑和高效读写。Cinder关注虚拟机层面的块存储,而Swift则提供对象存储服务。命令示例展示了如何使用cinder和openstack命令操作云硬盘和Swift容器。
427 0