openstack essex版安装(4)——swift

本文详细介绍了如何在OpenStack Essex版本中安装和配置Swift存储服务,包括Swift组件的安装、memcached的设置、Ring的创建和数据存储节点的配置,以及如何将Swift服务集成到Keystone身份认证系统中。
摘要由CSDN通过智能技术生成

       swift是openstack的存储项目。这里我用了2台机子

Swift

Host:swift1

ip:192.168.0.110

Proxy-server, account-server, container-server, object-server

Host:swift2

ip:192.168.0.111

account-server, container-server, object-server

1、主控点安装(swift1)

sudo apt-get install –y keystone   // 如果要和keystone做集成,swift需要使用到keystone里提供的swift_auth和auth_token的功能,不过只需在有proxy-server的服务器上装就可以了。

sudo apt-get install –y swift swift-proxy memcached swift-account swift-container swift-object

sudo groupadd swift

sudo useradd -g swift swift    //为每台机器都创建swift用户

在/etc/swift下面创建一个swift.conf文件,每个节点都应该一样。内容如下:

[swift-hash]
swift_hash_path_suffix =123456789

openssl version    //确定有没有openssl,如果出现版本就说明装了

配置memcached。Swift自己是没有cache机制的,所以会用到memcached,一个高性能的分布式内存对象缓存系统。proxy server需要用到memcache来作为token的临时存储, 所以需要安装和配置一下memcached。

sudo  sed -i 's/127.0.0.1/0.0.0.0/g' /etc/memcached.conf

sudo  service memcached restart


在/etc/swift/下创建proxy-server.conf文件配置swift的proxy-server

[DEFAULT]
bind_port = 8080
swift_dir = /etc/swift
workers = 1
user = swift
log_level = DEBUG

[pipeline:main]
pipeline = catch_errors healthcheck cache ratelimit  authtoken keystone proxy-server

[app:proxy-server]
account_autocreate = true
use = egg:swift#proxy

[filter:healthcheck]
use = egg:swift#healthcheck

[filter:cache]
use = egg:swift#memcache

[filter:ratelimit]
use = egg:swift#ratelimit

[filter:domain_remap]
use = egg:swift#domain_remap

[filter:catch_errors]
use = egg:swift#catch_errors

#[filter:proxy-logging]
#use = egg:swift#proxy_logging

[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
auth_host = 192.168.0.106
auth_port = 35357
auth_protocol = http
auth_uri = http://192.168.0.106:5000/
admin_tenant_name = adminTenant
admin_user = admin
admin_password = openstack
admin_token=ADMIN
delay_auth_decision = 1

配置映射信息(Ring)。ring决定数据在集群中的位置。帐号数据库、容器数据库和单个对象的环都有独立的环管理,这段配置一定要在/etc/swift/目录下完成。

创建account、container、object的ring信息

cd /etc/swift
sudo swift-ring-builder account.builder create 18 1 1
sudo swift-ring-builder container.builder create 18 1 1
sudo swift-ring-builder object.builder create 18 1 1

创建好后,会在/etc/swift下出现account.builder、contaier.builder和object.builder三个builder文件,同时还会有个backups目录,该目录下也会有三个相应的builder文件。

为存储节点添加物理映射信息

sudo swift-ring-builder account.builder add z1-192.168.0.110:6002/sdb1 100
sudo swift-ring-builder container.builder add z1-192.168. 0.110:6001/sdb1 100
sudo swift-ring-builder object.builder add z1-192.168. 0.110:6000/sdb1 100

sudo swift-ring-builder account.builder add z2-192.168. 0.111:6002/sdb1 100
sudo swift-ring-builder container.builder add z2-192.168. 0.111:6001/sdb1 100
sudo swift-ring-builder object.builder add z2-192.168. 0.111:6000/sdb1 100

生成最终的Ring

sudo swift-ring-builder account.builder rebalance
sudo swift-ring-builder container.builder rebalance
sudo swift-ring-builder object.builder rebalance


当创建好了Ring文件, 可以通过下面的命令来验证刚才添加的内容是否正确。

swift-ring-builder account.builder
swift-ring-builder container.builder
swift-ring-builder object.builder

我们的存储节点在/dev/sdb/上,先对这块盘进行分区并格式化为xfs格式, 然后挂载在/srv/node/sdb1这个目录上。Swift的设计是可以使用最普通的文件系统,只要支持扩展属性就可以。一些文件系统,像ext3默认的xattrs属性是关闭着的,Openstack项目组推荐xfs。

sudo apt-get install xfsprogs  //安装xfs文件系统

sudo fdisk /dev/sdb        //#然后一次选择 n, p, 1, 默认, 默认, w

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

sudo –s    //切换到root

echo "/dev/sdb1 /srv/node/sdb1 xfsnoatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab

exit

sudo mkdir -p /srv/node/sdb1

sudo mount /srv/node/sdb1

sudo chown -R swift:swift /srv/node

在/etc下创建rsyncd.conf文件 

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.0.110

[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

sudo sed -i 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g'/etc/default/rsync    //设置rsync开机启动

sudo service rsync start     //启动rsync

配置account-server.conf

        sudo  vi /etc/swift/account-server.conf

[DEFAULT]
bind_port = 6002
#workers = 2
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = false
log_facility = LOG_LOCAL2


[pipeline:main]
pipeline = recon account-server

[app:account-server]
use = egg:swift#account

[filter:recon]
use = egg:swift#recon

[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]

配置/etc/swift/container-server.conf

[DEFAULT]
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = false
log_facility = LOG_LOCAL2

[pipeline:main]
pipeline = recon container-server

[app:container-server]
use = egg:swift#container

[filter:recon]
use = egg:swift#recon

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]

配置/etc/swift/object-server.conf

[DEFAULT]
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = false
log_facility = LOG_LOCAL2

[pipeline:main]
pipeline = recon object-server

[app:object-server]
use = egg:swift#object

[filter:recon]
use = egg:swift#recon

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]

(每个存储节点都是这么配置,只需改动/etc/rsyncd.conf的存储节点ip)

2、第二个存储节点配置(swift2)

存储节点无需安装proxy-server和memcached。

       sudo apt-get install –y openssh-server

       sudo apt-get install –y swift-accountswift-container swift-object

       sudo groupadd swift

sudo useradd -g swift swift    //为每台机器都创建swift用户

在/etc/swift下面创建一个swift.conf文件,每个节点都应该一样。内容如下:

[swift-hash]
swift_hash_path_suffix =123456789

将存储磁盘格式成xfs格式

sudo apt-get install xfsprogs  //安装xfs文件系统

sudo fdisk /dev/sdb        //#然后一次选择 n, p, 1, 默认, 默认, w

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

sudo –s    //切换到root

echo "/dev/sdb1 /srv/node/sdb1 xfsnoatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab

exit

sudo mkdir -p /srv/node/sdb1

sudo mount /srv/node/sdb1

sudo chown -R swift:swift /srv/node

然后将第一个存储节点的/etc/swift目录下的swift.conf、account-server.conf、container-server.conf、object-server.conf、account.ring.gz、container.ring.gz、object.ring.gz这些文件都copy到该节点的/etc/swift目录下, 如果文件夹不存在, 可以创建一下 mkdir /etc/swift。

创建/etc/rsyncd.conf文件。将adress的值改成该存储节点的ip。

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.0.111

[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

sudo sed -i's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g' /etc/default/rsync       //设置rsync开机启动

sudo service rsync start        //启动rsync

启动swift2节点的服务

sudo swift-init object-server start
sudo swift-init object-replicator start
sudo swift-init object-updater start
sudo swift-init object-auditor start
sudo swift-init container-server start
sudo swift-init container-replicator start
sudo swift-init container-updater start
sudo swift-init container-auditor start
sudo swift-init account-server start
sudo swift-init account-replicator start
sudo swift-init account-auditor start

启动swift1节点服务:

sudo swift-init all start

启动后,用ps命令可以看到所有服务的进程。

3、使用swift

1)注册swift服务到keystone上

Ø  创建一个object-store服务

keystone service-create --name=Swift  --type=object-store --description="Swift Object Store Service"

得到swift服务的id。

Ø  创建服务的endpoint

(IP地址是proxy-server所在服务器地址)

keystone endpoint-create --service_id = <swift-service-id>  --region RegionOne --publicurlhttp://192.168.0.110:8080/v1/AUTH_72a95ab302cc42d59e6f414769dcfec7                         --adminurlhttp://192.168.0.110:8080 --internalurlhttp://192.168.0.110:8080/v1/AUTH_72a95ab302cc42d59e6f414769dcfec7

2)使用swift

Ø  swift -V 2 -A http://192.168.74.130:5000/v2.0 -UadminTenant:admin -K openstack stat        //在swift主控点使用该命令,看一下文件的统计结果


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值