linux多点测试,Ubuntu下Swift多节点安装测试小结

4      配置Storage Node

4.1        在所有StorageNode上安装库

swift@Ubuntu:~$ sudo apt-get installswift-account swift-container swift-object xfsprogs

4.2        为StorageNode的每个存储设备安装XFS逻辑卷

需要根据Storage Node的存储设备实际情况,为每个存储设备安装XFS逻辑卷。

swift@ubuntu:~$ sudo fdisk /dev/sdb #需要建立独立分区

swift@ubuntu:~$ sudo mkfs.xfs -i size=512/dev/sdb1

如果文件系统小于100MiB或有大量小型档案,建议使用512字节区块;其余情况建议使用4KiB区块。

swift@ubuntu:~$ sudo vim /etc/fstab

/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=80 0

swift@ubuntu:~$ sudo mkdir -p/srv/node/sdb1

swift@ubuntu:~$ sudo mount -o inode64 /srv/node/sdb1

如果磁盘大于1T,上面的mount命令可以加上-o inode64以达到更好的性能。

swift@ubuntu:~$ sudo chown swift:swift/srv/node/sdb1

4.3        创建rsync配置文件

swift@ubuntu:~$ sudo su #切换用户后,需重新定义STORAGE_LOCAL_NET_IP

root@ubuntu:~$ cat >/etc/rsyncd.conf<

uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = $STORAGE_LOCAL_NET_IP

[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

EOF

root@ubuntu:~$ su swift #切换用户后,需重新定义STORAGE_LOCAL_NET_IP

4.4        修改rsync标签

swift@ubuntu:~$ sudo perl -pi -e's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/' /etc/default/rsync

4.5        启动rsync服务

swift@ubuntu:~$ sudo service rsync restart

如果服务不能正常启动,请检查rsync配置文件。

确认rsync是否已连接所有服务:

swift@ubuntu:~$ rsyncrsync://pub@$STORAGE_LOCAL_NET_IP/

4.6        创建account、container和object rings配置文件

swift@ubuntu:~$ cat>/etc/swift/account-server.conf <

[DEFAULT]

bind_ip = $STORAGE_LOCAL_NET_IP

workers = 2

[pipeline:main]

pipeline = account-server

[app:account-server]

use = egg:swift#account

[account-replicator]

[account-auditor]

[account-reaper]

EOF

swift@ubuntu:~$ cat>/etc/swift/container-server.conf <

[DEFAULT]

bind_ip = $STORAGE_LOCAL_NET_IP

workers = 2

[pipeline:main]

pipeline = container-server

[app:container-server]

use = egg:swift#container

[container-replicator]

[container-updater]

[container-auditor]

[container-sync]

EOF

swift@ubuntu:~$ cat>/etc/swift/object-server.conf <

[DEFAULT]

bind_ip = $STORAGE_LOCAL_NET_IP

workers = 2

[pipeline:main]

pipeline = object-server

[app:object-server]

use = egg:swift#object

[object-replicator]

[object-updater]

[object-auditor]

EOF

4.7        启动存储服务

swift@ubuntu:~$ sudo swift-init all start

或者单步执行,参照如下:

swift@ubuntu:~$ sudo swift-initobject-server start

swift@ubuntu:~$ sudo swift-initobject-replicator start

swift@ubuntu:~$ sudo swift-initobject-updater start

swift@ubuntu:~$ sudo swift-initobject-auditor start

swift@ubuntu:~$ sudo swift-initcontainer-server start

swift@ubuntu:~$ sudo swift-initcontainer-replicator start

swift@ubuntu:~$ sudo swift-initcontainer-updater start

swift@ubuntu:~$ sudo swift-initcontainer-auditor start

swift@ubuntu:~$ sudo swift-initaccount-server start

swift@ubuntu:~$ sudo swift-initaccount-replicator start

swift@ubuntu:~$ sudo swift-initaccount-auditor start

5      HTTP测试

5.1        获得X-Storage-Url和X-Auth-Token

swift@ubuntu:~$ curl -k -v -H'X-Storage-User: system:root' -H 'X-Storage-Pass: testpass' https://$PROXY_LOCAL_NET_IP:8080/auth/v1.0

5.2        检测是否可以使用HEAD命令查询account状态

命令格式如下:

curl -k -v -H 'X-Auth-Token:'

具体示例如下:

curl -k -v -H 'X-Auth-Token: AUTH_tk2e46a17833d5474cb29ea22720457ac1' https://$PROXY_LOCAL_NET_IP:8080/v1/AUTH_system

5.3        Swift常用命令

检测swift命令是否正常工作,预期输出应为zero containers、zero objects和zero bytes:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass stat

新建一级子目录mycontainer1:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass post mycontainer1

把本地指定文件上传到一级子目录mycontainer1中:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass upload mycontainer1 /etc/swift/*.builder

列出根目录的细节:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass list

列出一级子目录的细节:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass list mycontainer1

删除一级子目录mycontainer1下的某个指定文件:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass delete mycontainer1 etc/swift/account.builder

把一级子目录mycontainer1中的资源都下载到本地当前目录:

swift@ubuntu:~$ swift -Ahttps://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -U system:root -K testpass download mycontainer1

6      FTP测试

6.1        在ProxyNode上下载并安装ftp-cloudfs

方法一:

swift@ubuntu:~$ git clone https://github.com/cloudfs/ftp-cloudfs.git

swift@ubuntu:~$ cd ftp-cloudfs/

swift@ubuntu:~$ Python setup.py install

swift@ubuntu:~$ sudo apt-get installpython-pip

swift@ubuntu:~$ pip install ftp-cloudfs

方法二:

swift@ubuntu:~$ sudo apt-get installpython-virtualenv

swift@ubuntu:~$ virtualenv ENV

swift@ubuntu:~$ source ENV/bin/activate

swift@ubuntu:~$ sudo apt-get installpython-pip

swift@ubuntu:~$ pip install --upgrade pip

swift@ubuntu:~$ pip install ftp-cloudfs

6.2        启动ftp-cloudfs服务

单用户情况下,可以使用如下命令启动ftp-cloudfs服务:

swift@ubuntu:~$ ftpcloudfs -b $PROXY_LOCAL_NET_IP -a https://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 -f

多用户情况下,推荐使用如下命令启动ftp-cloudfs服务,性能会相对好些:

swift@ubuntu:~$ ftpcloudfs -b $PROXY_LOCAL_NET_IP -a https://$PROXY_LOCAL_NET_IP:8080/auth/v1.0 --memcache=$PROXY_LOCAL_NET_IP:11211--log-file /tmp/ftpcloufs.log

这里使用了Proxy Node的memcache作为共享缓存。此外,我们把FTP相关的log输出到/tmp/ftpcloufs.log中便于查看。如果作为产品发布,建议还是使用--syslog。

如果要停止ftp-cloudfs服务,可以使用这条命令:

swift@ubuntu:~$ kill `cat/tmp/ftpcloudfs.pid`

6.3        Windows客户端FTP访问

可以在Windows客户端安装FTP工具(例如FileZilla),或者直接通过IE浏览器简单访问ftp://172.17.10.14:2021。

主机:172.17.10.14

用户名:system:root

密码:testpass

端口:2021

预期可以访问成功,并能够正常地上传、下载、新建、删除、重命名文件和目录等。

6.4        Linux客户端FTP访问

swift@ubuntu:~$ ftp 172.17.10.14 2021

然后输入用户名密码,就可以访问成功并正常使用了。

常用的几个FTP命令如下:

cd remote-dir:进入远程主机目录。

ls [remote-dir] [local-file]:显示远程目录remote-dir,并存入本地文件local-file(和dir命令相同)。

mkdir dir-name:在远程主机中建一目录。

rmdir dir-name:删除远程主机目录。

rename [from] [to]:更改远程主机文件名。

delete remote-file:删除远程主机文件。

mdelete [remote-file]:删除远程主机文件。

get remote-file [local-file]:将远程主机文件remote-file传至本地文件local-file。

mget remote-files:传输多个远程文件。

put local-file [remote-file]:将本地文件local-file传送至远程主机。

mput local-file:将多个文件传输至远程主机。

pwd:显示远程主机的当前工作目录。

bye:退出ftp会话过程(和quit命令相同)。

7      调试手段

7.1        日志查询

Swift的相关日志会输出到var/log/syslog中。

7.2        增强日志

var/log/syslog可能日志太少影响定位问题,我们可以增强日志。参考http://docs.openstack.org/developer/swift/deployment_guide.html#account-server-configuration,可以在/etc/swift/proxy-server.conf等配置文件中设定log的输出等级为DEBUG。

例如,/etc/swift/proxy-server.conf文件中,[app:proxy-server]这一部分追加了setlog_level = DEBUG,[filter:tempauth]这一部分追加了set log_level = DEBUG。

7.3        查看端口

使用“telnet IPPORT”或者“lsof -i PORT”命令查看端口。Proxy Node上主要关注端口11211/8080/2021等,Storage Node上主要关注Ring的相关端口,如6000/6001/6002等。

8      小结

Swift牺牲一定程度的数据一致性,来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

由于Swift的弱一致性,所以在刚刚新建或刚刚删除一个文件后,我们立即去查看,可能看到的结果不符合预期,稍等一会儿再查看,就正常了。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值