设为首页 收藏本站
查看: 895|回复: 0

[经验分享] Openstack之Ceph集群操作

[复制链接]

尚未签到

发表于 2018-5-31 12:13:24 | 显示全部楼层 |阅读模式
  Oepnstack之CEPH系列是根据Ceph Cookbook整理的笔记,分为以下几个部分:
  1. 《Ceph简介》
  2. 《Ceph集群操作》
  3. 《Ceph块设备管理与Openstack配置》
  4. 《深入Ceph》
  5. 《ceph优化与性能测试》
  

  **注意:此文对应ceph版本为10.1.2**
~~~bash
#ceph -v
ceph version 10.1.2(4a2a6f72640d6b74a3bbd92798bb913ed380dcd4)
~~~Ceph集群的启动
  在Ceph集群搭建好了后,可以在某个节点的/etc/ceph/ceph.conf中编辑好集群配置,然后在这个节点来管理启动与停止。Cookbook中写了两种方式,加上我自己一个常用的,算是三种吧~
  

1、Sysvint的方式:
~~~bash
将整个集群启动或停止
# /etc/init.d/ceph  -a start|stop
启动本节点的monitor进程
# /etc/init.d/ceph start mon
启动所有节点的monitor进程。
# /etc/init.d/ceph -a start mon
类似还有:
# /etc/init.d/ceph  [-a]  start|stop  <osd|mds|ceph-radosgw>
-a 代表启动ceph.conf中所有主机
还可以单独启动或停止某一个守护进程的实例:
起停ceph-host1上mon进程
# /etc/init.d/ceph start|stop mon.ceph-host1
起停osd.1的守护进程,如果osd.1不在本机则需要加-a参数,其他同理。
# /etc/init.d/ceph start|stop osd.1
~~~2、Linux service命令方式:
  其实没什么特别的,只是把"/etc/init.d/ceph" 换成了"service ceph",后面的都一样。
3、命令方式:
  我目前在用的,使用"/usr/bin/ceph-mon"、"/usr/bin/ceph-osd"。
~~~bash
#/usr/bin/ceph-mon -i a|b|c
#/usr/bin/ceph-osd -i  0|1|2|3....
#a、b、c对应mon中的id,0、1、2、3对应osd中的id
~~~  使用命令来启动守护进程,这样做的后果是要在每台机都手动执行,我的方法是写在/etc/rc.local里面,暂时还没研究和前面两种有什么区别,从启动的进程来看,service启动是"/usr/bin/python /usr/sbin/ceph-create-keys --cluster ceph -i a",而命令启动则很简单"/usr/bin/ceph-mon -i a"。
Ceph集群扩展与缩小
  传统的向上扩展(Scale-up)采用的是堆加硬盘的方式,到了一定规模的存储容量后,会受到自身的控制器,计算性能无法提升等影响。而ceph采用的横向扩展(Scale-out)方式,会将CPU、内存等其他资源一同加入集群,因此而线性提升性能。
  PS:好久没接触传统存储了,但印象中EMC、IBM的高端存储似乎都有横向扩展,线性增加性能的解决方案,也都提出了软件定义存储的概念,这个感觉像是CEPH在吹牛啊。。
  

1、Ceph扩展之添加osd
  书上采用ceph-deploy方式,我们继续采用命令添加方式,操作系统识别到新硬盘后:
~~~bash
创建osd ID,会返回当前已有的osd个数+1
#ceph osd create
10
创建挂载点
#mkdir -p /var/lib/ceph/osd/ceph-10
#格式化新硬盘
# mkfs.xfs /dev/sdg
挂载硬盘
# mount  -o inode64,noatime /dev/sdg /var/lib/ceph/osd/ceph-10
格式化osd
# ceph-osd -i 10 --mkfs
设置该osd的位置与权重,host对应当前主机
#ceph osd crush add osd.10 root=default rack=unknowrack host=ceph-host10
启动守护进程
# ceph-osd  -i 10
查看状态,可以看到该osd是否加入和数据同步
#ceph osd tree
#ceph -w
~~~2、Ceph扩展之添加mon
  mon节点的添加比较简单,要记住在生产环境中需要保持奇数个monitor节点,保证集群仲裁的中立性。
~~~bash
创建挂载点
#mkdir -p /var/lib/ceph/mon/ceph-d
格式化mon
ceph-mon -i d --mkfs  --fsid   $CLUSTER-ID
cluster-id通过ceph -s查看,其实也是创建第一个mon节点时的uuid
启动守护进程
#ceph-mon -i d
查看状态
#ceph -s
~~~3、Ceph缩小之移除osd
  在移除osd前,先ceph -s确认集群状态正常,以及移除后空间是否足够。
  移除osd步骤为:
  

  - 将osd盘out,当osd盘为out状态时,该osd盘会停止提供服务,并将所存数据转移到其他盘。
  - 将osd盘down
  - 将osd盘从crush中rm
  - 将osd盘密钥del
  - 将osd从osd tree中rm
~~~bash
将osd.10移除集群,使用ceph -w查看数据转移,观察osdmap,up数量不变,in个数-1
#ceph osd  out osd.10
停止osd.10守护进程,使用ceph osd tree确认状态
#service stop osd.10
或者
#ps -ef |grep osd,查找进程然后kill
从crush map中删除,使用ceph -s查看osdmap,up和in的数量-1
#ceph osd crush remove osd.10
删除验证密钥
# ceph auth del osd.10
删除osd盘,使用ceph -s查看osdmap数量-1
ceph osd rm osd.10
如果该主机上osd都被清楚,也可以在crush map中移除主机信息,同上crush移除命令
ceph osd crush remove ceph-host10
~~~4、Ceph缩小之移除mon
  移除mon的前提是保证有足够仲裁节点,步骤很简单
~~~bash
停止Monitor守护进程
#ps -ef |grep mon
# kill -9 $PID
删除对应目录,或是备份移走
#rm -rf /var/lib/ceph/mon/mon-d
检查仲裁状态,检查monitor状态
# ceph quorum_status --format json-pretty
# ceph mon stat
~~~Ceph集群故障维护
  Ceph集群的维护分为两个部分,OSD故障处理,设置集群状态标志位
OSD故障磁盘处理
  场景:当ceph集群中某块硬盘出现故障时,修要进行替换与修复。
  1、发现故障
~~~bash
硬盘故障,osd盘会报down。
#ceph osd tree
~~~  注意:<span style="color:red">当一个osd盘处于down的状态时,集群数据不会立即发生变化,默认情况下,会等待5分钟判断osd是否不再up,从而标记该盘为out,然后开始数据同步。可以根据需要手动设置等待时间。</span>
  2、找到出现down的盘,确认已发生故障,可以等待5分钟自动out也可以手动out此osd
~~~bash
#ceph osd out osd.5
~~~  3、接下来的步骤与上述删除osd相同,crush rm、osd rm等等。删除osd后,观察ceph -s,等待HEALTH_OK,集群数据同步完成。
  <br>
  4、拔出服务器故障硬盘,插入新硬盘,接下来步骤与添加osd盘相同。
  

集群维护标志位
  在我们上述的Ceph集群操作过程,Ceph对外的服务一直都没有中断,但在数据同步的过程不免有性能损失,因此在生产环境中做变更实施时,Ceph提供一些方法来维持当前运行状态,如设置标志位,然后在业务非高峰期取消标志位让其数据同步。
1、标志位设置
~~~bash
#ceph osd set|unset <flag_name>
~~~  ceph提供的标志位列表:
  


  •   noout:无论当前osd状态如何,ceph集群不会将任何osd标记为out
  •   nodown:无论当前osd状态如何,ceph集群不会将任何osd标记为down
  •   noup:ceph集群不会将任何已经DOWN的osd标记为UP状态
  •   noin:ceph集群不允许新的osd加入集群,在一次添加多个osd而不想让其自动加入集群非常游泳
  •   norecover: ceph集群不做集群恢复(cluster recovery)
  •   nobackfill:ceph集群不做数据回填(backfilling)
  •   norebalance:ceph集群不做集群再平衡(cluster rebalancing)
  •   noscrub :ceph集群不做osd清理(scrubbing)
  •   nodeep-scrub:ceph集群不做osd深度清理(deep-scrubbing)
  •   notieragent:禁用缓存分层代理(cache pool tiering agent)
  

  除了以上标志位,还有ceph命令来修复osd和pg
~~~bash
#ceph osd repair:修复特定osd
#ceph pg repair :修复特定PG,谨慎使用
#ceph pg scrub : 清理指定PG
#ceph deep-scrub:指定PG深度清理
~~~  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-484607-1-1.html 上篇帖子: 跟峰哥学最精准的openstack 下篇帖子: Ceph块设备管理与Openstack配置(上)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表