OpenStack云第五天

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介:

OpenStack云第五天

安装OpenStack Object Storage

目录: 
一、系统需求  
二、对象存储架构 
三、安装OpenStack Object Storage  
四、安装配置存储节点 
五、安装与配置代理节点 
六、安装验证

一、系统需求 
硬件: OpenStack对象存储被设计运行在通用计算机硬件平台上,以下表达为建议硬件配置。 

操作系统:OpenStack 对象存储现在可以运行在Ubuntu,RHEL,CentOS或Fedora系统上。 
网络:建议千兆网络。为对象存储准备一个额外的网络连接外网的代理服务器。 
数据库:OpenStack对象存储,SQLite数据库是OpenStack对象存储容器和帐号管理的进程的一部分。 
权限:你可以直接只用root或用户sudo权限的用户执行安装OpenStack对象存储。 
网络规划 
本文档提供两个网络规划,一个公共网络连接代理服务器,第二个是在存储集群外不可访问的存储网络。 
公共网络大小:8IPs(CIDR/29)。 
存储网络建议大小:255IPs(CIDR/24)。

二、对象存储架构 
节点--运行一个或多个OpenStack对象存储服务的主机。 
代理节点--运行代理服务的主机。 
认证节点--一个可选的独立于代理服务并运行认证服务的节点。 
存储节点--运行用户、容器、对象服务的节点。 
环--OpenStack对象存储数据与物理设备之间的映射集合。 
为了增加高可用,你有可能会希望添加更多的代理服务以提供性能。 
本文档描述的存储节点都是在环中作为独立的区域,建议至少用5个区域。一个区域是相互独立的节点组合。环确保所有的备份数据在不同的区域,下图为最小安装的一种可能: 
图表2

三、安装OpenStack Object Storage 
虽然在开发或测试环境下,你可以安装OpenStack Object Storage在一台服务器上,但多服务器安装可以为你的正式发布产品带来更高的可用性与冗余。 
如果你想执行单节点安装,你可以使用Swift All In One 或DevStack。参考http://swift.openstack.org/development_saio.html 或http://devstack.org。 
开始之前 
如果你是在一台新服务器上安装,准备一份系统安装光盘。 
本文档演示安装一个使用了如下节点的集群: 
    * 一个运行swift-proxy-server的代理节点,代理服务器将请求发送至正确的存储节点。 
    * 五个运行swift-account-server,swift-container-server以及swift-object-server进程的存储节点。 
安装步骤 
1. 在所有节点安装操作系统,如Ubuntu Server,RHEL,CentOS或Fedora。 
2. 安装swift服务以及OpenSSH。 
# yum install  openstack-swift  openstack-swift-proxy  openstack-swift-account  \
> openstack-swift-container  openstack-swift-object memcached 
3. 在所有的节点上创建目录: 
# mkdir  -p   /etc/swift 
# chown  -R  swift:swift   /etc/swift/ 
4. 创建/etc/swift/swift.conf文件


 
 
  1. [swift-hash] 
  2. # random unique string that can never change (DO NOT LOSE) 
  3. swift_hash_path_suffix = fLIbertYgibbitZ  

注意:suffix的值为随机字串。 
下一步,设置你的存储节点、代理节点以及认证节点,这里我们使用keystone作为通用认证组件。

四、安装与配置存储节点 
注意:OpenStack对象存储需要工作在支持XATTRS(扩展属性)的现代文件系统上。我们建议使用XFS文件系统。 
1. 安装存储节点包: 
# yum  install  openstack-swift-account  openstack-swift-container \
> openstack-swift-object  xfsprogs 

2. 为所有的设备设置XFS卷: 
# fdisk   /dev/sdb    (创建一个分区) 
# mkfs.xfs  -i   size=1024   /dev/sdb1 
# echo “/dev/sdb1   /srv/node/sdb1   xfs   noatime,nodiratime,nobarrier,logbufs=8  0  0” >>  /etc/fstab 
# mkdir  -p  /srv/node/sdb1 
# mount   /srv/node/sdb1 
# chown  -R  swift:swift   /srv/node 
3. 创建/etc/rsyncd.conf


 
 
  1. uid = swift 
  2. gid = swift 
  3. log file = /var/log/rsyncd.log 
  4. pid file = /var/run/rsyncd.pid 
  5. address = <STORAGE_LOCAL_NET_IP> 
  6. [account] 
  7. max connections = 2 
  8. path = /srv/node/ 
  9. read only = false 
  10. lock file = /var/lock/account.lock 
  11. [container] 
  12. max connections = 2 
  13. path = /srv/node/ 
  14. read only = false 
  15. lock file = /var/lock/container.lock 
  16. [object] 
  17. max connections = 2 
  18. path = /srv/node/ 
  19. read only = false 
  20. lock file = /var/lock/object.lock 

4. 编辑/etc/default/rsync:


 
 
  1. RSYNC_ENABLE = true      //此处为Ubuntu环境,设置开机启动。如CentOS请使用chkconfig  

5. 开启rsync进程: 
# service  rsync  start 
6. 创建/etc/swift/account-server.conf文件


 
 
  1. [DEFAULT] 
  2. bind_ip = <STORAGE_LOCAL_NET_IP> 
  3. workers = 2 
  4. [pipeline:main] 
  5. pipeline = account-server 
  6. [app:account-server] 
  7. use = egg:swift#account 
  8. [account-replicator] 
  9. [account-auditor] 
  10. [account-reaper]  

7. 创建/etc/swift/container-server.conf


 
 
  1. [DEFAULT] 
  2. bind_ip = <STORAGE_LOCAL_NET_IP> 
  3. workers = 2 
  4. [pipeline:main] 
  5. pipeline = container-server 
  6. [app:container-server] 
  7. use = egg:swift#container 
  8. [container-replicator] 
  9. [container-updater] 
  10. [container-auditor]  

8. 创建/etc/swift/object-server.conf


 
 
  1. [DEFAULT] 
  2. bind_ip = <STORAGE_LOCAL_NET_IP> 
  3. workers = 2 
  4. [pipeline:main] 
  5. pipeline = object-server 
  6. [app:object-server] 
  7. use = egg:swift#object 
  8. [object-replicator] 
  9. [object-updater] 
  10. [object-auditor] 
  11. [object-expirer]  

译者备注:经由译者实验证明,软件安装完成后在/etc/swift目录下,会自动生成account-server,container-server等目录,以上配置文件也可以分别放置在对应的目录下。 
9. 开启storage服务: 
swift-init object-server start 
swift-init object-replicator start 
swift-init object-updater start 
swift-init object-auditor start 
swift-init container-server start 
swift-init container-replicator start 
swift-init container-updater start 
swift-init container-auditor start 
swift-init account-server start 
swift-init account-replicator start 
swift-init account-auditor start

五、安装与配置代理节点 
代理服务器接受请求并查找账户、容器或对象的位置最后将请求路由到正确的位置。代理服务器同样处理APIs请求。你可以修改proxy-server.conf文件启用帐号管理。 
注意:建议所有的命令使用root帐号操作。 
1. 安装swift-proxy服务: 
# yum  install  openstack-swift-proxy  memcached 
2. 创建自签名证书: 
# cd   /etc/swift 
# openssl   req   -new   -x509  -nodes   -out  cert.crt   -keyout   cert.key 
3. 修改memcached监听的端口。编辑/etc/memcached.conf文件: 
将  -l  127.0.0.1  改变为  -l   <代理服务器IP> 
4. 重启memcached服务: 
# service  memcached   restart 
5. 使用openstack-config命令设置swift代理配置文件的keystone管理标识: 
# openstack-config --set /etc/swift/proxy-server.conf  filter:authtoken   admin_token $ADMIN_TOKEN 
# openstack-config --set /etc/swift/proxy-server.conf  filter:authtoken   auth_token $ADMIN_TOKEN 
6. 创建/etc/swift/proxy-server.conf


 
 
  1. [DEFAULT] 
  2. bind_port = 8888 
  3. user = <user> 
  4. [pipeline:main] 
  5. pipeline = catch_errors healthcheck cache authtoken keystone proxy-server 
  6. [app:proxy-server] 
  7. use = egg:swift#proxy 
  8. account_autocreate = true 
  9. [filter:keystone] 
  10. paste.filter_factory = keystone.middleware.swift_auth:filter_factory 
  11. operator_roles = admin, swiftoperator 
  12. [filter:authtoken] 
  13. paste.filter_factory = keystone.middleware.auth_token:filter_factory 
  14. # Delaying the auth decision is required to support token-less 
  15. # usage for anonymous referrers ('.r:*'). 
  16. delay_auth_decision = true 
  17. service_port = 5000 
  18. service_host = 127.0.0.1 
  19. auth_port = 35357 
  20. auth_host = 127.0.0.1 
  21. auth_token = 012345SECRET99TOKEN012345 
  22. admin_token = 012345SECRET99TOKEN012345 
  23. [filter:cache] 
  24. use = egg:swift#memcache 
  25. set log_name = cache 
  26. [filter:catch_errors] 
  27. use = egg:swift#catch_errors 
  28. [filter:healthcheck] 
  29. use = egg:swift#healthcheck  

7. 创建账户,容器以及对象环。 
命令第一个参数18代表2^18(2的幂),表示定义分区的大小,该值大小取决于你希望整个环使用存储的总大小;3代表每个对象备份的数量;最后一个数值表示分区移动的间隔(小时)。 
# cd   /etc/swift 
# swift-ring-builder account.builder create 18 3 1 
# swift-ring-builder container.builder create 18 3 1 
# swift-ring-builder object.builder create 18 3 1 
8. 为每个节点的存储设备添加条目至环: 
# swift-ring-builder account.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP>:6002/<DEVICE> 100 
# swift-ring-builder container.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6001/<DEVICE> 100 
# swift-ring-builder object.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6000/<DEVICE> 100 
例如,如果你在IP 10.0.0.1存储节点上在Zone 1(区域1)中设置分区。挂载点是/srv/node/sdb1,且在rsyncd.conf文件中是/srv/node/,设备为sdb1。命令如下: 
swift-ring-builder  account.builder  add z1-10.0.0.1:6002/sdb1  100 
swift-ring-builder  container.builder  add z1-10.0.0.1:6001/sdb1  100 
swift-ring-builder  object.builder  add z1-10.0.0.1:6000/sdb1  100 
注意:假设5个区域中每个区域有一个节点,ZONE从1开始并通过添加额外节点增加该数值。 
9. 验证ring内容: 
swift-ring-builder  account.builder 
swift-ring-builder  container.builder 
swift-ring-builder  object.builder 
10. 调整rings: 
swift-ring-builder account.builder rebalance 
swift-ring-builder container.builder rebalance 
swift-ring-builder object.builder rebalance 
注意:这里会花费一些时间。 
11. 拷贝account.ring.gz, container.ring.gz, object.ring.gz到每个代理与存储节的/etc/swift目录下。 
12. 确保所有的配置文件所属者为swift: 
# chown   -R   swift:swift   /etc/swift 
13. 开启Proxy服务: 
# swift-init  proxy  start 
配置OpenStack对象存储: 
swift-init main start 
swift-init rest start

六、安装验证 
1. 运行swift命令,使用$ export ADMINPASS=secretword定义全局变量。 
$ swift -V 2 -A http://&lt;AUTH_HOSTNAME>:5000/v2.0 -U adminUser:admin -K  012345SECRET99TOKEN012345 stat 
2. 获得X-Storage-Url 与 X-Auth-Token: 
$ curl -k -v -H 'X-Storage-User: adminUser:admin' -H 'X-Storage-Pass:$ADMINPASS' http://&lt;AUTH_HOSTNAME>:5000/auth/v1.0 
3. 检查账户: 
$ curl -k -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-xstorage-url-above> 
4. 使用swift上传一个名称为gigfile[1-2].tgz的文件至名为myfiles的容器: 
$ swift -A http://&lt;AUTH_HOSTNAME>:5000/v2.0 -U adminUser:admin -K $ADMINPASS  upload myfiles bigfile1.tgz 
$ swift -A 
http://&lt;AUTH_HOSTNAME>:5000/v2.0 -U adminUser:admin -K $ADMINPASS  upload myfiles bigfile2.tgz 
5. 使用swift下载所有的文件: 
$ swift -A http://&lt;AUTH_HOSTNAME>:5000/v2.0 -U adminUser:admin -K $ADMINPASS  download myfiles 
排错:如果你遇到问题,可以查看/var/log/syslog。 

转载时请务必以超链接形式标明出处,丁丁历险博客:http://manual.blog.51cto.com/3300438/980364





















本文转自丁丁历险51CTO博客,原文链接:http://blog.51cto.com/manual/980364 ,如需转载请自行联系原作者


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
消息中间件 Kubernetes 关系型数据库
教程get | K8S部署OpenStack容器云(下)
如何借助OpenStack Kolla-K8S项目,通过K8S对OpenStack进行容器化部署?并最终部署一套All-In-One类型的OpenStack容器云?让我们继续部署: 部署kolla-kubernetes ■  覆盖默认的RBAC设置 通过kubectl replace命令进行默.
4662 0
|
存储 运维 Kubernetes
当开源遇上云,Amazon EKS Distro 与 KubeSphere 能擦出怎样的火花?
当开源遇上云,Amazon EKS Distro 与 KubeSphere 能擦出怎样的火花?
178 0
|
弹性计算 Linux 数据安全/隐私保护
云服务初体验
阿里云服务器的免费体验是大学生熟悉相关专业技能的一项良心举措,能够帮助刚入大学家庭条件并不是很好的大学生免费体验云服务器的使用效果,在通过一周的使用之后,我感觉阿里云服务器用起来非常方便,我希望能够继续申请两个月的免费时长,便于快速熟悉ECS功能。
126 0
云服务初体验
|
弹性计算 网络安全
云服务初体验
云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。
|
弹性计算 安全 Linux
在阿里云上安装OpenStack是什么体验
阿里云上跑火车(安装 OpenStack Train 版本),体验超预期!
3482 0
|
测试技术 Docker 容器
【说云精选】 容器化与 Docker 专刊 第一期
「容器化与 Docker 」专刊第一期:本期周刊我们关注的是 Docker 方面,Docker 作为炙手可热的虚拟化和容器技术,值得每一个开发者关注。本期周刊主要是 Docker 入门相关内容,指导你的走入 Docker 的世界。
4730 0
|
关系型数据库 MySQL 数据库
|
存储 Linux 数据库
|
MySQL 关系型数据库 API