ceph-deploy添加monitor步骤与问题

使用ceph-deploy来添加删除ceph monitor

需求

在运维ceph集群中,有时候为了高可靠性需求,需要添加或删除ceph monitors,或者修改ceph monitor所在的机器(可通过先添加后删除来完成)。

步骤

安装ceph-deploy

选择一个能访问ceph集群的节点,一般可以选择一个ceph集群的节点,安装 ceph-deploy。

操作 Ceph Hammer 0.94.x 和 Jewel 10.2.x的集群时候,使用 1.5.33+版本的ceph-deploy。

操作 Ceph Luminous 12.2.x+版本的集群时候,使用 2.0.0+版本的ceph-deploy。


后面的示例主要针对我们当前Ceph版本为0.94.x 和 10.2.x的集群,所以使用1.5.33+版本的ceph-deploy。

# ceph-deploy --version
1.5.33


准备目录和文件

因为ceph-deploy执行时候依赖当前目录的 ceph.conf 和其他一些keyring文件,并且执行命令过程中会在当前目录生成log文件,所以我们需要在操作前,做下面操作:

# mkdir -p ceph/ceph-deploy
# cd ceph/ceph-deploy/
# cp /etc/ceph/ceph.conf ./

在一些ceph-deploy的命令执行时,会需要一些keyring文件,根据提示把ceph相关的keyring文件copy到当前目录。

一些ceph相关的keyring文件可以在下面路径找到:

/var/lib/ceph/bootstrap-mds/ceph.keyring

/var/lib/ceph/bootstrap-osd/ceph.keyring

/var/lib/ceph/bootstrap-rgw/ceph.keyring


也可以通过: ceph auth list 命令来获取,并根据需求创建并填写到所需要的keyring文件中。


ceph-deploy节点无秘访问ceph monitor节点

在创建ceph monitor之前,先保证ceph-deploy执行节点与新的ceph monitor节点的ssh 无秘访问!

ceph-deploy节点执行:
# ssh-keygen
# cat ~/.ssh/id_rsa.pub
 
 
ceph monitor节点执行:
# vim ~/.ssh/authorized_keys
... 添加ceph-deploy节点的 id_rsa.pub


检查ceph-deploy节点可以无秘访问ceph monitor节点:

# cat /etc/hosts
... 有访问ceph monitord ip配置
 

# ssh <new-monitor-node>


创建新的ceph monitor

通过ceph-deploy可以很方便的创建一个新的ceph monitor,并加入ceph集群,命令如下:

# ceph-deploy mon create <new-monitor-node>

备注:若ceph monitor节点有多个网络,最好在ceph.conf文件里指定ceph monitor的public_network。

若上述命令失败,提示要覆盖写ceph.conf,上面命令添加参数: --overwrite-conf


之后检查ceph -s 输出,看是否有新的monitor添加进来。


测试中发现,若ceph没有开启认证,如下,ceph-deploy添加的monitor可以正常加入集群。

# vim ceph.conf
...
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
...


若ceph开启认证,如下,ceph-deploy添加的monitor可以无法正常加入集群!

# vim ceph.conf
...
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
...

在添加的ceph monitor节点,查看ceph-mon的log,有如下发现:

...
2019-03-22 13:34:48.916482 7f583a5ad700  0 mon.ceph-node2@0(probing) e0 ms_verify_authorizer bad authorizer from mon 10.10.80.65:6789/0
2019-03-22 13:34:48.916497 7f583a5ad700  0 -- 10.10.80.67:6789/0 >> 10.10.80.65:6789/0 pipe(0x55907060e800 sd=23 :6789 s=0 pgs=0 cs=0 l=0 c=0x5590705b8a80).accept: got bad authorizer

看来是认证不对,查看ceph-mon的keyring:

# cat /var/lib/ceph/mon/ceph-ceph-node2/keyring
[mon.]
    key = AQAs3+RcAAAAABAAt2IbDuNfrhgz/QRUDUZmuQ==
    caps mon = "allow *"

这个keyring与正常的ceph-mon节点对比,发现不一致!!!

(这个是因为ceph-deploy会在添加ceph monitor时,检查本地目录是否有:ceph.mon.keyring,没有就创建一个,但是这个新的ceph.mon.keyring 文件跟现有的ceph monitor的认证不一致!)


拿正常的ceph-mon节点的keyring来修改启动失败节点的keyring,然后重启ceph-mon daemon,再查看新的ceph monitor添加成功!

# vim /var/lib/ceph/mon/ceph-ceph-node2/keyring
[mon.]
    key = AQAHhdtcAAAAABAA9HHUaZ968qgYKIa8hwwtBg==
    caps mon = "allow *"
 
 
# systemctl restart ceph-mon@ceph-node2.service
# # ceph -s
    cluster c155e321-e08a-4f52-aa76-acd3f8ebe613
     health HEALTH_OK
     monmap e15: 3 mons at {ceph-node0=10.10.80.65:6789/0,ceph-node1=10.10.80.66:6789/0,ceph-node2=10.10.80.67:6789/0}
...


删除已有ceph monitor

通过ceph-deploy可以很方便的删除一个已有的ceph monitor,命令如下:

# ceph-deploy mon destroy <new-monitor-node>


同步ceph集群的配置文件

虽说ceph monitor的启动不依赖ceph.conf里的配置,但为了保证一致性,还是建议更新ceph集群的ceph.conf配置文件。

根据新的ceph monitor配置修改ceph.conf,并推到所有ceph节点!!!

  • 发表于 2019-05-22 13:47
  • 阅读 ( 224 )
  • 分类:Ceph

0 条评论

请先 登录 后评论
不写代码的码农
bruins

9 篇文章

作家榜 »

  1. bruins 9 文章
  2. ictfox 1 文章
  3. Ianasa xia 0 文章
  4. Wangyang 0 文章
  5. yy 0 文章
  6. liangfang 0 文章
  7. wangguoqin1001 0 文章
  8. fatb 0 文章