Chinaunix首页 | 论坛 | 博客
  • 博客访问: 810903
  • 博文数量: 274
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 862
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-24 15:31
个人简介

不合格的程序猿

文章分类

全部博文(274)

文章存档

2019年(3)

2018年(1)

2017年(4)

2016年(160)

2015年(106)

我的朋友

分类: 服务器与存储

2016-05-20 14:16:38

8、MONITOR CONFIG REFERENCE
 
客户端在读写数据前,都比去和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。
 
(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、网络配置
 
(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时需要新建立一个连接,但是又不想关闭现在的连接,现在的连接就不用了,过了这么多秒后,这个连接被标记为空闲状态。

转自:
阅读(1592) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~