热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

OpenStackswift+keystone+glance安装过程总结

这两天在把以前安装的Swift用keystone做鉴权,主要是改了proxy-server.conf的配置,keystone和glance的安装可以参考www.chenshake.com中节点安装中keystone安装的方法,其中的脚本不需要改动。安装成功后,基本命令都可以实现,例如上传下载,查看文件。如果
这两天在把以前安装的Swift用keystone做鉴权,主要是改了proxy-server.conf的配置,keystone和glance的安装可以参考www.chenshake.com 中节点安装中keystone安装的方法,其中的脚本不需要改动。 安装成功后,基本命令都可以实现,例如上传下载,查看文件。 如果有某些命令失败,可能的原因是,上面的脚本没有修改,对某些参数设置有问题,我按照官方文档手动设置,就会出现错误,目前还没有解决。 整理了下swift安装 主要参考http://blog.lightcloud.cn/?p=68 和我自己在安装的时候的一些总结,也可以在这个链接中查看添加多服务的配置,基本和下面的配置类似。

8月14日更新glance配置。

glance 使用swift作为后端配置非常简单

修改/etc/glance/glance-api.conf

#default_store = file

default_store = swift

swift_store_auth_address = http://192.168.4.87:5000/v2.0/

swift_store_user = service:swift

swift_store_key = zhoubing

swift_store_create_container_on_put = True

以上配置需要根据环境的实际情况填写。(配置项在文件中都有,只需要修改,不需要添加).

Swift模块

OpenStack Object Storage (Swift) 是用来创建冗余的、可扩展的对象存储(引擎)的开源软件。 swift使用标准化的服务器存储 PB 级的访问数据。它并不是文件系统或者实时的数据存储系统 ,而是一个用于存储永久类型的静态数据的长期存储系统 ,这些数据可以检索、调整、必要时进行更新。最适合存储的数据类型的首要例子是虚拟机镜像,图片存储,邮件存储,存档备份。因为没有中心单元或者主控结点,swift提供了更强的扩展性、冗余和持久性。

使用主机信息:

|----+----------------+-------------+-----------+--------------|

| ID | Name           | OS          |        IP | Used for     |

|----+----------------+-------------+-----------+--------------|

|  1 | swift-proxy    | ubuntu12.04 |  192.168.4.87 | Proxy Node   |

|  2 | swift-storage1 | ubuntu12.04 |  192.168.4.88| Storage Node |

|  3 | swift-storage2 | ubuntu12.04 | 192.168.4.89| Storage Node |

|  4 | swift-storage3 | ubuntu12.04 | 192.168.4.90| Storage Node |

|----+----------------+-------------+-----------+--------------|

1 安装配置存储节点(Storage Node)  

l 安装需要的软件包

apt-get update

apt-get install swift swift-account swift-container swift-object swift-doc xfsprogs

l 创建loopback设备(假设为sdb1)分出一个分区然后格式化 

fdisk /dev/sdb

mkfs.xfs -i size=1024 /dev/sdb1

上面的方法是官方文档上的方法,也是推荐的方法,我使用的是创建回环设备来存
    dd if=/dev/zero of=/srv/swift-node bs=1024 count=0 seek=1000000
    mkfs.xfs -i size=1024 /srv/swift-node

l 更新fstab文件 

cat >> /etc/fstab <

/srv/swift-node /swift/node xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0

EOF

l 挂载 

mkdir /swift/node

mount /swift/node

chown -R swift:swift /swift 注意 没有赋权限,会导致创建失败

l 创建swift的配置文件 

cat >/etc/swift/swift.conf <

[swift-hash]

# random unique string that can never change (DO NOT LOSE)

swift_hash_path_suffix = `od -t x8 -N 8 -A n 

EOF

Note: 这个文件所有的存储节点和代理节点共用,可以用scp拷贝到其它节点

l 安装rsync 

apt-get install rsync

l 创建rsync配置文件 

cat > /etc/rsyncd.conf << EOF

uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = 192.168.4.88

[account]

max connections = 2

path = /swift/node

read only = false

lock file = /var/lock/account.lock

[container]

max connections = 2

path = /swift/node

read only = false

lock file = /var/lock/container.lock

[object]

max connections = 2

path = /swift/node

read only = false

lock file = /var/lock/object.lock

EOF

l 启用rsync 

perl -pi -e 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/' /etc/default/rsync

l 启动rsync 

service rsync start

l 配置account服务 

cat > /etc/swift/account-server.conf << EOF

[DEFAULT]

devices = /swift/node

mount_check = false

bind_ip = 

bind_port = 6012

workers = 2

log_facility = LOG_LOCAL3

[pipeline:main]

pipeline = account-server

[app:account-server]

use = egg:swift#account

[account-replicator]

[account-auditor]

[account-reaper]

EOF

l 配置container服务 

cat > /etc/swift/container-server.conf << EOF

[DEFAULT]

devices = /swift/node

mount_check = false

bind_ip = 

bind_port = 6011

workers = 2

log_facility = LOG_LOCAL2

[pipeline:main]

pipeline = container-server

[app:container-server]

use = egg:swift#container

[container-replicator]

[container-updater]

[container-auditor]

[container-sync]

EOF

l 配置object服务 

cat > /etc/swift/object-server.conf << EOF

[DEFAULT]

devices = /swift/node/

mount_check = false

bind_ip = 

bind_port = 6010

workers = 2

log_facility = LOG_LOCAL1

[pipeline:main]

pipeline = object-server

[app:object-server]

use = egg:swift#object

[object-replicator]

[object-updater]

[object-auditor]

[object-expirer]

EOF

l 创建swift日志配置文件 

cat > /etc/rsyslog.d/10-swift.conf << EOF

local1,local2,local3.*   /var/log/swift/all.log

local1.*   /var/log/swift/object.log

local2.*   /var/log/swift/container.log

local3.*   /var/log/swift/account.log

EOF

l 创建日志目录 

mkdir -p /var/log/swift

chown -R syslog.adm /var/log/swift

l 重启日志服务进程 

service rsyslog restart

2 安装配置代理节点(Proxy Node)  

l 安装需要的软件包 

apt-get update

apt-get install swift swift-proxy swift-doc memcached

l 修改memcached配置文件 

perl -pi -e "s/-l 127.0.0.1/-l 192.168.4.87/" /etc/memcached.conf

l 重启memcached服务 

service memcached restart

l 从存储节点拷贝swift配置文件 

mkdir /etc/swift

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

l 创建proxy-server配置文件 

cat > /etc/swift/proxy-server.conf < EOF

[DEFAULT]

bind_port = 8080

bind_ip = 192.168.4.87

user = swift

log_level = DEBUG

log_facility = LOG_LOCAL1

[pipeline:main]

pipeline = healthcheck cache authtoken keystone proxy-server

[app:proxy-server]

use = egg:swift#proxy

allow_account_management = true

account_autocreate = true

[filter:keystone]

paste.filter_factory = keystone.middleware.swift_auth:filter_factory

operator_roles = admin, swiftoperator

[filter:authtoken]

paste.filter_factory = keystone.middleware.auth_token:filter_factory

delay_auth_decision = 1

auth_port = 35357

auth_host = 192.168.4.87

auth_protocol = http

service_protocol = http

service_host = 192.168.4.87

service_port = 5000

admin_tenant_name = service

admin_user = swift

admin_password = zhoubing

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:cache]

use = egg:swift#memcache

memcache_servers = 192.168.4.87:11211

EOF

l 创建swift日志配置文件 

cat > /etc/rsyslog.d/10-swift.conf << EOF

local1.*   /var/log/swift/proxy.log

l 创建日志目录 

mkdir -p /var/log/swift

chown -R syslog.adm /var/log/swift

l 重启日志服务进程 

service rsyslog restart

l 首先创建环 

cd /etc/swift

swift-ring-builder account.builder create 18 2 1

swift-ring-builder container.builder create 18 2 1

swift-ring-builder object.builder create 18 2 1

Note: 后面的数字第一个为存储分区数,第二个为备份次数,备份次数不能小于ZONE数目,第三个为延迟删除的时间,以小时为单位

向环里添加存储设备我前面配置了两台存储节点: 

|---------+------+-----------+-----------+------+--------|

| Storage | Zone |        IP | Server    | Port | Device |

|---------+------+-----------+-----------+------+--------|

|       1 |    1 |  192.168.4.88| account   | 6012 | sdb1   |

|         |      |           | container | 6011 | sdb1   |

|         |      |           | object    | 6010 | sdb1   |

|---------+------+-----------+-----------+------+--------|

|       2 |    2 | 192.168.4.89 | account   | 6012 | sdb1   |

|         |      |           | container | 6011 | sdb1   |

|         |      |           | object    | 6010 | sdb1   |

|---------+------+-----------+-----------+------+--------|

cd /etc/swift

swift-ring-builder account.builder add z1-192.168.4.88:6012/sdb1 100

swift-ring-builder container.builder add z1-192.168.4.88:6011/sdb1 100

swift-ring-builder object.builder add z1-192.168.4.88:6010/sdb1 100

swift-ring-builder account.builder add z2-192.168.4.89:6012/sdb1 100

swift-ring-builder container.builder add z2-192.168.4.89:6011/sdb1 100

swift-ring-builder object.builder add z2-192.168.4.89:6010/sdb1 100

Note: IP,端口,设备和前面的配置对应

l 检验每个环里的条目 

cd /etc/swift

swift-ring-builder account.builder

swift-ring-builder container.builder

swift-ring-builder object.builder

应该得到类似这样的输出

account.builder, build version 1

262144 partitions, 1 replicas, 1 zones, 1 devices, 0.00 balance

The minimum number of hours before a partition can be reassigned is 1

Devices:    id  zone      ip address  port      name weight partitions balance meta

             0     1        192.168.4.88  6012      sdb1 100.00     262144    0.00

             0     1        192.168.4.89 6012      sdb1 100.00     262144    0.00

l 平衡环 

cd /etc/swift

swift-ring-builder account.builder rebalance

swift-ring-builder container.builder rebalance

swift-ring-builder object.builder rebalance

Note: 这个过程可能需要一些时间

Note: 这三条命令会产生以gz结尾的文件,这些文件就是所有节点要用到的环文件,可以用scp拷贝到其它各节点

Note: 如果创建环的时候指定的副本数大于环的数量,平衡环的时候可能会报类似下面的错误

...

4, in _initial_balance

    while available_devs[index]['zone'] in other_zones:

IndexError: list index out of range

l 分发新生成的环文件 

scp /etc/swift/*.gz root@192.168.4.88:/etc/swift/

scp /etc/swift/*.gz root@192.168.4.89:/etc/swift/

l 启动各节点相关的服务 

# 代理节点

swift-init proxy start

# 存储节点

swift-init all start


推荐阅读
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
author-avatar
僾媙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有