创业公司分布式文件系统的首选swift

作者: stepyu | 来源:发表于2016-06-24 15:13 被阅读1087次

当前数据量激增,数据落地的载体是文件,各种终端不断产生着大量的各种类型各种大小的文件,从几k的文本或者网页文件到几M的图片文件,几十M的视频文件到几G的高清视频文件,镜像文件,不一而足,硬件性价比持续增高,带宽性价比持续增高的情况下,对文件的高并发低延迟的请求是一种必然的趋势,而传统的文件系统难以达到这种要求,分布式文件系统,在云计算时代,要担当文件系统的使命。
swift是由大名鼎鼎的Rackspace 在2010年贡献给openstack来作为对象存储系统的,主要优点有:

  1. 大公司领衔开源,openstack核心组件,新浪和韩国电信已经基于swift做出商用的对象存储系统。
  2. 使用一致性hash,选取存取节点,去中心化,方便于水平扩展。
  3. 有完善的权限控制,支持对接外部权限控制中间件(方便对接本公司的权限控制或认证服务)
  4. hadoop默认支持兼容swift对象存储系统(另外还兼容的是Amazon S3Azure Blob Storage),便于后续存储文件的大数据处理,弥补了hdfs对大量小文件的存取的低效以及空间的浪费

今天就想介绍下swift的分布式部署,后续会持续介绍swift的组件架构分析及性能测试等

操作系统:Ubuntu 14.04.4 LTS

安装拓扑
  1. proxy-swift 10.0.41.20
  2. swift-store-node 10.0.41.21 挂载 sdb sdc 两个磁盘
  3. swift-store-node 10.0.41.22 挂载 sdb sdc 两个磁盘
安装依赖(每个节点都要安装)
apt-get install software-properties-common
add-apt-repository cloud-archive:mitaka
apt-get update && apt-get dist-upgrade
#安装apt-get install python-openstackclient(非必需)
apt-get install python-openstackclient
swift-proxy 安装
apt-get install swift swift-proxy python-swiftclient \
  memcached
mkdir /etc/swift
curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka
修改配置
vi /etc/swift/proxy-server.conf
修改[DEFAULT]区域
[DEFAULT]
...
bind_port = 8080
user = swift
swift_dir = /etc/swift
修改[app:proxy-server]区域
[app:proxy-server]
use = egg:swift#proxy
...
account_autocreate = True
swift-store-node 安装
格式化,并挂载磁盘
mkfs.xfs -f /dev/sdb
mkfs.xfs -f /dev/sdc

mkdir -p /srv/node/sdb
mkdir -p /srv/node/sdc

vi /etc/fstab

/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

mount /srv/node/sdb
mount /srv/node/sdc
修改rsyncd配置
创建/etc/rsyncd.conf添加内容
uid = root
gid = root
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = MANAGEMENT_INTERFACE_IP_ADDRESS #(10.0.41.21/22)

[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
vi  /etc/default/rsync
#修改 RSYNC_ENABLE=true
service rsync start
安装依赖
apt-get install swift swift-account swift-container swift-object

curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/mitaka
curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/mitaka
curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/mitaka
修改 /etc/swift/account-server.conf配置

修改[DEFAULT]区域

    [DEFAULT]
...
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6002
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

修改[filter:recon]区域

    [filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
    ```

######修改 `/etc/swift/container-server.conf`配置
修改`[DEFAULT]`区域

```shell
    [DEFAULT]
...
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
    ```
修改`[filter:recon]`区域

```shell
    [filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
    ```
######修改`/etc/swift/object-server.conf`文件

 修改`[DEFAULT]`区域

```shell
    [DEFAULT]
...
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
    ```
 修改`[filter:recon]`区域
```shell
    [filter:recon]
use = egg:swift#recon
...
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
    ```
######创建`cache`目录
```shell
mkdir -p /var/cache/swift
chmod -R 775 /var/cache/swift
Create and distribute initial rings (在 swiftk-proxy上操作)
cd /etc/swift/
swift-ring-builder account.builder create 10 3 1

swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6002 --device sdb --weight 100
swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6002 --device sdc --weight 100
swift-ring-builder account.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6002 --device sdb --weight 100
swift-ring-builder account.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6002 --device sdc --weight 100

swift-ring-builder account.builder
swift-ring-builder account.builder rebalance


swift-ring-builder container.builder create 10 3 1

swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6001 --device sdb --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6001 --device sdc --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6001 --device sdb --weight 100
swift-ring-builder container.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6001 --device sdc --weight 100

swift-ring-builder container.builder
swift-ring-builder container.builder rebalance


swift-ring-builder object.builder create 10 3 1

swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6000 --device sdb --weight 100
swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 10.0.41.21 --port 6000 --device sdc --weight 100
swift-ring-builder object.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6000 --device sdb --weight 100
swift-ring-builder object.builder add \
  --region 1 --zone 2 --ip 10.0.41.22 --port 6000 --device sdc --weight 100

 swift-ring-builder object.builder
 swift-ring-builder object.builder rebalance
把/etc/swift/*.ring.gz 文件拷贝到 store node 的/etc/swift/ 目录
cd /etc/swift ; scp root@10.0.41.20:/etc/swift/*.ring.gz ./
finally install (在swift-proxy节点上执行)
curl -o /etc/swift/swift.conf \
  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/mitaka
修改/etc/swift/swift.conf配置

vi /etc/swift/swift.conf

修改[swift-hash]区域
[swift-hash]
...
swift_hash_path_suffix = HASH_PATH_SUFFIX
swift_hash_path_prefix = HASH_PATH_PREFIX
可用下面的方式生成随机字符串,替换上面的HASH_PATH_SUFFIX

openssl rand -hex 10

swift.conf文件拷贝到所有的store node
cd /etc/swift ; scp root@10.0.41.20:/etc/swift/swift.conf ./
启动swift
  1. 启动swift-proxy
    service memcached restart
    service swift-proxy restart
    
  2. 启动swift-store-node
    swift-init all start
    

相关文章

网友评论

    本文标题:创业公司分布式文件系统的首选swift

    本文链接:https://www.haomeiwen.com/subject/johodttx.html