前言
oVirt其实是RHEV的上游项目,说白了就是红帽拿来给小白鼠做实验的,什么改动/新功能都先加到oVirt上,等测试好了,BUG修完了就正式在RHEV中上线。。
oVirt安装挺简单的,这个产品的定位应该就是集群/个人私有云平台。通过oVirt虚拟出来的机器性能其实还不错,就是配置起来很多坑,我看网上也没个像样的教程,今天趁机水一篇文章~
本人使用的环境是虚拟化嵌套,即在VMware中虚拟出三台机器,一台用作Engine(控制节点,也可以说是Master。)两台Node(计算节点。)
Vmware的网络使用NAT模式,Engine的IP:192.168.3.200,Node1的IP:192.168.3.201,Node2的IP:192.168.3.202。
Engine使用最新的CentOS7.6-Minimal作为基础系统。
部署oVirt-Engine
在Engine内先更新系统,安装一些基本工具:
yum -y update yum -y install epel-release yum -y install supervisor nano net-tools
每台机器都是静态IP,不要去用DHCP,这里先把Engine的网卡IP配置好,例如我的外网口网卡名是ens33,那么编辑:
nano /etc/sysconfig/network-scripts/ifcfg-ens33
配置网卡的静态IP格式:
BOOTPROTO="none" IPADDR="192.168.3.200" PREFIX="24" GATEWAY="192.168.3.2" DNS1="114.114.114.114"
不知道VMWare的网关IP是多少?下面的命令走一走:
netstat -r -n
重启网络服务:
systemctl restart network
因为是国内的网络环境,得配置个yum代理,不然下载包的时候估计要下到明年,安装oVirt的Engine大概400来个包吧。。正好前两天用goflyway套了个CF,在这台机器上就用goflyway配置个socks5。。
将goflyway的二进制文件传到服务器内就不说了。新建一个supervisor的配置文件:
nano /etc/supervisord.d/goflyway.ini
写入:
[supervisord] nodaemon=false [program:goflyway] priority=1 directory=/usr/bin command=/usr/bin/goflyway -l=":12315" -k="密码" -up="cf://nginx.xxx.com:8080" autorestart=true
启动supervisor:
systemctl start supervisord systemctl enable supervisord
配置yum的socks5代理:
echo "proxy=socks5://127.0.0.1:12315" >> /etc/yum.conf
关防火墙,关SELinux:
systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
设置Hostname:
hostnamectl set-hostname ovirtengine.lala.im
添加Hosts:
echo "192.168.3.200 ovirtengine.lala.im" >> /etc/hosts echo "192.168.3.201 ovirtnode1.lala.im" >> /etc/hosts echo "192.168.3.202 ovirtnode2.lala.im" >> /etc/hosts
安装Engine:
yum -y install http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm yum -y install ovirt-engine
安装完成之后使用下面的命令开始部署:
engine-setup --generate-answer=~/answer.txt
整个应答流程大概如下,基本上一路回车保持默认就行了,只有在配置防火墙的时候选择个No即可(下面凡是留空的即代表使用了默认值):
--== PRODUCT OPTIONS ==-- Set up Cinderlib integration (Currently in tech preview) (Yes, No) [No]: Configure Engine on this host (Yes, No) [Yes]: Configure ovirt-provider-ovn (Yes, No) [Yes]: Configure Image I/O Proxy on this host (Yes, No) [Yes]: Configure WebSocket Proxy on this host (Yes, No) [Yes]: * Please note * : Data Warehouse is required for the engine. If you choose to not configure it on this host, you have to configure it on a remote host, and then configure the engine on this host so that it can access the database of the remote Data Warehouse host. Configure Data Warehouse on this host (Yes, No) [Yes]: Configure VM Console Proxy on this host (Yes, No) [Yes]: --== PACKAGES ==-- [ INFO ] Checking for product updates... [ INFO ] No product updates found --== NETWORK CONFIGURATION ==-- Host fully qualified DNS name of this server [ovirtengine.lala.im]: Setup can automatically configure the firewall on this system. Note: automatic configuration of the firewall may overwrite current settings. NOTICE: iptables is deprecated and will be removed in future releases Do you want Setup to configure the firewall? (Yes, No) [Yes]: No --== DATABASE CONFIGURATION ==-- Where is the DWH database located? (Local, Remote) [Local]: Setup can configure the local postgresql server automatically for the DWH to run. This may conflict with existing applications. Would you like Setup to automatically configure postgresql and create DWH database, or prefer to perform that manually? (Automatic, Manual) [Automatic]: Where is the Engine database located? (Local, Remote) [Local]: Setup can configure the local postgresql server automatically for the engine to run. This may conflict with existing applications. Would you like Setup to automatically configure postgresql and create Engine database, or prefer to perform that manually? (Automatic, Manual) [Automatic]: --== OVIRT ENGINE CONFIGURATION ==-- Engine admin password: Confirm engine admin password: [WARNING] Password is weak: The password is shorter than 8 characters Use weak password? (Yes, No) [No]: Yes Application mode (Virt, Gluster, Both) [Both]: Use default credentials (admin@internal) for ovirt-provider-ovn (Yes, No) [Yes]: --== STORAGE CONFIGURATION ==-- Default SAN wipe after delete (Yes, No) [No]: --== PKI CONFIGURATION ==-- Organization name for certificate [lala.im]: --== APACHE CONFIGURATION ==-- Setup can configure the default page of the web server to present the application home page. This may conflict with existing applications. Do you wish to set the application as the default page of the web server? (Yes, No) [Yes]: Setup can configure apache to use SSL using a certificate issued from the internal CA. Do you wish Setup to configure that, or prefer to perform that manually? (Automatic, Manual) [Automatic]: --== MISC CONFIGURATION ==-- Please choose Data Warehouse sampling scale: (1) Basic (2) Full (1, 2)[1]: --== CONFIGURATION PREVIEW ==-- Application mode : both Default SAN wipe after delete : False Update Firewall : False Host FQDN : ovirtengine.lala.im Set up Cinderlib integration : False Configure local Engine database : True Set application as default page : True Configure Apache SSL : True Engine database secured connection : False Engine database user name : engine Engine database name : engine Engine database host : localhost Engine database port : 5432 Engine database host name validation : False Engine installation : True PKI organization : lala.im Set up ovirt-provider-ovn : True Configure WebSocket Proxy : True DWH installation : True DWH database host : localhost DWH database port : 5432 Configure local DWH database : True Configure Image I/O Proxy : True Configure VMConsole Proxy : True Please confirm installation settings (OK, Cancel) [OK]: --== SUMMARY ==-- ... An example of the required configuration for iptables can be found at: /etc/ovirt-engine/iptables.example Please use the user 'admin@internal' and password specified in order to login Web access is enabled at: http://ovirtengine.lala.im:80/ovirt-engine https://ovirtengine.lala.im:443/ovirt-engine Internal CA 68:63:4D:F5:FC:12:3F:FA:A3:82:4E:64:82:06:A8:6C:22:2E:E8:2A SSH fingerprint: SHA256:... ...
配置Engine的SSL证书
默认情况下,Engine是只能通过FQDN访问,我们可以设置一下让它可以直接用服务器的IP访问:
写入:
echo "SSO_ALTERNATE_ENGINE_FQDNS="192.168.3.200"" >> /etc/ovirt-engine/engine.conf.d/99-custom-sso-setup.conf
重启Engine服务:
systemctl restart ovirt-engine.service
但是这样并没有什么卵用,因为待会我们开设虚拟机的时候需要上传ISO镜像,上传ISO镜像的时候必须使用SSL,并且证书要是被浏览器所信任的。所以我们还是得把证书给配置好,这个懒算是白偷了。。。
所以,这个时候我们需要编辑Windows的Hosts文件,路径如下:
C:\Windows\System32\drivers\etc\hosts
指定一下Hostname:
此时我们还是通过域名的方式去访问Engine,例如我之前安装回显给我的访问地址是:
https://ovirtengine.lala.im
能访问到的话,就把这个CA证书给下载下来:
以Chrome为例,在设置内搜索“证书”,找到“管理证书”:
按如图所示选择:
选择刚才下载的证书文件:
按如图所示选择:
点是:
设置完了后,清除浏览器的缓存,关闭浏览器重新打开,应该可以看到SSL信任了,输入管理员的账号密码进行登录:
配置NFS网络文件系统
这里我使用NFS来部署集群内的存储服务,NFS服务就部署在Engine机器内。首先新建目录并给予正确的权限:
mkdir -p /media/ovirt-vm chown 36:36 /media/ovirt-vm chmod 755 /media/ovirt-vm
打开NFS的配置文件:
nano /etc/exports
写入:
/media/ovirt-vm *(rw,sync,no_root_squash,no_subtree_check)
启动NFS服务:
systemctl start nfs-server systemctl enable nfs-server
查看我们之前配置的目录是否成功共享出来了:
showmount -e 192.168.3.200
有回显的话,那么现在就可以把文件系统挂载到机器内了:
mkdir -p /mnt/vms chmod 755 /mnt/vms mount -t nfs 192.168.3.200:/media/ovirt-vm /mnt/vms
查看挂载状态:
[root@ovirtengine ~]# df -HT Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 20G 9.8G 8.7G 54% / devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 2.0G 13k 2.0G 1% /dev/shm tmpfs tmpfs 2.0G 13M 2.0G 1% /run tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda1 ext4 512M 150M 325M 32% /boot tmpfs tmpfs 396M 0 396M 0% /run/user/0 192.168.3.200:/media/ovirt-vm nfs4 20G 9.8G 8.7G 54% /mnt/vms
关于oVirt-Engine的配置暂时告一段落。
部署oVirt-Node(部署计算节点)
在刚才我们部署的Engine的版本是4.3,那么此时我们要部署的节点版本必须与Engine对应,部署节点的方法推荐直接用官方做好的系统镜像。
4.3版本的发布地址:
https://resources.ovirt.org/pub/ovirt-4.3/iso/ovirt-node-ng-installer/
这边我使用基于CentOS7的4.3.3,与Engine对应:
https://resources.ovirt.org/pub/ovirt-4.3/iso/ovirt-node-ng-installer/4.3.3-2019041712/el7/ovirt-node-ng-installer-4.3.3-2019041712.el7.iso
怎么用VMware新建虚拟机就不说了,这肯定都会。。开机后,你应该可以看到oVirt的界面:
这个镜像我不清楚是有BUG还是和VMware不兼容,分区的时候不能用自动的方式,会报错,所以这里只能选择手动(给小白鼠用的东西果然不稳定啊):
不能用普通方式分区,这里就选择LVM简单模式吧:
分区的基本要求是/boot必须要有1024MB大小,/var必须要大于10GB,那我只能这样分了:
之前说过,所有机器的网络全部用静态IP,所以这里节点的网络配置选使用手动,然后自己填写相关的信息:
最终的网络和主机名,注意主机名改了要点一下Apply才能生效:
时区和键盘等其他设置如图,和下面一样的话就可以开始安装了:
等到安装完成,进入到节点的系统内,查看一下节点的状态,确保都是OK:
进入到节点的网络配置目录:
编辑你的外网网卡配置文件,例如我的是ens33,把里面的ONBOOT改为Yes:
重启网络服务:
systemctl restart network
看一下IP是否能够成功获取到:
有多少个节点就这样配置,这里就不重复造轮子了。。节点的配置告一段落。
创建oVirt集群
在部署好了Engine和Node后,现在我们就可以尝试创建一个oVirt集群了,之前说过oVirt的安装其实很简单,实际上最难的地方应该是如何去用。很多人初次接触到这个东西都是会装不会用。
现在我们回到Engine的WEB面板上,首先点击计算-数据中心:
点击右上角新建数据中心:
点击配置集群:
注意!注意!注意!因为我们的机器是在VMware虚拟机内,这里CPU类型只能选下图我标注的,其他的会导致虚拟机无法正常启动,另外别忘了设置默认的网络供应商:
接着点击优化,在这里按如图设置一下:
其他的都保持默认不做更改,点击确定完成集群的创建。
在集群内添加主机(添加Node)
点击配置主机:
输入正确的Hostname和root密码,然后点击确定:
它会提示你没配置电源管理,这个我们忽略掉,因为我们是在VMware虚拟机内,这个电源管理是针对物理机的,所以直接确定:
此时点击右上角箭头所指按钮,你可以看到集群的部署状态:
一旦这里的部署完成,我们就可以点击计算-主机:
看到两台Node处于维护模式,点击管理-激活:
等待片刻确保Node均是UP状态:
配置存储
此时回到计算-数据中心,点击右边的按钮,选择“引导操作”:
继续之前的集群配置,点击配置存储:
在新建存储页面,选择存储类型为NFS,注意!注意!注意!导出路径的填写:
有多个NFS共享目录都可以用这种方式添加,这里就不重复造轮子了。此时我们点击磁盘-存储,在页面内点击上传:
上传你需要用到的ISO镜像,这里我使用一个Debian9的ISO作为演示:
创建你的第一台虚拟机
一旦你完成上面的所有步骤,那么现在就可以尝试使用oVirt来创建一台虚拟机了。首先点击计算-虚拟机-新建,按如图所示选择:
新建虚拟磁盘:
来到系统,注意!注意!注意!这里的自定义仿真机必须选择为如图所示的pc-i440fx-rhel7.2.0:
选为其他仿真机会导致虚拟机直接无法启动,应该是一个BUG,具体问题如下:
https://bugzilla.redhat.com/show_bug.cgi?id=1476278
现在来到控制台选项,取消如图所示的按钮:
最后来到引导选项,修改第一启动项为CD-ROM,勾选附加CD,选择之前我们上传的ISO镜像:
点击运行,之后点击控制台,会下载一个.vv结尾的文件:
如何使用这个.vv文件?Windows下载这个客户端:
https://virt-manager.org/download/
安装完成之后,双击即可打开控制台界面,久违的虚拟机安装界面终于出现在眼前了:
虚拟机正常工作:
写在最后
这个oVirt,我总结出来的几个坑就是:
1.WEB面板必须要用域名访问,而且上传ISO文件的时候还需要要把一个自签的证书给信任,这是什么反人类的设计啊!
2.官方发布的节点ISO镜像,不能使用自动分区,很可能是一个超级大的BUG?另外系统安装完成之后网卡竟然不会自启动!需要手动去改ONBOOT。。
3.创建的虚拟机不能将CD-ROM作为Bios第一启动项,当然这个本文有解决方法。
4.WEB面板设计的太不人性化,初次使用者估计都摸不着头脑。。另外看似安装简单,实际这样那样的一点配置,全部配置起来也比较繁琐了。
5.这样那样的一些小问题,就不详说了。
很好,基于上面这些原因,我还是选择Proxmox吧,打扰了。
终于发现了一份优秀的ovirt部署教程,折腾这个好久了,感谢
LALA
我怎么感觉国内的zstack就是改装的这个呢!
终于找到原文了