上一篇介绍了集群的部署,接下来讲一讲集群的管理。
集群管理包括:
一、用户管理
二、卷管理
三、节点管理
四、区域配置
五、集群备份和还原
六、集群自愈
一、用户管理
要想显示某个node的状态信息可以运行sxserver status命令,要想展示某个node的配置信息可以运行sxsetup --info
集群里任意一个node都可以通过sxinit命令成为管理员,一旦成为管理员,其他node都为非管理员,即正常node。
1.指定某个node为管理员
具体命令:sxinit --key -l 192.168.1.111 -A @cluster sx://admin@mycluster
解释如下:提供node的key和IP,并为集群起个别名@cluster。
2.用户创建
拥有管理员权限的node可以创建其他node为他的user,使用sxacl useradd jeff @cluster命令来添加jeff用户。创建的用户拥有一个由密码产生的key,用户jeff可以与admin或者其他用户进行验证性的通信。
3.列出用户
只有管理员可以运行sxacl userlist @cluster命令查看所有用户。
4.获得用户的key
sxacl usergetkey jeff @cluster
5.任何时候你都可以为用户重新设置key值,只要用户隶属于集群就可以修改自己的key,admin还可以强制改变所属用户的key。
sxacl usernewkey jeff @cluster
6.移除用户(随着用户被移除用户所属的卷会被管理员分配给其他用户存储)
sxacl userdel jeff @cluster
二、卷管理
卷是Sx存储的逻辑划分,类似于C、D盘盘符,可以指定卷的大小和访问者,卷管理的文件还可以被压缩和加密,只有admin才可以创建和移除卷。
1.创建一个空白volume
sxvol create -o jeff -r 2 -s 100G @cluster/vol-jeff
-o指定了拥有者jeff,-r表示所属文件被复制2份,-s指定卷的大小,@cluster/vol-jeff指定了卷的名称。
2.创建一个过滤的卷
主要是在客户端与集群进行交互的时候需要的保护措施,可以在任意一个node中通过sxvol filter --list查看可以获得的filter列表。如图:
可以看出有四个可用的filter,下面介绍一个加密功能的卷:
sxvol create -o jeff -r 2 -s 100G -f aes256 @cluster/vol-jeff-aes
第一次访问加密卷的时候会让你创建一个密码。
3.列出所有的volumes
admin列出的volume会列出集群里所有的volume;普通用户列出的volume只是用户能访问的所有volume。
sxls -lH @cluster -l表示会显示更多的信息-H表示显示为方便阅读的信息
4.管理volume权限
volume的权限有四种,
一:None 二、READ 三、WRITE 四、READ AND WRITE
admin和volume拥有者拥有授权和撤销给其他用户的权利,volume的拥有者还可以授权给其他用户的管理卷的权利。显示某卷的权限:
sxacl volshow @cluster/vol-jeff
完全授权给用户bob可用如下命令:
sxacl volperm --grant=read,write bob @cluster/vol-jeff
这样用户bob就可以对卷vol-jeff进行上传和下载操作了。想撤销bob的写权限可以这样:
sxacl volperm --revoke=write bob @cluster/vol-jeff
这样用户bob就只可以对卷vol-jeff进行只读操作了。
5.改变volume的大小
注意改变的大小不能超过node的size。
sxvol modify --size 60G @cluster/vol-jeff
三、节点管理
1.远程集群状态
admin要想获得集群的信息:
sxadm cluster --info @cluster
还可以以另一种方式展示每个node信息:
sxadm cluster --list-nodes -H @cluster
2.rebanalance mode
在对集群进行更改后,会自动进入rebalance mode,这个模式会让数据传输到新的集群架构中。在此期间,所有的基于卷的数据操作都可以正常执行,只是集群自身的改变将不被接受。最重要的一点,在进行这个模式时要保证所有的node都是online状态,rebalance mode不可取消也不可以对集群做任何变化。
3.集群的整体设置大小
比如想给有2个node的集群总体增加200G空间,可使用命令:
sxadm cluster --resize +200G @cluster
集群会自动平均分配100G到每个node。
4.node设置大小
在给单独node设置大小之前得先获得一些信息:
sxadm cluster --info @cluster
注意到Current configuration里列出了两个node的大小(用字节表示),要想改变某个node的大小需要使用:
sxadm cluster --modify 21471836480/192.168.13.28/767dca5e-0b41-45e0-8a47-0035d541a0460737418240/192.168.13.117/f1899af1-9bde-4d75-b29b-e5b5a507f72f @cluster
之后会进入rebanalance mode。
5.node移除
加入现在想移除192.168.13.28节点,有2种方式:
方式一:sxsetup --deactivate
方式二:sxadm cluster --modify 10737418240/192.168.13.117/f1899af1-9bde-4d75-b29b-e5b5a507f72f @cluster
6.创建一个bare node
bare node是一个即将加入集群的node,创建时需要加入参数--bare,注意bare node创建时没有唯一标识UUID,它只会在加入集群后才会被分配。
7.批量操作node
例如想在有2个node的集群再添加2个node,首先创建2个bare node,容量分别为1T,IP分别为192.168.13.127,192.168.13.456,命令如下:
sxadm cluster --modify 21471836480/192.168.13.28/767dca5e-0b41-45e0-8a47-0035d541a04610737418240/192.168.13.117/f1899af1-9bde-4d75-b29b-e5b5a507f72f 1T/192.168.13.127 1T/192.168.13.456 @cluster
四、区域配置
skylable Sx提供了机架感知能力,所以可以给node分区域管理。通过sxadm clister --modify命令:
sxadm cluster --modify 21471836480/192.168.13.28/767dca5e-0b41-45e0-8a47-0035d541a04610737418240/192.168.13.117/f1899af1-9bde-4d75-b29b-e5b5a507f72f
“Rack1:767dca5e-0b41-45e0-8a47-0035d541a046;Rack2:f1899af1-9bde-4d75-b29b-e5b5a507f72f ” @cluster
这样可以把192.168.13.28分配到rack1,把192.168.13.117分配给rack2。
五、集群备份和还原
1.备份:
sxdump --backup-dir /var/backup/sx sx://admin@annoroad
过程中会产生2个脚本sx-backup.sh和sx-restore.sh,加密卷里的数据不会备份到/var/backup/sx,你必须手动转移。
2.还原
运行sx-restore.sh和进行一些必须的配置。
六、集群自愈
1.自动检测
集群在运行过程中可能会出现某些node失效的情况,skylable Sx可以通过心跳机制感知,Raft算法自动使他们失效。这些功能只能在有3个node以上的集群中生效。
2.只读模式设置
sxadm cluster --set-mode=ro @cluster
恢复:
sxadm cluster --set-mode=rw @cluster
3.check storage integrity
前提得是只读模式
sxadm node --check 'storage path'
4.压缩数据
sxsetup --compact
必要时使用
sxadm cluster --force-gc @cluster
5.数据恢复
在某个node可能失效的情况下,你可以尝试数据恢复:
sxadm node --extract=/tmp/RECOVERED 'storage path'