ceph学习

网络:

ceph必须要有公共网络和集群网络:

public network:负责客户端交互以及osd与mon之间的通讯

cluster network:负责osd之间的复制,均衡,回填,数据恢复等操作。

主机上的各个 OSD 最多会用到 4 个端口:

  1. 一个用于和客户端、监视器通讯;
  2. 一个用于发送数据到其他 OSD ;
  3. 两个用于各个网卡上的心跳;

OSD 守护进程默认绑定 从 6800 起的第一个可用端口,当某个守护进程失败并重启时没释放端口,重启后的进程就会监听新端口。你应该防火墙打开整个 6800-7300 端口区间,以应对这种可能性。

注意:为安全起见,从公共网或互联网到集群网应该是不可达的。

典型的 Ceph 生产集群至少部署 3 个mon确保高可靠性,它允许一个监视器例程崩溃。奇数个监视器( 3 个)确保 PAXOS 算法能确定一批监视器里哪个版本的集群运行图是最新的,一个 Ceph 集群可以只有一个监视器,但是如果它失败了,因没有监视器数据服务就会中断。

默认情况下, Ceph 把 OSD 数据存储到了以下路径:

/var/lib/ceph/osd/$cluster-$id

查看运行时配置:

ceph daemon {daemon-type}.{id} config show | less

   如果你现在位于 osd.0 所在的主机,命令将是:

ceph daemon osd.0 config show | less

修改运行时配置:

ceph tell {daemon-type}.{id or *} injectargs --{name} {value} [--{name} {value}]
eg:
ceph tell osd.0 injectargs --debug-osd 20 --debug-ms 1


用 Ceph 可以实现在同一套硬件上运行多个集群,不同的集群使用不同的配置文件,独立的集群意味着独立数据盘和日志,它们不能在集群间共享,在一台主机上运行多个监视器时,你得指定不同端口。监视器默认使用 6789 端口,如果它已经被占,其它集群得指定其它端口。

要调动一个名字不是 ceph 的集群,要给 ceph 命令加 -c {filename}.conf 选项,例如:

ceph -c {cluster-name}.conf health
ceph -c openstack.conf health

ceph认证:

cephx 协议已默认开启。加密认证要耗费一定计算资源,但通常很低。如果您的客户端和服务器网络环境相当安全,而且认证的负面效应更大,你可以关闭它,通常不推荐您这么做

启用 CEPHX

启用 cephx 后, Ceph 将在默认搜索路径(包括 /etc/ceph/ceph.$name.keyring )里查找密钥环。你可以在 Ceph 配置文件的 [global] 段里添加 keyring 选项来修改,但不推荐。

禁用 CEPHX

下述步骤描述了如何禁用 Cephx 。如果你的集群环境相对安全,你可以减免认证耗费的计算资源,然而我们不推荐。但是临时禁用认证会使安装、和/或排障更简单。

把以下配置加入 Ceph 配置文件的 [global] 段下以启用 cephx 认证:

auth cluster required = cephx
auth service required = cephx
auth client required = cephx

把下列配置加入 Ceph 配置文件的 [global] 段下即可禁用 cephx 认证:
auth cluster required = none
auth service required = none
auth client required = none
 
  

Mon:

  1. Leader: Leader 是实现最新 Paxos 版本的第一个监视器。
  2. Provider: Provider 有最新集群运行图的监视器,但不是第一个实现最新版。
  3. Requester: Requester 落后于 leader ,重回法定人数前,必须同步以获取关于集群的最新信息

有了这些角色区分, leader就 可以给 provider 委派同步任务,这会避免同步请求压垮 leader 、影响性能。在下面的图示中, requester 已经知道它落后于其它监视器,然后向 leader 请求同步, leader 让它去和 provider 同步。

我们建议在生产环境下最少部署 3 个监视器,以确保高可用性。

Ceph 监视器有存储数据的默认路径,生产集群为实现更高性能可把监视器部署到非 OSD 节点的独立主机上。因为监视器会频繁 fsync() ,这可能影响 OSD 。

在 Ceph 0.58 及更早版本中,监视器数据以文件保存,这样人们可以用 ls 和 cat 这些普通工具检查监视器数据,然而它不能提供健壮的一致性。

在 Ceph 0.59 及后续版本中,监视器以键/值对存储数据。监视器需要 ACID 事务,数据存储的使用可防止监视器用损坏的版本进行恢复,除此之外,它允许在一个原子批量操作中进行多个修改操作。

一般来说我们不建议更改默认数据位置,如果要改,我们建议所有监视器统一配置,加到配置文件的 [mon] 下。

mon data  

默认值:/var/lib/ceph/mon/$cluster-$id

注意:Ceph 存储集群利用率接近最大容量时(即 mon osd full ratio ),作为防止数据丢失的安全措施,它会阻止你读写 OSD 。 full ratio 默认值是 .95 或容量的 95% 。对小型测试集群来说这是非常激进的设置。

[global]

        mon osd full ratio = .80
        mon osd nearfull ratio = .70
各 OSD 每 6 秒会与其他 OSD 进行心跳检查,用 [osd] 下的 osd heartbeat interval 可更改此间隔、或运行时更改。如果一个 OSD 20 秒都没有心跳,集群就认为它 down 了,用 [osd] 下的 osd heartbeatgrace 可更改宽限期、或者运行时更改。 OSD 守护进程每 120 秒会向监视器报告其状态,不论是否有值得报告的事件。在 [osd] 段下设置 osd mon reportinterval max 可更改OSD报告间隔,或运行时更改。

journal:

默认情况下, Ceph 会把 OSD 日志存储于下列路径:/var/lib/ceph/osd/$cluster-$id/journal,生产环境中为了提高性能,会用机械硬盘存储osd数据,用ssd盘存储journal.

osd journal size 默认值是 0 ,所以你得在 ceph.conf 里设置。日志尺寸应该是 filestore max sync interval 与期望吞吐量的乘积再乘以 2 。

osd journal size = {2 * (expected throughput * filestore max sync interval)}

scrub:

除了为对象复制多个副本外, Ceph 还要洗刷归置组以确保数据完整性。这种洗刷类似对象存储层的 fsck ,对每个归置组, Ceph 生成一个所有对象的目录,并比对每个主对象及其副本以确保没有对象丢失或错配。轻微洗刷(每天)检查对象尺寸和属性,深层洗刷(每周)会读出数据并用校验和方法确认数据完整性

osd scrub begin hour:    开始scrub的时间

osd scrub end hour停止scrub的时间
上面两个时间决定了能进行scrub操作的时间段

 

猜你喜欢

转载自www.cnblogs.com/dufeixiang/p/10594501.html