【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

如下图:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Meta开源最大多模态视频数据集—Ego-Exo4D

社交、科技巨头Meta联合15所大学的研究机构,经过两年多的努力发布了首个多模态视频训练数据集和基础套件Ego-Exo4D,用于训练和研究AI大模型。 据悉,该数据集收集了来自13个城市839名参与者的视频,总时长超过1400小时,包含舞蹈、足球、篮球、…

网络通信的流程,浏览器地址?

1.没有交换机的通信 在一个机房内,有两台电脑相互需要通信 假设现在有三台电脑: 随着电脑的增加,线的数量也在增加,因此显得很臃肿,次数交换机诞生,很好的解决了这一方面, 交换机不需要进行多条线的连接: 通过给设备分配,ip地址来实现局域网…

掌握终端,尽在ZOC for Mac – 最强大的终端仿真器!

在数字时代,终端仿真器是专业人士和开发者必备的工具之一。而ZOC for Mac将为您提供无与伦比的终端体验,助力您更轻松地管理远程连接、维护服务器和进行编程任务。 ZOC for Mac的卓越功能: 多协议支持:ZOC支持Telnet、SSH、SSH2、…

Java里面的Pair类

一、简介 最近使用到了JDK里面的Pair类。Pair类在JavaFX库中&#xff0c;主要用于存储和操作键值对。 以下是一些关于Pair类的特点&#xff1a; Pair类的构造函数需要两个参数&#xff0c;一个键和一个值&#xff0c;例如&#xff1a;new Pair<>(1, "One")。…

带有运行时参数的 PostgreSQL 视图

在许多情况下&#xff0c;应用程序需要足够灵活和多功能&#xff0c;以便能够运行动态报告&#xff0c;其中输入在运行时提供。 本文旨在通过利用PostgreSQL数据库支持的临时配置参数来展示如何实现这一点。 根据PostgreSQL文档&#xff0c;从7.3版本开始&#xff0c;可以使用…

个人测试面试问题总结

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f4d1;设计软件测试用例的方…

如何选择一款安全可靠的跨网安全数据交换系统?

随着网络和数据安全的重视程度增加&#xff0c;为了有效地保护内部的核心数据资产&#xff0c;普遍会采用内外网隔离的策略。像国内的政府机构、金融、能源电力、航空航天、医院等关乎国计民生的行业和领域均已进行了网络的隔离&#xff0c;将内部划分成不同的网段&#xff0c;…

体育场找座位 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题目描述 在一个大型体育场内举办了一场大型活动&#xff0c;由于疫情防控的需要&#xff0c;要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图&#xff0c;座位中存在已落座的观众&…

速达软件全系产品任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 1. 速达软件产品简介 速达软件专注中小企业管理软件,产品涵盖进销存软…

智能监控/安防监控视频平台EasyCVR下级更新目录表出现离线情况的两种解决方案

GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备…

DataGrip连接虚拟机上Docker部署的Mysql出错解决

1.1 首先判断CentOS的防火墙&#xff0c;如果开启就关闭 //查看防火墙状态 systemctl status firewalld //关闭防火墙systemctl stop firewalld.service//关闭防火墙开机自启systemctl disable firewalld.service而后可以打开DataGrip连接了&#xff0c;如果连接不上执行如下…

python学习:opencv学习和numpy学习(持续更新)

目录 cv.imread() 读取图像 cv.imshow() 在窗口中显示图像 cv.imwrite() 保存图像 cv.waitKey() 等待任何键盘事件 release() 释放或关闭图像或视频捕获对象 cv.destroyAllWindows() 销毁所有窗口 cv.destroyAllWindow() 销毁某个窗口 cv.VideoCapture() 打开视频流 …

vue项目中添加刷新的按钮

刷新功能 点击导航的刷新按钮&#xff0c;刷新下方主体内容&#xff0c;我这边的项目分为左-上-下结构&#xff0c;上边为tabbar组件&#xff0c;下边为main组件&#xff0c;点击刷新整个流程是刷新按钮&#xff0c;去访问它父组件tabbar的兄弟组件main&#xff0c;使main组件…

从零开始学习 JS APL(七):实例解析关于京东案例头部案例和放大镜效果!!

大家好关于JS APl 知识点已经全部总结了&#xff0c;第七部部分全部都是案例部分呢&#xff01;&#xff01;&#xff08;素材的可以去百度网盘去下载&#xff01;&#xff01;&#xff01;&#xff09; 目录 前言 一、个人实战文档 放大镜效果 思路分析&#xff1a; 关于其它…

LeetCode算法题解(动态规划)|LeetCode583. 两个字符串的删除操作、LeetCode72. 编辑距离

一、LeetCode583. 两个字符串的删除操作 题目链接&#xff1a;583. 两个字符串的删除操作 题目描述&#xff1a; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; …

固态硬盘的优势是什么?

固态硬盘的优势是什么&#xff1f; 1、重量轻体积小。固态硬盘相比机械硬盘在体积上更小&#xff0c;重量更轻。一般来说&#xff0c;台式机的机械硬盘的尺寸在3.5英寸&#xff0c;而SATA接口的固态硬盘的尺寸仅有2.5英寸&#xff0c;而M.2接口的固态硬盘体积更小&#xff0c;只…

听力长难句

[ 01 ] Usually, when we think of DNA, we think of the DNA Thats in cells nucleus, but in fact a cell mitochondrion also contains DNA. In this particular situation, mitochondrial DNA analysis made more sense than nuclear DNA analysis. 翻译&#xff1a; 通…

新手管理者有哪些需要学习的内容?

作为新手管理者&#xff0c;需要学习的内容非常多。以下是一些重要的学习内容&#xff1a; 1. 领导力和管理技能&#xff1a;作为管理者&#xff0c;首先要学习如何有效地领导和管理团队。这包括学习如何激励员工、制定目标和计划、分配任务、解决冲突等。管理者需要具备良好的…

解决Ubuntu使用supervisor管控的程序不能使用麦克风的问题

项目场景&#xff1a; Ubuntu服务器有时候可能更多的是用来跑服务&#xff0c;但是如果用来调取麦克风又担心自己的程序崩溃掉&#xff0c;你可能自然想到使用supervisor来管控自己的程序&#xff0c;但是似乎并不是那么好用。 问题描述 Ubuntu正常使用机器的能力是没有问题的…

【医疗设备方案】脉搏式血氧仪方案

脉搏式血氧仪的主要测量数据分别是血氧饱和度、脉率、血流灌注指数。其中血氧饱和度是指在全部血容量中被结合氧气容量占全部可结合的氧气容量的百分比&#xff0c;是临床医疗上重要的基础数据之一。 脉搏式血氧仪测量原理 典型的脉搏式血氧仪带有一颗光电二极管PD和两颗发光二…