今天对swift的弹性做测试,看下swift有多健壮,瞠目结舌
proxy01:172.18.48.21
proxy02:172.18.48.22 (增加)
storage01:172.18.48.23
storage02:172.18.48.24
storage03:172.18.48.25
storage04:172.18.48.26 (增加)
初始化集群:
proxy01 storage01-03
一:增加proxy02
1.配置和proxy大致类似,不同是如下:
vim /etc/swift/proxy-server.conf
[filter:cache]
use = egg:swift#memcache
memcache_servers = $PROXY01_LOCAL_NET_IP:11211,$PROXY02_LOCAL_NET_IP:11211
2.把proxy01中,/etc/swift/中的文件scp到proxy02下,启动proxy上proxy-server
二:减少proxy,直接关掉任意一个proxy节点,对集群没有影响
三:模拟storage节点宕机,任意关掉一台或两台storage节点,在proxy节点数据仍可读可下载,但是,要upload数据,则至少有两台storage开着,这是出于数据备份考虑,只有一台storage时候不能upload
四:增加storage04
1.配置storage04
2.在proxy01(或者proxy02)节点执行如下
swift-ring-builder account.builder add z4-172.18.48.26:6002/sdb1 100
swift-ring-builder container.builder add z4-172.18.48.26:6001/sdb1 100
swift-ring-builder object.builder add z4-172.18.48.26:6000/sdb1 100
3.重新reblance
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance
reblance之前如下图:(以account为例,container和object一样)
重新rebalance之后:
3.把proxy01上*.builder scp到proxy02的/etc/swift/下,在proxy02重启proxy-server即可
五:当storage02硬盘坏掉,需要remove storage02,操作如下:
1.设置storage02权重设为0
swift-ring-builder account.builder set_weight z2-172.18.48.24:6002/sdb1 0
swift-ring-builder container.builder set_weight z2-172.18.48.24:6001/sdb1 0
swift-ring-builder object.builder set_weight z2-172.18.48.24:6000/sdb1 0
2.在storage02执行remove操作
swift-ring-builder account.builder remove z2-172.18.48.24:6002/sdb1
swift-ring-builder container.builder remove z2-172.18.48.24:6001/sdb1
swift-ring-builder object.builder remove z2-172.18.48.24:6000/sdb1
3.重新rebalance
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance
重新reblance之后如下图:(以account为例,container和object一样)
4.把proxy01上*.builder scp到proxy02的/etc/swift/下,在proxy02重启proxy-server即可
已把storage02机器从集群移除,OK!!!