tool for work

设置Proxmox VE集群使用Ceph共享存储

2019-08-21  本文已影响10人  开心人开发世界

一个人的生命中迟早会有这样一个时刻——你必须开始考虑你的服务的弹性和高可用性。本文讨论如何在具有共享存储的3个节点上配置Proxmox HA集群,为VM的动态迁移提供可能。我们考虑了很多关于选择什么作为共享存储的问题(选择在ceph和gluster之间),最后决定详细讨论ceph。在这里这里,您可以找到关于这两个存储的优点和缺点,所以您可以自由地选择您的案例中需要的这个。


创建集群

我们的设置中使用的IP地址和DNS名称列表

192.168.25.61 machine1
192.168.25.62 machine2
192.168.25.63 machine3

首先,我们需要设置3个proxmox节点。为此我们可以从官方网站使用proxmox iso 或者从新的debian上的存储库安装它。

从repo安装我建议使用官方指南

安装完成后,您需要更新系统

sudo apt-get update

之后,我们将在每个节点上编辑/etc/hosts以获得更多便利

127.0.0.1 localhost.localdomain localhost
192.168.25.61 machine1.local machine1 pvelocalhost
192.168.25.62 machine2.local machine2
192.168.25.63 machine3.local machine3

通过ping检查每个节点是否看到对方。

为Proxmox添加repo

echo "deb [http://download.proxmox.com/debian/pve](http://download.proxmox.com/debian/pve?source=post_page---------------------------) stretch pve-no-subscription" > /etc/apt/sources.list


现在我们准备创建一个集群。在将充当主节点的节点上,输入命​​令

pvecm create <clustername>

将剩余节点添加到群集

pvecm add "masternode ip or dns name"

检查所有节点是否在群集中

pvecm status

如果一切顺利,我们可以访问web-gui并能够从一个浏览器窗口管理所有节点。无论您登录哪个节点,这都有效。(8006是Proxmox web-gui的默认端口)


配置Ceph

让我们配置Сeph存储,为此我建议使用分离的网络用于VM和专用网络用于Ceph(如果你想使用SSD,10gb网卡会很好看,特别是

对于节点之间的VM实时迁移,您可能需要创建vlan,以便VM可以看到彼此,即使它们位于不同的节点上。

确保在防火墙中允许端口6789,6800-7100。Ceph监视器默认侦听端口6789。守护进程也绑定到6800-7100范围内的端口。

在所有节点上安装Ceph:

pveceph install --version luminous

仅在masternode上初始化Ceph(将10.10.10.0/24更改为您的CIDR块):

pveceph init --network 10.10.10.0/24

在节点上创建监视器,为每个重复此操作:

pveceph createmon

现在创建Ceph监视器之后,我们可以使用GUI来完成剩余的进程。

通过web-ui创建OSD。在群集中的每个节点上执行此操作。

顺便说一句,就是这样,你可以使用web-gui创建Ceph存储池,你会很好,buuuut ......


默认情况下,在创建存储池时,它会尝试分配所有已发现的OSD。通常,Ceph集群通常由具有多个磁盘驱动器的多个节点组成。并且,这些磁盘驱动器可以是混合类型。我们将创建一个名为ssd-pool的池,由SSD磁盘支持,另一个池名为sata-pool,由SATA磁盘支持。

在这种情况下,osd.0,osd.1和osd.2是SSD磁盘。类似地,osd.3,osd.4,osd.5,osd.6,osd.7和osd.8是SATA磁盘。

  1. 获取当前的CRUSH映射并对其进行反编译:
ceph osd getcrushmap -o crushmapdump
crushtool -d crushmapdump -o crushmapdump-decompiled

2.编辑crushmapdump-decompiled CRUSH映射文件​​,并在根默认部分后添加以下部分:

root ssd {
 id -20
 alg straw
 hash 0
 item osd.0 weight 0.010
 item osd.1 weight 0.010
 item osd.2 weight 0.010
}
root sata {
 id -21
 alg straw
 hash 0
 item osd.3 weight 0.010
 item osd.4 weight 0.010
 item osd.5 weight 0.010
 item osd.6 weight 0.010
 item osd.7 weight 0.010
 item osd.8 weight 0.010
}

3.通过在CRUSH映射的rules部分下添加以下规则来创建CRUSH规则,然后保存并退出该文件:

rule ssd-pool {
 ruleset 1
 type replicated
 min_size 2
 max_size 10
 step take ssd
 step chooseleaf firstn 0 type osd
 step emit
}
rule sata-pool {
 ruleset 2
 type replicated
 min_size 2
 max_size 10
 step take sata
 step chooseleaf firstn 0 type osd
 step emit
}

4.在Ceph集群中编译并注入新的CRUSH映射:

crushtool -c crushmapdump-decompiled -o crushmapdump-compiled
ceph osd setcrushmap -i crushmapdump-compiled

5.检查OSD树视图以了解新安排,并注意ssd和sata根桶:

ceph osd tree

6.创建并验证ssd-pool

ceph osd pool create ssd-pool 128

128 - pg_num的数量,您可以使用计算器来计算Ceph所需的放置组数量。

验证ssd-pool,注意crush_ruleset是0,默认情况下:

ceph osd dump | grep -i ssd

让我们更改crush_ruleset,以便在SSD磁盘上创建新池:

ceph osd pool set ssd-pool crush_rule ssd-pool

验证池并注意crush_ruleset中的更改:

ceph osd dump | grep -i ssd

7.同样,创建并验证sata-pool

ceph osd pool create sata-pool 128
ceph osd dump | grep -i sata
ceph osd pool create sata-pool 128
ceph osd pool set sata-pool crush_rule sata-pool
ceph osd dump | grep -i sata

8.让我们检查它是否像预期的那样工作。

由于这些池是新的,它们不应包含任何对象,但让我们使用rados list命令验证这一点:

rados -p ssd-pool ls
rados -p sata-pool ls

现在我们使用rados put命令向这些池添加一个对象。语法应该是:

rados -p <pool_name> put <object_name> <file_name>

rados -p ssd-pool put dummy_object1 /etc/hosts
rados -p sata-pool put dummy_object1 /etc/hosts

使用rados list命令列出这些池。你应该得到我们在最后一步中存储的对象名称:

rados -p ssd-pool ls
rados -p sata-pool ls

9.验证对象是否存储在正确的OSD集上。使用以下语法检查osd映射中的ssd-pool

ceph osd map <pool_name> <object_name>

ceph osd map ssd-pool dummy_object1

您应该获得具有OSD的id的输出,其中实际存储“dummy_object1”。如前面的屏幕截图所示,在ssd-pool上创建的对象实际上存储在OSD集[0,2,1]中。此输出是预期的,它验证我们创建的池使用我们请求的正确OSD集。


要指出结论,可以说目前是一个完整的解决方案,可以毫不费力地大大提高虚拟化平台的容错能力。另一方面,Ceph提供卓越的可靠性和可扩展性,使我们能够通过热添加OSD来增加存储容量。

如果您发现这些扩展中的任何一个很有用并且您喜欢这篇文章,请随意点击并按住拍手按钮!:)

转:https://medium.com/@qwonkiwow/setting-up-a-proxmox-ve-cluster-with-ceph-shared-storage-e7a4f652f321

上一篇下一篇

猜你喜欢

热点阅读