Swift All In One(SAIO,Swift单机版)部署文档(一)

接下来我将介绍基于Swift的开发。

这里的Swift指的是Openstack的一个对象存储模块,可以完成对容器和对象的存储和维护等功能。

以下几篇Openstack有关的内容,都将使用Openstack Liberty版本来介绍。


对于开发来说,首先需要部署Swift。SAIO即为将Swift的所有的组件安装在一台设备上的方式来部署。

这种部署方式可以方便Swift开发。

这篇文档是SAIO安装的第一部分。

基本环境安装和配置

安装Ubuntu 14.04操作系统。

由于我们身处国内,所以需要换下Ubuntu的安装源。更换成国内镜像。

安装需要的组件

sudo apt-get update
sudo apt-get install curl gcc memcached rsync sqlite3 xfsprogs \\
                    git-core libffi-dev python-setuptools \\
                    liberasurecode-dev
sudo apt-get install python-coverage python-dev python-nose \\
                    python-xattr python-eventlet \\
                    python-greenlet python-pastedeploy \\
                    python-netifaces python-pip python-dnspython \\
                    python-mock
                    

部署存储设备

这一步主要目的是给连接在存储服务器的存储设备建立挂载点。

因为我们是虚机模拟环境下的All-in-One安装,所以我们使用回环设备(loopback device)。

1) 建立回环设备

sudo mkdir /srv
sudo truncate -s 1GB /srv/swift-disk
sudo mkfs.xfs /srv/swift-disk

这里面的truncate命令是用来调整分区大小的。

2) 接下来编辑 /etc/fstab 文件,添加下面内容:

/srv/swift-disk /mnt/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0

修改这个文件的目的是在系统启动时能够自动挂载分区。

3) 建立挂载点并添加链接

sudo mkdir /mnt/sdb1
sudo mount /mnt/sdb1
sudo mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
sudo chown ${USER}:${USER} /mnt/sdb1/*
for x in {1..4}; do sudo ln -s /mnt/sdb1/$x /srv/$x; done
sudo mkdir -p /srv/1/node/sdb1 /srv/1/node/sdb5 \\
            /srv/2/node/sdb2 /srv/2/node/sdb6 \\
            /srv/3/node/sdb3 /srv/3/node/sdb7 \\
            /srv/4/node/sdb4 /srv/4/node/sdb8 \\
            /var/run/swift
sudo chown -R ${USER}:${USER} /var/run/swift
# **Make sure to include the trailing slash after /srv/$x/**
for x in {1..4}; do sudo chown -R ${USER}:${USER} /srv/$x/; done

添加启动设备

将下面的内容添加到 /etc/rc.local

(使用自己的用户名替代下面的 sysadm )

mkdir -p /var/cache/swift /var/cache/swift2 /var/cache/swift3 /var/cache/swift4
chown sysadm:sysadm /var/cache/swift*
mkdir -p /var/run/swift
chown sysadm:sysadm /var/run/swift

正式部署

获取代码

1) 从git版本库中检出python-swiftclient代码

cd $HOME
git clone https://github.com/openstack/python-swiftclient.git

2) 以develop模式安装python-swiftclient

cd $HOME/python-swiftclient
sudo pip install -r requirements.txt
sudo python setup.py develop
cd -

3) 同样的步骤,这次检出swift代码

cd $HOME
git clone https://github.com/openstack/swift.git

4) 同样安装develop模式下的swift

cd $HOME/swift
sudo pip install -r requirements.txt
sudo python setup.py develop
cd -

我在安装这一步的时候出了问题,手工编辑了·requirements.txt文件,删掉了;python-version`部分才得以成功。

5) 安装swift测试用依赖

cd $HOME/swift; sudo pip install -r test-requirements.txt

设置rsync

1) 首先建立 /etc/rsyncd.conf

复制样例文件到/etc目录下。然后修改其中的<your-user-name>为当前用户名。

sudo cp $HOME/swift/doc/saio/rsyncd.conf /etc/
sudo sed -i \"s/<your-user-name>/${USER}/\" /etc/rsyncd.conf

2) 启用rsync

编辑/etc/default/rsync。找到下面一行,将值修改为true

RSYNC_ENABLE=true

3) 关闭SELinux(如果没有SELinux就跳过这一步)

使用下面的命令:

sudo setenforce Permissive

或者是仍然开启SELinux,仅是给rsync完全访问权限。

sudo setsebool -P rsync_full_access 1

4) 启动rsync服务

sudo service rsync restart

5) 上面几步完成后,你可以通过运行下面的命令来检查rsync有没有正常工作

rsync rsync://pub@localhost/

启用memcached

我们上面用apt-get安装了memcached,启用方式和同类服务类似:

sudo service memcached start
sudo chkconfig memcached on

(可选)设置独立日志

虽然这个被官方标为“可选”,换句话说就是可以不用配置,不过日志在开发调试中起到的作用是很大的。这个独立日志功能还是推荐启用。

1) 将示例配置文件复制到rsyslog的配置目录中

sudo cp $HOME/swift/doc/saio/rsyslog.d/10-swift.conf /etc/rsyslog.d/

2) 在/etc/rsyslog.conf中进行如下的配置

这个配置项通常在 GLOBAL DIRECTIVES 部分中。

$PrivDropToGroup adm

3) 建立小时目录

sudo mkdir -p /var/log/swift/hourly

4) 修改日志目录权限并启用日志

sudo chown -R syslog.adm /var/log/swift
sudo chmod -R g+w /var/log/swift
sudo service rsyslog restart

再写下去这篇内容就太长了,接下来的内容请关注:

Swift All In One(SAIO,Swift单机版)部署文档(二)