首页 > 代码库 > Ceph配置参数(三)

Ceph配置参数(三)

Ceph配置参数(一)

Ceph配置参数(二)


8、MONITOR CONFIG REFERENCE
http://ceph.com/docs/master/rados/configuration/mon-config-ref/
        客户端在读写数据前,都比去和monitor取得联系,获得cluster map,结合CRUSH算法计算得到对象的位置。
(1)最小配置
        生成一个fsid和monitorde的最小配置,配置字段[mon]或[mon.a],ceph监视器默认监听6789端口。
  • 主机名(e.g. mon host = hostname1,hostname2,hostname3): mon host
  • 主机IP(e.g. mon addr = 10.0.0.10:6789,10.0.0.11:6789,10.0.0.12:6789):mon addr
(2)初始成员
        必须是个奇数,表示一个初始的最小monitor数,active的monitor达到这个数才能启动。
  • 初始monitor成员ID: mon initial members
(3)数据
        monitor存储数据的路径,因为monitor也是在节点上的,monitor会做很多fsync()操作,影响OSD的工作负载,在0.58以前的版本中,monitor的数据是以文件形式存放的,可以用ls,cat等命令直接查看,但是一致性难以保障。之后的版本,数据以key/value的形式存放,并且需要原子性操作,保证一致性,数据保存路径不建议改动。
  • monitor数据保存路径(e.g. /var/lib/ceph/mon/$cluster-$id):mon data
(4)存储容量
        当集群的使用率接近"最大容量"时,monitor会阻止对OSD的读写请求以避免数据丢失,考虑到多个主机可能同时断电造成集群容量剧减,这个"最大容量"通常小于实际的集群总容量,配置段位[global]。
  • 被认为集群已满的最大使用百分比(默认.95):mon osd full ratio
  • 被认为集群接近已满的最大使用百分比(默认.85):mon osd nearfull ratio
(5)monitor间的同步
       集群间存在多Monitor共同工作时,存在同步的问题,不必每个monitor都active集群才工作,只要达到最小可工作数量就行了,这个数量在mon initial members中规定,所以有可能一些mon在某一时刻不工作,后来恢复正常后状态就落后了。monitor三种角色:leader,最先获得最新的cluster map;provider,拥有最新的cluster map,但不是最先获得的;requester,状态落后,必须同步后方可工作。
        在一个同步过程中,requester向leader请求同步,leader负责分派同步工作给provider,并告知requester去找provider,这样做分摊了工作负载。provider以chunk为单位发给requester最新的状态数据,同步完后,requester告知leader完成,leader恢复一个ACK宣布同步结束。
        同步总是在一个新的monitor加入集群时发生。在运行过程中,cluster map不断更新,这三个角色也不断变化,如果provider接受到同步任务但自身状态落后于leader时,它可以终止同步并告知leader。同步完成后,ceph发出一个trimming,这个操作大概是修剪多余的状态数据,并且这个操作必须在PG状态是active+clean时进行。
  • trimming操作超时(默认30s):mon sync trim timeout
  • 同步时心跳超时(monotor之间的心跳检查,默认30s):mon sync heartbeat timeout
  • 同步时心跳检查间隔(默认5s):mon sync heartbeat interval
  • 同步超时(默认30s):mon sync timeout
  • 同步最大重试次数(默认5):mon sync max retries
  • 同步最大负载量(默认1045676):mon sync max payload size
  • leader等待requester同步的最大时间(默认10s):mon accept timeout
  • map更新前收集更新信息的时间间隔(默认1s):paxos propose interval
  • 收集更新信息的最小时间(默认0.05s):paxos min wait
  • trimming操作前能容忍的最大proposal数(默认30):paxos trim tolerance
  • 未trimming时最大的版本数(默认100):paxos trim disabled max versions
  • Monitor版本租约秒数(默认5):mon lease
  • leader去更新其他monitor租约的时间间隔数(默认3s):mon lease renew interval
  • leader等待provider告知其版本的秒数:mon lease ack timeout
  • OSD map维持的最小版本号数量(默认500):mon min osdmap epochs
  • monitor维护的最多的PG map版本号数量(默认500):mon max pgmap epochs
  • monitor保留的最大的log版本号数量(默认500):mon max log epochs
(6)时钟
        不同节点间时钟应该同步,否则一些超时和时间戳相关的机制将无法正确运行,运行又monitor的节点还需要安装NTP来同步时钟。然而NTP 级别的时钟同步还不够,即使NTP同步好,ceph也会报出时钟偏移警告,工作量,网络延迟,配置覆盖等也会对同步有影响。
  • 相对于系统时间的偏移:clock offset
  • monitor计时间隔秒数(默认5):mon tick interval
  • monitor间的clock drift(时钟嘀嗒数?,默认.05s):mon clock drift allowed
  • 时钟偏移补偿指数(默认5):mon clock drift warn backoff
  • leader时间检查间隔(默认300s):mon timecheck interval
(7)客户端
  • 客户端每隔Ns尝试一个Monitor直到建立连接(默认3):mon client hung interval
  • 客户端每个Ns会去ping一个monitor(默认10):mon client ping interval
  • 每一个客户端信息产生的log entires数(默认1000):mon client max log entries per message
  • 内存中的客户端信息数据大小(默认100ul << 20):mon client bytes
(8)杂项
  • 集群允许的最大OSD数量(默认10000)mon max osd
  • 集群为客户端和daemon预分配的全局ID数量(默认100):mon globalid prealloc
  • 写了这么多个对象后和底层文件系统同步一次(默认5):mon sync fs threshold
  • subscription 间隔秒数(默认500):mon subscribe interval
  • 使最近的N个PGmap统计数据呈现平滑趋势(默认2):mon stat smooth intervals
  • monitor在bootstrapping前寻找其他Monitor的时间(默认2s):mon probe timeout
  • 元数据和OSD信息可以在内存中驻留的信息大小(默认400ul << 20byte):mon daemon bytes
  • 每个事件最大的log entries数(默认4096):mon max log entries per event

9、Heartbeat Settings
        OSD靠定期检查heartbeat来确认相邻的OSD有没有down,以及在peer过程中检查错误和向monitor汇报自身情况,包括故障发生,PG状态改变,以及检查monitor有没有down。
http://ceph.com/docs/master/rados/configuration/mon-osd-interaction/
(1)MONITOR SETTINGS
  • 向monitor报告down的最小OSD数(默认1):mon osd min down reporters
  • OSD向monitor报告OSD down的最小次数(默认3):mon osd min down reports
  • 宣布一个无响应的OSD down的超时(默认900):mon osd report timeout
  • 自动标记为out的最大的CRUSH单位类型(默认rack):mon osd downout subtree limit
        注:是不是说最大可以标记一个机架out了?
  • 标记一个OSD状态为down和out之前ceph等待的秒数(默认300):mon osd down out interval
  • 自动标记一个新加入的OSD状态为in(默认true):mon osd auto mark new in
  • 自动标记启动中的OSD状态为in(默认为false):mon osd auto mark in
  • 标记在启动过程中被自动标记为out的OSD状态为in(默认true):mon osd auto mark auto out in
  • The minimum ratio of up Ceph OSD Daemons before Ceph will mark Ceph OSD Daemons down(默认.3):mon osd min up ratio
  • The minimum ratio of in Ceph OSD Daemons before Ceph will mark Ceph OSD Daemons out(默认.3):mon osd min in ratio
  • The number of seconds laggy estimates will decay(默认60*60):mon osd laggy halflife
  • The weight for new samples in laggy estimation decay(默认0.3):mon osd laggy weight
  • If set to true, Ceph will scale based on laggy estimations(默认true):mon osd adjust heartbeat grace
  • The weight for new samples in laggy estimation decay(默认.3):mon osd laggy weight
(2)OSD SETTINGS
  • 心跳检查的OSD网络地址(默认主机IP):osd heartbeat address
  • OSDping它的peer的时间间隔(默认6s):osd heartbeat interval
  • OSD心跳停止间隔(默认20s):osd heartbeat grace
  • OSD ping一个monitor的时间间隔(默认30s):osd mon heartbeat interval
  • OSD报告monitor前等待的最大时间(默认120s):osd mon report interval max
  • OSD报告monitor前等待的最小时间(默认5s):osd mon report interval max
  • monitor恢复ACK的超时(默认30s):osd mon ack timeout

10、网络配置
http://docs.ceph.com/docs/master/rados/configuration/network-config-ref/
(1)集群网络配置
        配置字段为[global]
  • 公共网络:public network
  • 私有网络:cluster network
        注:建议私有地址和internet还有公共网络部能互通,这个地址用来做OSD的心跳检查,对象的复制和恢复,单独配置私有地址而不是用公用网络做这些对性能有提升。
(2)monitor网络配置
        配置字段[mon.a]
  • 主机名(不要使用loaclhost):host
  • monitor 地址:mon addr
(3)OSD网络配置
        配置字段[osd.0]
  • 公共地址:public addr 
  • 私有地址:cluster addr
(4)绑定
  • OSD和MDS进程绑定的最小端口号(默认6800):ms bind port min
  • OSD和MDS进程绑定的最大端口号(默认:7100):ms bind port max
  • 允许进程使用IPV6的地址(默认false):ms bind ipv6
(5)TCP
  • 开启nodelay选项(默认true):tcp nodelay
        注:ceph默认关闭了TCP的buffering,使得请求不缓存立即下发,这样增加了网络流量,增加了延迟如果你要传输大量小文件,就把这个选项关了吧。
  • 收到网络连接终止时socket缓冲区大小(默认关闭):tcp rcvbuf
  • tcp读超时(默认900s):ms tcp read timeout
        注:一个客户端请求另一个ceph daemon时需要新建立一个连接,但是又不想关闭现在的连接,现在的连接就不用了,过了这么多秒后,这个连接被标记为空闲状态。

Ceph配置参数(三)