oVirt4.4超融合架构部署教程(v4.4.3)

本教程讲述oVirt4.4超融合架构的部署过程,本教程编写时最新的版本为v4.4.3,同一个大版本下不同小版本之间部署可能略有差异,但基本过程是一致的。

准备硬件

3台X86服务器/主机:

  • CPU>=4核;
  • 内存>=8GiB;
  • 硬盘至少两块:>=100GiB*1(做超融合系统盘),>=200GiB*1(做虚机镜像存储);
  • 网卡:>=1GbE*1;(4.4支持部署时存储网分离,生产环境建议至少2个以上,且10GbE以上)

1台PC:

  • Win或Linux均可,用于访问超融合部署以及管理的WEB执行操作,建议安装使用chrome浏览器;

网络:

  • 以上设备应位于同一个网络环境下互连互通;

注意:

  • 以上基本为最低配置要求,生产环境因根据业务负载要求选择合理的硬件资源配置;
  • 因为超融合部署架构下管理机(Engine)以虚机的形式部署,所以不需要额外的物理管理机;
  • 3台X86服务器不建议使用VMware环境中的虚机代替,因为可能部署时会遇到兼容性问题,实验环境下可使用一台主机开启3台KVM虚机进行部署测试;
  • 因为了截图和演示方便,本教程中使用已有oVirt环境中的3台虚机作为主机;

下载安装包

注意都要获取当前大版本对应的最新部署安装包,尤其是Node ISO要和Engine RPM对应起来,都用最新的就没问题。

oVirt Node ISO:

https://resources.ovirt.org/pub/ovirt-4.4/iso/ovirt-node-ng-installer/4.4.3-2020111016/el8/ovirt-node-ng-installer-4.4.3-2020111016.el8.iso

oVirt Engine Appliance RPM:

https://resources.ovirt.org/pub/ovirt-4.4/rpm/el8/x86_64/ovirt-engine-appliance-4.4-20201110154142.1.el8.x86_64.rpm

Virt-Viewer:

https://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-9.0.msi

Virtio-Win ISO:

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.189-1/virtio-win-0.1.189.iso

备用下载地址:

http://mirror.isoc.org.il/pub/ovirt/ovirt-4.4

http://mirror.massclouds.com/ovirt/ovirt-4.4

https://mirrors.bfsu.edu.cn/ovirt/ovirt-4.4/

规划网络

根据你的网络实际情况为3台主机规划网络信息,如下:

主机1(host1)

  • 域名:node241.com;
  • IP:192.168.105.241;
  • Netmask:255.255.255.0;
  • Gateway:192.168.105.254

主机2(host2)

  • 域名:node242.com;
  • IP:192.168.105.242;
  • Netmask:255.255.255.0;
  • Gateway:192.168.105.254

主机3(host3)

  • 域名:node243.com;
  • IP:192.168.105.243;
  • Netmask:255.255.255.0;
  • Gateway:192.168.105.254

管理机Engine

  • 域名:engine240.com;
  • IP:192.168.105.240;
  • Netmask:255.255.255.0;
  • Gateway:192.168.105.254

注意:

  • 应确保所规划的域名不能够在外网解析,即安装部署前域名不能ping通;
  • 如果选择存储网与管理网分离部署的方式,每台主机应规划两个IP和单独的域名,且使用不同的网段;

安装Node

分别使用Node ISO通过CD引导安装3台主机:

1、语言选择中文即可;

2、键盘选择“汉语”;

3、安装目的地选中用于装系统的磁盘,选中“自动”分区,注意如果磁盘上有其它数据的话要先执行回收空间操作,如果准备的两块盘之前都安装过系统或者之间有关联的话,需要先手动清空,必须保证用于部署Gluster的磁盘是空白的且与第一块系统盘没有任何关联,否则后面部署时会报错失败;

4、时间和日期选择“亚洲/上海”时区;

5、网络和主机名处要根据上面我们规划的网络信息配置,包括主机名(这个地方直接用域名做主机名了)和IP信息

6、安装过程中配置root密码

7、安装完成后重启进入系统;

部署HostedEngine

首先在3台主机上的/etc/hosts里分别加上3台主机和Engine的域名解析:

注意:这3台主机上都要配置。

3台主机上的/etc/yum.repos.d/目录清空,或者备份到其它目录下,这是为了清空yum源,避免后面部署过程中检查更新因网络原因导致检查失败从而导致部署失败;

然后到其中一台主机上配置ssh免密码登录,注意要在后面执行部署HostedEngine过程的那台主机上配置,例如host1上:

# ssh-keygen      //全部默认回车即可
# ssh-copy-id root@node241.com     //输入root密码后回车
# ssh-copy-id root@node242.com     //输入root密码后回车
# ssh-copy-id root@node243.com     //输入root密码后回车

将下载的Engine RPM包拷贝到host1主机上(注意是上面我们配置的那台,可以通过scp/winscp工具),放到/root/目录下即可,执行以下命令安装:

rpm -ivh ovirt-engine-appliance-4.4-20201110154142.1.el8.x86_64.rpm

安装完成后,通过浏览器打开这台主机的Web控制台(即Cockpit),地址为:https://192.168.105.241:9090(注意IP地址替换成你实际环境的),使用root帐号登录,如下:

进入HostedEngine页面,点击“Hyperconverged”向导的“Start”按钮,开始部署过程,会先部署Gluster再部署HostedEngine,如下:

选择“Run Gluster Wizard”向导,如下:

选中“Use same hostname for Storage and Public Network”,表示为存储网和管理网使用同一个网络,因为我们只配置了一个网卡,然后下面分别输入host1、host2、host3的域名,如下:

(如果存储网和管理网分离的话,此处配置略有差异)

Packages这一步不用配置,直接下一步即可,如下:

Volumes这一步,也可以不用配置,直接下一步,这里因为我们演示环境中的数据盘只有200GiB,所以只保留enginedata两个卷即可,删除掉vmstore卷,engine卷对应着后续的engine存储域,用于存放HostedEngine的虚机镜像,data卷对应着后续的data存储域,用于存放普通虚机的虚机镜像,如果数据盘足够大的话可以划分多个卷对应着多个存储域,其中engine卷是必须要保留的。如下:

Bricks这一步中,Raid Type这里我们选择“JBOD”,因为我们每台主机上的数据盘是单独的一块盘,如果实际环境中是多块盘做的Raid,那么就根据实际情况选择“Raid5或者Raid6”,Blacklist Gluster Devices这里默认选中即可,下面的Device Name注意要与你环境中的实际情况对应,这里默认是“/dev/sdb”,和我们实验环境是对应的,sdb是我们每台主机预留出来的一块用于部署Gluster的磁盘,后面的LV Size累加起来不能超过sdb的实际大小,如果有SSD盘的话,可以使用下面的“Configuer LV Cache”配置缓存盘,本次实验环境中没有SSD,我们就不配置了,如下:

下面执行部署过程即可了,这里选中“Enable Debug Logging”,以方便部署失败时排查错误原因,如下:

等Gluster部署成功后,继续部署HostedEngine,如下:

VM配置中,按下图进行配置,注意配置选择正确的Bridge网卡,HostedEngine的内存最小4GiB,没有问题的话下一步即可:

输入要设置的Web管理页面admin帐号的密码,继续下一步:

此步确认无误后,点击“Prepare VM”,如下:

这一过程比较长,完成后进入下一步:

Storage Type选择“Gluster”,Storage Connection填写“node241.com:/engine”,Mount Options填写“backup-volfile-servers=node242.com:node243.com”,以上的域名根据你的实际情况填写,其它内容保持不变,下一步:

确认信息无误后点击“Finish Deployment”按钮,如下:

等待部署完成,如下:

点Close即可,4.4版本增加了HostedEngine退出部署时的清理环节,最后会让你选择是否清理,注意千万不要选Yes,一定选No,否则你需要再重新部署一遍:

 

在你的PC的hosts文件里增加Engine的域名解析,Win10系统在C:\Windows\System32\drivers\etc路径下,

192.168.105.240 engine240.com

使用浏览器访问https://engine240.com(如果想通过ip访问,请参考本站点中的其它文章),使用admin帐号登录(密码是我们部署时设置的),如下:

添加主机

HostedEngine部署完成后,添加其它主机之前,我们先ssh到engine主机上,在engine的/etc/hosts中添加另外两台主机的域名解析,修改后的hosts文件如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.105.241 node241.com
 192.168.105.242 node242.com
 192.168.105.243 node243.com
 192.168.105.240 engine240.com

然后到主机页面列表页面,如下:

点击“新建”按钮,进入新建主机弹出窗,在“常规”标签页面,输入要添加的主机的名称、主机名和root密码,在“承载的引擎”标签页面,选择“部署”(注意这里一定要选,否则HostedEngine虚机无法实现迁移和高可用),如下:

点确定时会弹出没有配置电源管理的提醒,这里我们先不配,直接点确定即可,生产环境中建议要配置电源管理,否则会影响高可用功能;

使用同样的操作方法添加第三台主机;

这样部署过程就完成了,后续可以上传ISO镜像,创建虚机使用了。

错误处理

报错:

fatal: [node241.com]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'ovirt-4.4': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried", "rc": 1, "results": []}
 fatal: [node242.com]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'ovirt-4.4': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried", "rc": 1, "results": []}
 fatal: [node243.com]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'ovirt-4.4': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried", "rc": 1, "results": []}

解决办法:

检查3台主机上/etc/yum.repos.d/目录下是否清空

或者修改3台主机上/etc/yum.repos.d/ovirt-4.4.repo文件内容如下:

 # imgbased: set-enabled
 [ovirt-4.4]
 name = Latest oVirt 4.4 Release
 #baseurl = https://resources.ovirt.org/pub/ovirt-4.4/rpm/el$releasever/
 baseurl = http://mirror.massclouds.com/ovirt/ovirt-4.4/rpm/el$releasever/
 enabled = 1
 gpgcheck = 0
 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-ovirt-4.4
 #includepkgs = ovirt-node-ng-image-update ovirt-node-ng-image ovirt-engine-appliance

报错:

TASK [gluster.infra/roles/backend_setup : Create volume groups] ****************
 task path: /etc/ansible/roles/gluster.infra/roles/backend_setup/tasks/vg_create.yml:59
 failed: [node241.com] (item={'key': 'gluster_vg_sdb', 'value': [{'vgname': 'gluster_vg_sdb', 'pvname': '/dev/sdb'}]}) => {"ansible_loop_var": "item", "changed": false, "err": " Device /dev/sdb excluded by a filter.\n", "item": {"key": "gluster_vg_sdb", "value": [{"pvname": "/dev/sdb", "vgname": "gluster_vg_sdb"}]}, "msg": "Creating physical volume '/dev/sdb' failed", "rc": 5}
 failed: [node243.com] (item={'key': 'gluster_vg_sdb', 'value': [{'vgname': 'gluster_vg_sdb', 'pvname': '/dev/sdb'}]}) => {"ansible_loop_var": "item", "changed": false, "err": " Device /dev/sdb excluded by a filter.\n", "item": {"key": "gluster_vg_sdb", "value": [{"pvname": "/dev/sdb", "vgname": "gluster_vg_sdb"}]}, "msg": "Creating physical volume '/dev/sdb' failed", "rc": 5}
 failed: [node242.com] (item={'key': 'gluster_vg_sdb', 'value': [{'vgname': 'gluster_vg_sdb', 'pvname': '/dev/sdb'}]}) => {"ansible_loop_var": "item", "changed": false, "err": " Device /dev/sdb excluded by a filter.\n", "item": {"key": "gluster_vg_sdb", "value": [{"pvname": "/dev/sdb", "vgname": "gluster_vg_sdb"}]}, "msg": "Creating physical volume '/dev/sdb' failed", "rc": 5}

解决办法:

3台主机上/etc/lvm/lvm.conf中找到类似如下的一行(大概在357行),将它注释掉,如下:

#filter = [“a|^/dev/disk/by-id/lvm-pv-uuid-6f5KK0-SQIS-qrJW-HW73-8thS-s6C1-479Kc2$|”, “r|.*|”]

处理完报错后,点击界面上的“CleanUp”按钮等清理成功后再点击“Redeploy”执行重新部署,如下:

报错:

在PrepareVM过程中,报错:

"Failed to download metadata for repo 'ovirt-4.4': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried"

解决办法:

退出部署过程,注意让你选择是否清理时,要选择“Yes”,如下:

等清理完成后,再重新执行部署HostedEngine的过程(注意Gluster不需要再重新部署了);

在PrepareVM过程中,到Get local VM IP这一步时,如下:

迅速在host1主机上执行(注意最后的ip地址换成你环境中hosts1的ip):

ssh -L 0.0.0.0:5910:localhost:5900 192.168.105.241

然后通过virt-viewer连接HostedEngine虚机,连接地址:vnc://192.168.105.241:5910,然后使用root帐号登录到系统中(密码为部署是所配置),将/etc/yum.repos.d/目录清空或者移动到其它目录下:

mv /etc/yum.repos.d/* /root/

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

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

资讯
30 条回复 A 作者 M 管理员 E
  1. 到3台主机上/etc/lvm/lvm.conf中找到类似如下的一行(大概在357行),将它注释掉,如下:

    #filter = [“a|^/dev/disk/by-id/lvm-pv-uuid-6f5KK0-SQIS-qrJW-HW73-8thS-s6C1-479Kc2$|”, “r|.*|”]
    我按照这个方法,三台主机有两台可以,还有一台不可以。不知道为什么。

    • 检查下这3台主机上的磁盘有什么不同,fdisk、pvs都检测查下,是否盘的顺序不一致?

  2. 关于磁盘被filter的处理办法:
    1、参考文中的方法,屏蔽到lvm.conf中的filter;
    2、如果上面的方法不管用,那么:
    (1)multipath -ll查看磁盘是否被multipath了,如果有的话,到/etc/multipath.conf中修改blacklist如下:
    blacklist {
    protocol “(scsi:adt|scsi:sbp|scsi:sas)”
    }
    (2)重启multipath服务,systemctl restart multipathd;
    (3)擦除要使用的磁盘,wipefs -a /dev/sdb;
    (4)重新执行部署,先clean下;

  3. 你好,能稍微说明一下存储网和管理网分离的话,需要哪些配置吗,因为我在实际部署时,一台node配两个静态IP肯定路由不对,这里就不知道该怎么操作了,是如何实现两个管理和存储网都通

    • 管理网和存储网不要在同一网段中,还有存储网不用设置路由。

    • 那是要把存储网的路由设置在交换机上吗,总归得有一个地方有路由,不然网络都不通

    • 用存储网部署gluster,只需要各个主机之间能通过存储网通信就行。

    • 你好,对于这个管理网络与存储网络分离的问题,我也有此疑惑,我目前的配置是管理网络接交换机,然后配置了静态ip以及网关,网段为10.8.8.0,存储网络配置一个ip和子网掩码,网段就是10.8.7.0,需要给这两个网段分别 配置一台交换机吗,还是存储网和管理网全部接同一台交换机,再就是管理网是如何访问存储网的,比如管理网中主机ip10.8.8.1(存储ip为10.8.7.1)如何去访问存储网主机ip10.8.7.2(管理ip为10.8.8.2)的

    • 管理网和存储网可以接同一交换机,也可以接不同交换机,最好是分开,这样两个网段不会相互影响。管理网并不访问存储网,管理网是管理台用来与每个主机通信的。ovirt管理台配置gluster存储域时,通过管理网利用每个主机上运行的vdsm服务将gluster卷通过存储网挂载到本地目录,然后在本地目录中执行创建虚机磁盘和其它一些操作。每个主机之间通过存储网进行存储数据的交互,与管理网是相互独立的。

    • 谢谢您的回答,我的理解是:管理网控制主机,主机调用vdsm来使用存储网进行挂载,也就是说存储网段的交换机不用上连路由了,只需要管理网上连路由提供给用户来访问

    • 能否加一下您的好友,想和您这边多学习请教

  4. 文中安装node时选磁盘部分有错误,注意装node时只选一块磁盘,另一块用于gluster的不需要选。
    gluster那块盘要保证干净。

    • 文中已更正,感谢指出!

  5. 大家发现问题请反馈,有问题处理经验的也希望在这里分享下,共同学习进步

  6. Device Name注意要与你环境中的实际情况对应,这里默认是“/dev/sdb”
    请问一下 如何查看柱机 对应的device name

    • fdisk -l

  7. [ ERROR ] fatal: [localhost]: FAILED! => {“msg”: “The task includes an option with an undefined variable. The error was: ‘dict object’ has no attribute ”\n\nThe error appears to be in ‘/usr/share/ansible/collections/ansible_collections/ovirt/ovirt/roles/hosted_engine_setup/tasks/create_target_vm/01_create_target_hosted_engine_vm.yml’: line 91, column 15, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n – debug: var=server_cpu_dict\n ^ here\n\nThere appears to be both ‘k=v’ shorthand syntax and YAML in this task. Only one syntax may be used.\n”}

    请问有没有遇到这个问题,有的话麻烦分享一下解决方案,谢谢

  8. 添加第二台主机时报这个错误:“执行操作时出错:服务器 iscloudnode002.com 已是另一个集群的一部分。” 我的环境是一台主机配两个IP,两个主机名,管理和存储分离的。

    • 名称改个名字不用主机名iscloudnode002.com,主机名改成IP,添加成功。原因未知

    • 我也是这个问题,换IP也不行,我也是管理和存储分离的。

  9. 再次出现这个问题,折腾中,IP也不行了

    • 我用4.4.3没有问题了,不知道是不是4.4.4的问题

    • 我也是使用之前的ovirt单机,创建了3台虚拟机来测试超融合,之前使用4.4.3和4.4.4,在部署hostengine时,每次都卡在prepare VM这一步,会导致node1虚拟机直接重启。今天测试了4.4.5,一切都成功。但是在添加第二台主机时,也碰到这个问题,不知道你们是怎么弄的。谢谢!

  10. [ INFO ] TASK [ovirt.ovirt.hosted_engine_setup : Get local VM IP]
    [ ERROR ] fatal: [localhost]: FAILED! => {“attempts”: 90, “changed”: true, “cmd”: “virsh -r net-dhcp-leases default | grep -i 00:16:3e:30:e3:5d | awk ‘{ print $5 }’ | cut -f1 -d’/'”, “delta”: “0:00:00.052183”, “end”: “2021-06-28 01:36:01.530034”, “rc”: 0, “start”: “2021-06-28 01:36:01.477851”, “stderr”: “”, “stderr_lines”: [], “stdout”: “”, “stdout_lines”: []}

    需要通过virt-viewer连接HostedEngine虚机,然后使用root帐号登录到系统中(密码为部署是所配置),将/etc/yum.repos.d/目录清空或者移动到其它目录下?这步做的意义是啥呢

    • 部署过程中engine虚机会联网更新,但软件源不稳定经常因网络问题导致此步操作失败,所以清掉yum源,不影响部署。

  11. 存储网络和管理网络分开如何配置,一直在报错Host is not added in known_hosts,感觉无法识别存储网络主机名
    hosts文件已经配置
    10.1.200.114 ovirt-node1
    10.1.200.115 ovirt-node2
    10.1.200.118 ovirt-node5
    10.1.200.113 ovirt-engine

    192.168.0.1 ovirt-storge1
    192.168.0.2 ovirt-storge2
    192.168.0.5 ovirt-storge5

  12. 存储网络和管理网络分离,该如何配置,一直报错Host is not added in known_hosts

  13. 配置免密码登录了吗

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