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

一个人的生命中迟早会有这样一个时刻——你必须开始考虑你的服务的弹性和高可用性。本文讨论如何在具有共享存储的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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容