OpenStack云第五天

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个区域。一个区域是相互独立的节点组合。环确保所有的备份数据在不同的区域,下图为最小安装的一种可能:




三、安装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


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-:6002/ 100

# swift-ring-builder container.builder add z-:6001/ 100

# swift-ring-builder object.builder add z-:6000/ 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://<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://<AUTH_HOSTNAME


>:5000/auth/v1.0


3. 检查账户:


$ curl -k -v -H ‘X-Auth-Token: ‘


4. 使用swift上传一个名称为gigfile[1-2].tgz的文件至名为myfiles的容器:

$ swift -A

http://<AUTH_HOSTNAME


>:5000/v2.0 -U adminUser:admin -K $ADMINPASS upload myfiles bigfile1.tgz

$ swift -A


http://<AUTH_HOSTNAME


>:5000/v2.0 -U adminUser:admin -K $ADMINPASS upload myfiles bigfile2.tgz


5. 使用swift下载所有的文件:

$ swift -A

http://<AUTH_HOSTNAME


>:5000/v2.0 -U adminUser:admin -K $ADMINPASS download myfiles


排错:如果你遇到问题,可以查看/var/log/syslog。


丁丁历险稿源:丁丁历险 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » OpenStack云第五天

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录