0.环境
操作系统:Ubuntu 12.04 LTS,swift版本:1.4.8。四台机器,IP地址分别为:
192.168.1.11,
192.168.1.12,
192.168.1.13,
192.168.1.14.
由于swift的全分布式特点,故每个节点都作为存储节点,并选用192.168.1.11作为proxy server。
1.安装依赖库
所有节点都需要安装的:
python-netifaces
python-setuptools
python-eventlet
python-pastedeploy
python-xattr
xfsprogs
以上软件包可以直接使用apt-get install来安装。一个比较特殊的包:python-webob。该包在ubuntu软件源中的版本是1.1.1(ubuntu12.04).而这个版本有个bug,会导致swift client使用HEAD无法正常的获取content-length。比如,获取文件尺寸,得到的结果永远是 13。解决方法是在ubuntu软件包网站下载1.0.8版本的deb安装包,然后手工安装。
2.准备磁盘
选取某一个磁盘分区做存储,本例使用sda5.
mkfs.xfs -i size=1024 /dev/sda5
在/etc/fstab中添加
/dev/sda5 /srv/node/sda5 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
挂载磁盘分区
sudo mount /srv/node/sda5
3.构建ring
swift-ring-builder account.builder create 18 3 1
18: 用于指定分区数。分区数目为2的幂次,如18,则分区数是2的18次方。
3:文件副本数目
1:分区移动的最小时间间隔,单位是小时。
swift-ring-builder account.builder add z1-192.168.1.11:6002/sda5 100
swift-ring-builder account.builder add z2-192.168.1.12:6002/sda5 100
swift-ring-builder account.builder add z3-192.168.1.13:6002/sda5 100
swift-ring-builder account.builder add z4-192.168.1.14:6002/sda5 100
100 代表设备的权重。可以根据磁盘的容量设定对应值,比如2T的100,则1T的可以是50。
swift-ring-builder account.builder可以检测配置,确认无误后,使用swift-ring-builder account.builder rebalance重新平衡。成功之后会在当前目录生成 account.ring.gz 文件。
使用同样的方式构建 container和object的ring。container服务端口是6001,object的服务端口是6000。特别需要注意的是:一旦ring投入使用,更改配置的时候要针对该ring,不能重新构建,否则,很多数据可能会404.
最后将生成的account.ring.gz,container.ring.gz,object.ring.gz分发至各个节点的/etc/swift目录。
4.安装swift
4.1 apt-get install安装
sudo apt-get install swift即可。
4.2源代码安装
从github上下载源代码。
git clone https://github.com/openstack/swift.gitswift
cd swift
git checkout 1.4.8 #使用git tag 可以查看所有的版本
sudo python setup.py install --record log.txt # --record log.txt 可以记录安装信息,需要卸载的时候只需执行sudo cat file.txt | xargs rm -rf 。
注:使用apt-get install 安装的方式更利于维护和升级。一旦要做二次开发的话,使用源代码安装比较好。
5.更改配置相关文件
所有的节点都需要配置相关文件如下:
/etc/rsyncd.conf #所有机器配置一样,系统中没有,见附件。
/etc/default/rsync #系统自带,只需要将RSYNC_ENABLE=false更改为RSYNC_ENABLE=true。
/etc/swift/swift.conf
/etc/swift/account-server.conf
/etc/swift/container-server.conf
/etc/swift/object-server.conf
proxy server还要 /etc/swift/proxy-server.conf。除此之外,proxy-server需要安装memcached(sudo apt-get install memcached)做缓存。
其他的配置见附件。
6.启动服务
一旦采用源代码安装,则需要添加swift用户(当然也可以不添加,在配置相关文件里面指定相应的用户名即可)
sudo groupadd swift
sudo useradd swift -g swift.
更改文件的所有者:
sudo chown -R swift:swift /etc/swift
sudo chown -R swift:swift /srv/node
所有节点启动服务:
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
启动proxy-server :
sudo swift-init proxy-server start