[内容] OpenShift 虚拟机 YAML 配置文件的常用参数

正文:

内容一:runStrategy 参数

1.1 runStrategy 参数的常用值

RerunOnFailure,在系统层面关机后系统会自动启动,这个参数会有导致系统无法成功启动的可能
Halted,在系统层面关机后不会自动启动
Always,当 runStrategy 的值是 Halted 时再手动启动系统后,runStrategy 的值会从 Halted 变成 Always

1.2 runStrategy 参数的使用案例

runStrategy: RerunOnFailure

参考文献:

https://access.redhat.com/solutions/7059440

[内容] virtio 类型虚拟网卡的简介

KVM 虚拟化以及基于 KVM 的技术例如 OpenStack 和 OpenShift 云平台上的虚拟机网卡使用的是 virtio 类型
virtio 类型是一种半虚拟化 (Para-virtualization) 技术。其没有速度限制,会随着宿主机的网络、处理器、内存的实际情况实时发生变化,能多快就跑多快
使用类似 ethtool 的命令查看 virtio 类型的网卡时不会显示网卡速度

[步骤] OpenShift 集群所属 Red Hat 账号的切换

步骤一:确认此 Openshift 集群迁移的源账号和目标账号

(步骤略)

步骤二:在源账号里允许此 OpenShift 机器可以迁移

(注意:只在源账号上执行以下操作)

Login website https://console.redhat.com/openshift/details –> Cluster List –> Three points ‘…’ in the end of the cluster line which need migration –> Transfer cluster ownership –> Initiate transfer

步骤三:在目标账号里复制 pull-secret

3.1 在目标账号里复制 pull-secret

(注意:只在目标账号上执行以下操作)

Login website https://cloud.redhat.com/openshift/install/pull-secret –> Copy pull secret

3.2 粘贴目标账号的 pull-secret

(注意:只在 OpenShift 集群上的管理机上执行以下步骤)

# vi /root/pull-secret-onetime

(粘贴刚刚复制的内容)

(补充:这里以在文件 /root/pull-secret-onetime 里粘贴刚刚复制的内容为例)

步骤四:让刚刚粘贴的 pull-secret 生效

4.1 让刚刚粘贴的 pull-secret 生效

(注意:只在 OpenShift 集群上的管理机上执行以下步骤)

# oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=/root/pull-secret-onetime

(补充:这里的文件 /root/pull-secret-onetime 是在上 1 步中粘贴了 pull-secret 的文件)

4.2 查看 pull-secret 生效的进度

(注意:只在 OpenShift 集群上的管理机上执行以下步骤)

# watch -n1 oc get mcp

(补充:当输出的 READYMACHINECOUNT 的数量和 MACHINECOUNT 的数量相等后,再等大概十多分钟后,通常就切换成功了。)

步骤五:检验切换是否成功

(注意:只在目标账号上执行以下操作)

Login website https://console.redhat.com/openshift/details

(补充:如果在此网页看到要被切换的 OpenShift 的 Cluster ID 则代表切换成功了)

分布式存储算法介绍

章节一:传统的 Hash 存储算法

1.1 传统的 Hash 存储算法简介

  将数据进行切片,对每份切片进行 Hash 取值,并对获取的 Hash 值除以存储节点的数量以取余,余数是多少就将此切片存在第几个 OSD 节点里,主要是 Swift 在使用。

1.2 传统的 Hash 存储算法的缺点

  如果要增加存或减少存储节点,需要对所有已存储数据切片的 Hash 值重新取余,大概 90% 的数据需要重新均衡数据(rebalance)。

章节二:一致性 Hash 算法

2.1 一致性 Hash 算法简介

  1) 给电脑也计算 Hash 值(可以是给电脑名计算 Hash 值,也可以给 IP 地址计算 Hash 值)
  2) 再给数据也计算 Hash 值,将数据存到比它的 Hash 值大,且与它的差值最小的电脑上,如果没有 Hash 值比它大的电脑就直接将数据存在 Hash 值最小的电脑上
  3) 整个架构类似一个环

2.2 一致性 Hash 算法的缺点

  1) 电脑太少时切换数据也会有较大的数据量,但是可以多设置几个虚拟节点,给以后新增加的节点使用,虚拟节点里的数据会影射到对应的物理节点里面去
  2) 电脑太少时,两台电脑的 Hash 值比较接近导致,数据分配极度不平均

(注意:在开始创建数据架构时,要评估未来数据的规模,如果最后要添加的电脑数量超过了虚拟节点数量,那么这个架构就不能使用了。此时只能备份数据,然后新建 1 个架构出来)

章节三:CRUSH

3.1 CRUSH 简介

  CRUSH(Controlled Replication Under Scalable Hashing)算法,在可扩展 Hash 算法下的可控制复制,主要是 Ceph 在使用。

3.2 CRUSH 算法

3.2.1 CRUSH 算法的第 1 层

  由 Ceph 的 OSD(Object Storage Deivces)组成。

3.2.2 CRUSH 算法的第 2 层
3.2.2.1 CRUSH 算法的第 2 层的组成

  由 Ceph 的 PG(Placement Group)归置组组成。

3.2.2.2 CRUSH 算法的第 2 层的由来

  在 OSD 节点上虚拟出多个 PG,每个 PG 默认会被指定对应 3 个 OSD 节点(每个 OSD 节点同时可以属于多个 PG),其中第一个 OSD 节点为主要(primary)的硬盘,其他两 OSD 节点为从(second)硬盘,PG 会对应几个 OSD 节点取决于 Ceph 的存储副本被设置了几份。

3.2.2.3 CRUSH 算法的第 2 层的算法

  1) 给每个 OSD 节点设置一个权重值,OSD 节点的容量越大则其权重值越大
  2) 主要(primary)硬盘的 OSD 节点:将 PG 的 ID 值和 OSD 的 ID 值组合在一起并计算 Hash 值,将得到的 Hash 值乘以此 OSD 节点的权重,当最终获得的值最大时,此 PG 就和此 OSD 绑定在一起
  3) 第 1 个从(second)硬盘的 OSD 节点:将 PG 的 ID 值逐一和 OSD 的 ID 值和 1 个随机的常数组合在一起并计算 Hash 值(这个值在 Ceph 的代码里被叫做 draw),将得到的 Hash 值乘以此 OSD 节点的权重,当最终获得的值最大时(这个值在 Ceph 的源代码里叫做 straw)则此 PG 就和此 OSD 绑定在一起
  4) 第 2 个从(second)硬盘的 OSD 节点:将 PG 的 ID 值逐一和 OSD 的 ID 值和上 1 个随机常数加 1 的和组合在一起并计算 Hash 值(这个值在 Ceph 的代码里被叫做 draw),将得到的 Hash 值乘以此 OSD 节点的权重,当最终获得的值最大时(这个值在 Ceph 的源代码里叫做 straw),则此 PG 就和此 OSD 绑定在一起(如果找到的 OSD 节点和前面的 OSD 节点重复,则将这个随机常数再加 1 并进行重复操作,最终获得和前面不通的 OSD 节点为止)
……

3.3 CRUSH 算法的第 3 层

3.3.1 CRUSH 算法的第 3 层的组成

  由池组成。

3.3.2 CRUSH 算法的第 3 层的由来

  1) 在 PG 上虚拟出多个池,每个池对应多个 PG,数据可以存储到指定的池里
  2) 总硬盘容量有多大,每个池最大可以使用的容量就有多大,但是如果如果 1 个池使用了一部分容量,其他的池就要少使用一部分容量

3.4 CRUSH 算法的第四层

3.4.1 CRUSH 算法的第四层的组成

  由数据组成。

3.4.2 CRUSH 算法的第四层的算法

  1) 对要放入某个池里的数据进行切片,默认每片 4M
  2) 对每份切片进行 Hash 取值,并对获取的 Hash 值除以这个池里 PG 节点的数量以取余,余数是多少就存在第几个 OSD 节点里