文档章节

Openstack swift+keystone+glance安装总结

zhouxingxing
 zhouxingxing
发布于 2012/08/09 11:12
字数 1694
阅读 2764
收藏 2

这两天在把以前安装的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 |

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

安装配置存储节点(Storage Node

 

安装需要的软件包

apt-get update

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

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

更新fstab文件 

cat >> /etc/fstab <<EOF

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

EOF

挂载 

mkdir /swift/node

mount /swift/node

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

创建swift的配置文件 

cat >/etc/swift/swift.conf <<EOF

[swift-hash]

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

swift_hash_path_suffix = `od -t x8 -N 8 -A n </dev/random`

EOF

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

安装rsync 

apt-get install rsync

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

启用rsync 

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

启动rsync 

service rsync start

配置account服务 

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

[DEFAULT]

devices = /swift/node

mount_check = false

bind_ip = <STORAGE_LOCAL_NET_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

配置container服务 

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

[DEFAULT]

devices = /swift/node

mount_check = false

bind_ip = <STORAGE_LOCAL_NET_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

配置object服务 

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

[DEFAULT]

devices = /swift/node/

mount_check = false

bind_ip = <STORAGE_LOCAL_NET_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

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

创建日志目录 

mkdir -p /var/log/swift

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

重启日志服务进程 

service rsyslog restart

 

安装配置代理节点(Proxy Node

 

安装需要的软件包 

apt-get update

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

修改memcached配置文件 

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

重启memcached服务 

service memcached restart

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

mkdir /etc/swift

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

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

创建swift日志配置文件 

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

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

创建日志目录 

mkdir -p /var/log/swift

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

重启日志服务进程 

service rsyslog restart

首先创建环 

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,端口,设备和前面的配置对应

检验每个环里的条目 

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

平衡环 

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

分发新生成的环文件 

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

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

启动各节点相关的服务 

代理节点

swift-init proxy start

存储节点

swift-init all start

 

© 著作权归作者所有

zhouxingxing
粉丝 70
博文 69
码字总数 48470
作品 0
杭州
程序员
私信 提问
Openstack 之 相对于VMWare的劣势

上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。 前期写了两篇博文《Openstack 干掉 VMWare(1)》、《Openstack 干掉 VMWa...

余伟兵
2018/04/24
0
0
云计算相关资料/博客/网上收集的关于OpenStack的一些资源

OpenStack Nova code:https://bugs.launchpad.net/nova OpenStack Blog:http://planet.openstack.org/ OpenStack 官方文档:http://docs.openstack.org/cactus/openstack-compute/admin/co......

DongZhang
2012/02/02
364
0
Openstack安装(3)——nova(controller)

在控制节点安装nova。按准备工作中的规划,该节点需要以下nova组件。 表3-1Controller上的服务 openstack-keystone 验证 OpenStack Keystone Workflow & Token Scoping rabbitmq-server 消息...

hjswust
2013/04/04
590
0
白皮书:OpenStack与容器的相遇相知(上)

导 读 本文由OpenStack基金会官方发布,来自基金会、用户、厂商的16位专家作者联合撰写,原文请访问:https://www.openstack.org/containers/whitepaper 想象一下,你的任务是从头开始构建整...

lq1ns259ej3okyvk4jf
2018/05/28
0
0
基于docker、kubernetes部署openstack到atomic系统上

声明: 本人阅读笔记,翻译类文章仅作意译。如有不对之处,请指出。 需要更本源的理解,请自行阅读英文。 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbab...

寻觅神迹
2015/03/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
2分钟前
0
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
2分钟前
0
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
7分钟前
0
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
8分钟前
0
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部