【Openstack Train】十六、swift安装

 OpenStack Swift是一个分布式对象存储系统,它可以为大规模的数据存储提供高可用性、可扩展性和数据安全性。Swift是OpenStack的一个核心组件,它允许用户将大量的数据存储在云上,并且可以随时访问、检索和管理这些数据。
Swift的设计目标是为了处理海量数据和大规模数据的高并发访问,它采用了一些独特的技术和架构,如分布式存储、数据冗余、负载均衡、数据分片、对象容器等。

在先前的教程中,介绍了安装openstack及其相关组件的具体过程,本文介绍如何安装swift。

在按照本教程操作之前,请确保完成以下配置:

【Openstack Train安装】一、虚拟机创建

【Openstack Train安装】二、NTP安装

【Openstack Train安装】三、openstack安装

【Openstack Train安装】四、MariaDB/RabbitMQ 安装

【Openstack Train安装】五、Memcached/Etcd安装

【Openstack Train安装】六、Keystone安装

【Openstack Train安装】七、glance安装

【Openstack Train安装】八、placement安装

【Openstack Train安装】九、Nova安装

【Openstack Train安装】十、Neutron安装

【Openstack Train安装】十一、Dashboard 安装

【Openstack Train安装】十二、Cinder安装

安装环境如下

VMware WorkstationV17.0
本机系统win11
虚拟机系统CentOS 7.5

一、控制节点

以下操作在控制节点运行

登录admin:

. admin-openrc

创建swift用户:

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

如下图:

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

添加admin权限:

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

创建服务入口:

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

如下图:

创建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

如下图:

安装swift:

yum install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached -y

获取代理服务配置:

curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/proxy-server.conf-sample

如下图:

备份并删除配置文件的注释:

mv /etc/swift/proxy-server.conf /etc/swift/proxy-server.conf.source
cat /etc/swift/proxy-server.conf.source | grep -Ev "^#|^$" > /etc/swift/proxy-server.conf

编辑/etc/swift/proxy-server.conf,删除[pipeline:main] 的 tempurl 和tempauth ,完成以下内容:

[DEFAULT]
bind_port = 8080
user = swift
swift_dir = /etc/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:keystoneauth]
use = egg:swift
operator_roles = admin,user

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = swift
password = 123456
delay_auth_decision = True

[filter:cache]
use = egg:swift
memcache_servers = controller:11211

二、计算节点

本教程只包含控制节点和计算节点,计算节点也做存储节点用,以下操作在计算节点运行。

安装相关库:

yum install xfsprogs rsync -y

添加4个20GB的硬盘,添加的教程可以参考【Openstack Train安装】十二、Cinder安装,一共6块硬盘(cinder添加一个,本文添加4个):

使用以下命令扫描硬盘:

for i in /sys/class/scsi_host/host*/scan;do echo "- - -" >$i;done

查看硬盘列表:

fdisk -l

如下图:

转换/dev/sdc为XFS格式(因为我的前两块硬盘被用了,所以这里使用第三个硬盘,请根据自己的情况调整):

mkfs.xfs /dev/sdc
mkfs.xfs /dev/sdd
mkfs.xfs /dev/sde
mkfs.xfs /dev/sdf

如下图:

创建挂载的目录:

mkdir -p /srv/node/sdc
mkdir -p /srv/node/sdd
mkdir -p /srv/node/sde
mkdir -p /srv/node/sdf

编辑 /etc/fstab,添加以下内容:

/dev/sdc /srv/node/sdc xfs noatime,nodiratime,logbufs=8 0 2
/dev/sdd /srv/node/sdd xfs noatime,nodiratime,logbufs=8 0 2
/dev/sde /srv/node/sde xfs noatime,nodiratime,logbufs=8 0 2
/dev/sdf /srv/node/sdf xfs noatime,nodiratime,logbufs=8 0 2

如下图:

挂载硬盘:

mount /srv/node/sdc
mount /srv/node/sdd
mount /srv/node/sde
mount /srv/node/sdf

创建文件或者编辑/etc/rsyncd.conf ,并添加以下内容:

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 10.0.0.31

[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

设置开机自启,并启动该服务:

systemctl enable rsyncd.service
systemctl start rsyncd.service

安装包:

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

获取相关信息:

curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/account-server.conf-sample
curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/container-server.conf-sample
curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/object-server.conf-sample

保存并备份/etc/swift/account-server.conf:

mv /etc/swift/account-server.conf /etc/swift/account-server.conf.source
cat /etc/swift/account-server.conf.source | grep -Ev "^#|^$" > /etc/swift/account-server.conf

编辑/etc/swift/account-server.conf,并设置以下信息:

[DEFAULT]
bind_ip = 10.0.0.31
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

[pipeline:main]
pipeline = healthcheck recon account-server

[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

备份并删除/etc/swift/container-server.conf的注释:

mv /etc/swift/container-server.conf /etc/swift/container-server.conf.source
cat /etc/swift/container-server.conf.source | grep -Ev "^#|^$" > /etc/swift/container-server.conf

编辑/etc/swift/container-server.conf,做出如下改动:

[DEFAULT]
bind_ip = 10.0.0.31
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

[pipeline:main]
pipeline = healthcheck recon container-server

[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

备份/etc/swift/object-server.conf:

mv /etc/swift/object-server.conf /etc/swift/object-server.conf.source
cat /etc/swift/object-server.conf.source | grep -Ev "^#|^$" > /etc/swift/object-server.conf

编辑/etc/swift/object-server.conf,添加以下内容:

[DEFAULT]
bind_ip = 10.0.0.31
bind_port = 6200
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

[pipeline:main]
pipeline = healthcheck recon object-server

[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock

修改文件权限:

chown -R swift:swift /srv/node

创建相关目录并授予权限:

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

三、完成安装

控制节点运行以下命令。 

进入/etc/swift 目录:

创建账户account.builder:

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

将存储节点添加到ring:

swift-ring-builder account.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6202 --device sdc --weight 100
swift-ring-builder account.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6202 --device sdd --weight 100
swift-ring-builder account.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6202 --device sde --weight 100
swift-ring-builder account.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6202 --device sdf --weight 100

查看ring:

swift-ring-builder account.builder

如下图:

rebalance ring:

swift-ring-builder account.builder rebalance

如下图:

创建容器ring:

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

添加到ring:

swift-ring-builder container.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6201 --device sdc --weight 100
swift-ring-builder container.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6201 --device sdd --weight 100
swift-ring-builder container.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6201 --device sde --weight 100
swift-ring-builder container.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6201 --device sdf --weight 100

查看ring:

swift-ring-builder container.builder

如下图:

rebalance ring:

swift-ring-builder container.builder rebalance

如下图:

创建对象ring:

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

添加到ring:

swift-ring-builder object.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6200 --device sdc --weight 100
swift-ring-builder object.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6200 --device sdd --weight 100
swift-ring-builder object.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6200 --device sde --weight 100
swift-ring-builder object.builder add --region 1 --zone 1 --ip 10.0.0.31 --port 6200 --device sdf --weight 100

查看ring:

swift-ring-builder object.builder

如下:

rebalance ring:

swift-ring-builder object.builder rebalance

如下图:

将account.ring.gz, container.ring.gz和object.ring.gz三个文件拷贝到其他节点的/etc/swift目录,使用下面的命令(Ip地址要换成自己的,本教程计算节点是10.0.0.31):

scp /etc/swift/*.ring.gz root@10.0.0.31:/etc/swift/

如下图,复制成功:

在控制节点运行以下命令:

curl -o /etc/swift/swift.conf https://opendev.org/openstack/swift/raw/branch/master/etc/swift.conf-sample

备份/etc/swift/swift.conf,并删除注释:

mv /etc/swift/swift.conf /etc/swift/swift.conf.source
cat /etc/swift/swift.conf.source | grep -Ev "^#|^$" > /etc/swift/swift.conf

编辑/etc/swift/swift.conf,完成以下配置(该文件默认已经配置好了):

[swift-hash]
...
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme

[storage-policy:0]
...
name = Policy-0
default = yes

swift.conf 复制到其他存储节点的 /etc/swift 目录下,本教程只需要复制到计算节点,运行以下命令:

scp /etc/swift/swift.conf root@10.0.0.31:/etc/swift/

在所有节点,修改文件权限:

chown -R root:swift /etc/swift

控制节点运行:

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

计算节点修改权限:

chown -R swift:swift /srv/node

计算节点运行:

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

四、验证

登录demo用户:

. demo-openrc

查看swift状态(如果权限有问题就登录admin账户):

swift stat

如下图:

创建container1 容器:

openstack container create container1

如下图:

上传文件到container1容器(我传的cirros):

openstack object create container1 cirros-0.4.0-x86_64-disk.img

如下图:

查看容器中的文件:

openstack object list container1

如下图:

下载容器中的文件(cirros镜像):

openstack object save container1 cirros-0.4.0-x86_64-disk.img

如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224172.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外置固态硬盘配置

1、插上usb外置硬盘盒 2、邮件我的此“电脑”选择“管理” 3、例如新增的固态硬盘如下: 4、这里我选择mrb(旧模式)而没选guid(新模式) 因为mrb兼容模式更加适合windows、ios等系统 5、右击未分区磁盘,选择新增卷区,一路下一步即可

华为数通---BFD多跳检测示例

定义 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要…

【Linux 进度条小程序】缓冲区+回车换行

文章目录 回车与换行缓冲区举个栗子fflush函数倒计时小程序进度条小程序 回车与换行 回车和换行是不同的两个概念 回车:\r 使光标回到本行行首。 换行:\n使光标下移一格。 一般我们的键盘上的Enter键是回加换行键 在c语言中 \n 表示回车换行 效果和Ent…

IDEA Maven项目如何引用本地jar包,并打包发布

jar包位于当前路径下的lib目录中 引入所需要的配置 查看当前jar包的相关信息 包的引入,需要使用到当前包的artifactId, groupId, version 需要到包的/META-INF/maven/ 下面的 pom.xml 文件里面找 在Maven构建项目时,生成的依赖包中的/META-INF/maven目录存放了一些…

华为数通---使用基本ACL限制Telnet登录权限案例

组网需求 如下图所示,PC与设备之间路由可达,用户希望简单方便的配置和管理远程设备,可以在服务器端配置Telnet用户使用AAA验证登录,并配置安全策略,保证只有符合安全策略的用户才能登录设备。 配置通过Telnet登录设备…

ALPHA开发板烧录工具MfgTool烧写方法

一. 简介 MfgTool 工具是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件,可以在 NXP 官网下载到。运行在windows下。可以烧写uboot.imx、zImage、dtb,rootfs。通过 USB口进行烧写。 上一篇文章简单了解了 ALPHA开发板烧录工具MfgTool。文章地址…

html通过CDN引入Vue组件抽出复用

html通过CDN引入Vue组件抽出复用 近期遇到个需求,就是需要在.net MVC的项目中,对已有的项目的首页进行优化,也就是写原生html和js。但是咱是一个写前端的,写html还可以,.net的话,开发也不方便,还…

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…

城市之眼:数据可视化在智慧城市的角色

作为智慧城市建设的核心组成部分,数据可视化扮演着至关重要的角色。在城市中,数据源源不断地产生,涵盖了从交通流量、环境质量到市民需求等各个方面。而数据可视化作为将这些数据呈现出来的手段,对智慧城市的发展起着关键性的作用…

AidLux:手机/平板上的Linux环境与AI开发利器

AidLux是一个基于ARM架构的跨生态(鸿蒙/AndroidLinux)一站式智能物联网(AIoT)应用开发和部署平台,正受到越来越多开发者和用户的青睐。既可以作为手机/平板上的一个Linux环境使用,也可以作为AI开发利器以发…

ChatGPT在国内的使用限制,国内的ChatGPT替代工具

人工智能技术的发展不仅改变了我们的生活方式,也在各行各业发挥着越来越重要的作用。ChatGPT(Generative Pre-trained Transformer)作为一种先进的自然语言处理模型,由OpenAI推出,其在生成人类般流畅对话方面表现出色。…

循环神经网络RNN及其变体LSTM、GRU

1. 背景 RNN(Recurrent Neural Networks) CNN利用输入中的空间几何结构信息;RNN利用输入数据的序列化特性。 2. SimpleRNN单元 传统多层感知机网络假设所有的输入数据之间相互独立,但这对于序列化数据是不成立的。RNN单元用隐藏状态或记忆引入这种依赖…

深度学习技巧应用31-对卷积残差网络ResNet做知识蒸馏技术的实战应用,并加载真实数据集进行蒸馏训练

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用31-对卷积残差网络ResNet做知识蒸馏技术的实战应用,并加载真实数据集进行蒸馏训练。做模型压缩知识蒸馏是一种模型压缩技术,它通过将一个大模型(教师模型)的知识迁移到一个小模型(学生模型)中来实现模型的压缩。这…

日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

原文链接 日志框架发展历程 在了解日志框架时总会列出一系列框架:Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2,这么多框架让人感到混乱,该怎么选取、该怎么用。接下来…

人工智能学习8(集成学习之xgboost)

编译工具:PyCharm 文章目录 编译工具:PyCharm 集成学习XGBoost(Extreme Gradient Boosting)极端梯度提升树1.最优模型的构建方法XGBoost目标函数案例1:泰坦尼克号案例2:对奥拓集团差评进行正确分类。数据准备:1.第一种…

iNet Network Scanner for Mac:简洁高效的WiFi网络扫描软件

随着无线网络的普及,WiFi网络已经成为我们日常生活中必不可少的一部分。无线网络的稳定性和速度对我们的工作和娱乐体验至关重要。因此,一款功能强大、简洁高效的WiFi网络扫描软件非常重要。今天,我们向大家推荐一款优秀的Mac平台WiFi网络扫描…

HarmonyOS4.0从零开始的开发教程04 初识ArkTS开发语言(下)

HarmonyOS(二) 初识ArkTS开发语言(下)之TypeScript入门 声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程&#xff…

虚拟机配置网络(这里以centos为例)

①、点击“编辑”里面的“虚拟网络编辑器”,取消勾选DHCP服务将IP地址分配给虚拟机。 2.点击nat设置,看看对应的子网ip和网关地址还有子网掩码,然后在安装虚拟机生成的vmware8适配器配置中配置和刚刚nat配置中一样的配置 3,然后和第二部一样…

AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化

近日,阿里发布了Animate Anyone,只需一张人物照片,结合骨骼动画,就能生成人体动画视频。 项目地址:https://humanaigc.github.io/animate-anyone/ 论文地址:https://arxiv.org/pdf/2311.17117.pdf Github…

力扣116. 填充每个节点的下一个右侧节点指针(详细讲解root根节点的理解)

题目: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右…