openstack essex版安装(4)——swift

来源:互联网 发布:换书软件 编辑:程序博客网 时间:2024/04/28 14:09

       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 = 8080swift_dir = /etc/swiftworkers = 1user = swiftlog_level = DEBUG[pipeline:main]pipeline = catch_errors healthcheck cache ratelimit  authtoken keystone proxy-server[app:proxy-server]account_autocreate = trueuse = 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_factoryoperator_roles = admin,swiftoperator[filter:authtoken]paste.filter_factory = keystone.middleware.auth_token:filter_factoryauth_host = 192.168.0.106auth_port = 35357auth_protocol = httpauth_uri = http://192.168.0.106:5000/admin_tenant_name = adminTenantadmin_user = adminadmin_password = openstackadmin_token=ADMINdelay_auth_decision = 1

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

创建account、container、object的ring信息

cd /etc/swiftsudo swift-ring-builder account.builder create 18 1 1sudo swift-ring-builder container.builder create 18 1 1sudo 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 100sudo swift-ring-builder container.builder add z1-192.168. 0.110:6001/sdb1 100sudo swift-ring-builder object.builder add z1-192.168. 0.110:6000/sdb1 100sudo swift-ring-builder account.builder add z2-192.168. 0.111:6002/sdb1 100sudo swift-ring-builder container.builder add z2-192.168. 0.111:6001/sdb1 100sudo swift-ring-builder object.builder add z2-192.168. 0.111:6000/sdb1 100

生成最终的Ring

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


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

swift-ring-builder account.builderswift-ring-builder container.builderswift-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 = swiftgid = swiftlog file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidaddress = 192.168.0.110[account]max connections = 2path = /srv/node/read only = falselock file = /var/lock/account.lock[container]max connections = 2path = /srv/node/read only = falselock file = /var/lock/container.lock[object]max connections = 2path = /srv/node/read only = falselock 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 = 2user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = falselog_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 = 6001user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = falselog_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 = 6000user = swiftswift_dir = /etc/swiftdevices = /srv/nodemount_check = falselog_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 = swiftgid = swiftlog file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidaddress = 192.168.0.111[account]max connections = 2path = /srv/node/read only = falselock file = /var/lock/account.lock[container]max connections = 2path = /srv/node/read only = falselock file = /var/lock/container.lock[object]max connections = 2path = /srv/node/read only = falselock 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 startsudo swift-init object-replicator startsudo swift-init object-updater startsudo swift-init object-auditor startsudo swift-init container-server startsudo swift-init container-replicator startsudo swift-init container-updater startsudo swift-init container-auditor startsudo swift-init account-server startsudo swift-init account-replicator startsudo 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主控点使用该命令,看一下文件的统计结果


原创粉丝点击