部署oVirt4.2+Gluster超融合架构

先下载最新ovirt-node iso镜像

准备3台机器,配置为2核,16G内存,两块硬盘,1块100G装系统,1块300G做存储

node1.com(192.168.105.221)

node2.com(192.168.105.222)

node3.com(192.168.105.223)

可以是虚机,但注意:

  1. 宿主机上要开启嵌套虚拟化(nested kvm)支持;
  2. 虚拟网络要用桥接模式,保证虚机和宿主机之间网络互通。

安装主机

使用node iso安装3台机器,配置好ip地址、域名信息

检查确认好每台主机的hostname和/etc/hosts文件中的域名映射

从node221.com上配置ssh无密码登录

[root@node1~]# ssh-keygen
[root@node1~]# ssh-copy-id root@node1.com
[root@node1~]# ssh-copy-id root@node2.com
[root@node1~]# ssh-copy-id root@node3.com

部署Gluster

访问https://192.168.105.221:9090,使用root帐号登录,进入主机node1.com的cockpit web界面

如上图,点击超融合部署按钮start,选择部署流程

这里有两个选项,选择第一个(ps:第二个为使用一台主机节点部gluster本地环境,无法扩容,不建议用)

填写三台主机名称,进入下一步

再次填入主机2和主机3的域名,这里是让这两台主机能够自动支持运行Hostengine虚机,进入下一步

这一步不填,直接跳过

这里我们按它默认的三个卷来创建,并且让data、vmstore启用仲裁模式,进入下一步

这一步我们调整LV配置中的设备名称都为“vdb”(因为是在虚机环境下,磁盘的名称为v*,这块盘为一开始部署主机节点时添加的数据盘,请确认你的环境)

修改engine、data、vmstore的卷大小为80GB,根据你添加的数据盘大小进行分配,用于运行engine虚机的卷大小不能小于58GB(ovirt的默认最小值,实际占用空间为59GB以上,所以实测最好不要低于65GB)

其它采用默认的配置,实际部署中,raid配置应与物理环境的raid配置保持一致,下一步展示配置信息,直接点Deploy部署按钮即可,进入部署过程

部署engine

Gluster部署成功后

进入engine的部署向导

按上图的标识,将engine虚机配置信息填写完整,进入下一步

这个地方我们只需填写engine web管理台admin帐号的密码即可,进入下一步

检查下信息无误,点击PrepareVM即可

部署过程中到上图所示这一步时会很久,因为要下载这个ovirt-engine-appliance rpm包,这个包有900多M。(建议这一步完成后,将这个rpm包拷贝出来以备用,下次部署时可直接拷到系统中使用yum安装上就可以避免再次下载了。也在本站的安装包下载此rpm包。)

engine虚机成功准备完成后,进入下一步

配置用于部署engine虚机的存储,这里存储类型选Gluster,路径填前面部署Gluster中engine卷的路径,格式如图中所示,挂载选项为:

backup-volfile-servers=node2.com:node3.com

此挂载选项用于防止Gluster的单点故障

检查信息无误,开始部署过程。(注意上图中的主机名称不对,非本次部署截图,自己环境与实际对应即可。)

一定注意到此步骤时:

首先ssh到node1.com中,增加engine的域名映射

192.168.105.224 engine224.com

开启一个shell终端,长ping engine的ip(192.168.105.224),一旦能够ping通,立即ssh到engine里面去,在/etc/hosts中增加engine的域名映射

此处是一个bug,若不进行上述步骤将会导致最后一步engine health check失败而导致部署不完整。

部署完成。

访问管理台

要修改访问PC的hosts文件,将engine的域名映射加入,才可以通过域名访问管理台(无法直接通过ip访问)。

PS:转载文章请注明来源:oVirt中文社区(www.cnovirt.com)

扫码?加好友拉你进oVirt技术交流群!

18 条回复 A 作者 M 管理员 E
  1. 这个镜像快些http://mirror.isoc.org.il/pub/ovirt/

    • 谢谢!我把它加到下载链接中。

  2. TASK [gluster.infra/roles/backend_setup : Create volume groups] ****************
    failed: [server2] (item={u’vgname’: u’gluster_vg_vdb’, u’pvname’: u’vdb’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“pvname”: “vdb”, “vgname”: “gluster_vg_vdb”}, “msg”: “Device /root/vdb not found.”}
    failed: [server3] (item={u’vgname’: u’gluster_vg_vdb’, u’pvname’: u’vdb’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“pvname”: “vdb”, “vgname”: “gluster_vg_vdb”}, “msg”: “Device /root/vdb not found.”}
    failed: [server1] (item={u’vgname’: u’gluster_vg_vdb’, u’pvname’: u’vdb’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“pvname”: “vdb”, “vgname”: “gluster_vg_vdb”}, “msg”: “Device /root/vdb not found.”}

    NO MORE HOSTS LEFT *************************************************************

    NO MORE HOSTS LEFT *************************************************************

    PLAY RECAP *********************************************************************
    server1 : ok=9 changed=0 unreachable=0 failed=1 skipped=10 rescued=0 ignored=0
    server2 : ok=9 changed=0 unreachable=0 failed=1 skipped=10 rescued=0 ignored=0
    server3 : ok=9 changed=0 unreachable=0 failed=1 skipped=10 rescued=0 ignored=0

    使用vdb,70G失败。请问有什么前提设置吗?

    • device /root/vdb not found

    • device /root/vdb not found
      这个vdb需要根据你自己的环境实际情况填。

  3. 用虚拟机折腾了好几天了,还差点把硬盘搞挂,4.2死活装不了,试了4.3.5很快就部署好超融合构架,由于虚拟机内存不够,怎么都部署不了engine,也说下上面没说得够清楚的地方,
    1,准备两块硬盘,一块装系统,另一块什么都不用做,不用分区挂载;
    2,4.2版将sdb改为vdb和修改engine、data、vmstore的卷大小到最后其实什么都没有变更(本人遇到的bug?),还是默认的,要在最后那一步的脚本里手动改(最好复制出来用文本编辑器查找替换,有几十个之多);
    3,装engine时要先在node1、node2、node3的/etc/hosts加上engine的域名映射;

  4. TASK [ovirt.hosted_engine_setup : Get local VM IP] 这一步后过不去。。

    • 我也是在VMware vSphere 6.7环境中尝试了N次,都在Get local VM IP这一步就挂了,目前无解,只能放弃了Hosted Engine模式

  5. [ ERROR ] fatal: [localhost]: FAILED! => {“attempts”: 90, “changed”: true, “cmd”: “virsh -r net-dhcp-leases default | grep -i 00:16:3e:61:eb:f5 | awk ‘{ print $5 }’ | cut -f1 -d’/'”, “delta”: “0:00:00.074760”, “end”: “2019-12-26 02:14:27.569132”, “rc”: 0, “start”: “2019-12-26 02:14:27.494372”, “stderr”: “”, “stderr_lines”: [], “stdout”: “”, “stdout_lines”: []} 过不去了。又

  6. 虚拟机部署性能不够的话很多地方需要重试很多次

  7. 请教版主:
    我有多个网络规划的情况下(一个专用于管理,一块专用于GlusterFS,在/etc/hosts分别做了解析),在部署Gluster超融合步骤时,第一步是填写Gluster网络,第二步应该是填写管理网络吧? 这样理解和部署是否有误?

    • 不建议分开,如果分开的话,管理网络和glusterfs存储网络不要放在同一个网段内。考虑带宽问题的话,可以两个网口做绑定。

      第一步和第二步是指?

  8. 超融合gfs报错 还需要开启selinux? 部署的时候

    TASK [gluster.infra/roles/backend_setup : Set Gluster specific SeLinux context on the bricks] ***
    failed: [node1.com] (item={u’path’: u’/gluster_bricks/engine’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_engine’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_engine”, “path”: “/gluster_bricks/engine”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node2.com] (item={u’path’: u’/gluster_bricks/engine’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_engine’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_engine”, “path”: “/gluster_bricks/engine”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node3.com] (item={u’path’: u’/gluster_bricks/engine’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_engine’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_engine”, “path”: “/gluster_bricks/engine”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node1.com] (item={u’path’: u’/gluster_bricks/data’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_data’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_data”, “path”: “/gluster_bricks/data”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node2.com] (item={u’path’: u’/gluster_bricks/data’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_data’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_data”, “path”: “/gluster_bricks/data”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node3.com] (item={u’path’: u’/gluster_bricks/data’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_data’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_data”, “path”: “/gluster_bricks/data”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node1.com] (item={u’path’: u’/gluster_bricks/vmstore’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_vmstore’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_vmstore”, “path”: “/gluster_bricks/vmstore”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}
    failed: [node2.com] (item={u’path’: u’/gluster_bricks/vmstore’, u’vgname’: u’gluster_vg_sdb’, u’lvname’: u’gluster_lv_vmstore’}) => {“ansible_loop_var”: “item”, “changed”: false, “item”: {“lvname”: “gluster_lv_vmstore”, “path”: “/gluster_bricks/vmstore”, “vgname”: “gluster_vg_sdb”}, “msg”: “SELinux is disabled on this host.”}

    • 已解决 需要开启selinux的宽容模式
      切记gfs最好给大点存储80G不够 最好120 否则后面部署engine的时候会报存储小于61G的问题

  9. [ INFO ] ok: [localhost]
    [ INFO ] TASK [ovirt.hosted_engine_setup : Fail with error description]
    [ ERROR ] fatal: [localhost]: FAILED! => {“changed”: false, “msg”: “The host has been set in non_operational status, deployment errors: code 505: Host node01.ovirt.com installation failed. Failed to configure management network on the host., code 9000: Failed to verify Power Management configuration for Host node01.ovirt.com., fix accordingly and re-deploy.”}
    [ INFO ] TASK [ovirt.hosted_engine_setup : Fetch logs from the engine VM]

    请问这个报错啥原因啊

    • 检查下页面,一般是之前存在网桥,网桥不成功问题。可以尝试清理下网桥

  10. 三台物理机都只有一块硬盘能玩吗

  11. glusterfs 做了 虚拟机读写真的好差

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论