拒坑版oVirt-Engine 4.2 编译笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 如何用源码编译出一套oVirt-Engine 的介绍很多,其实官方档也介绍的很清楚,但是依然很多人在编译过程中各种踩坑、甚至怀疑人生。说实话前几天想个做编译笔记分享给大家的过程中又踩坑,因此坚定一定要写一个《拒坑版oVirt-Engine 4.

  KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6之后集成在Linux的各个主要发行版本中, KVM可以实现全虚拟化(需要硬件支持如:Intel -VT技术),KVM已成为学术界的主流VMM之一。RedHat 发布了一个开源项目LibVirt, LibVirt提供有一套命令行工具和API,方便用户通过简洁的命令完成对虚拟机的管理。目前多数有图形交互界面的虚拟机管理工具内部都是调用了LibVirt。现在基于LibVirt的KVM管理工具中名气最大的莫过于oVirt 了,它也是RedHat 出品与LibVirt 系出同门自然一些新的技术应用、扩展支持、补丁升级、BUG修复都能第一时间得到更新。oVirt是一个开源项目,国内很多做自主可控VDI 云桌面产品的公司都有拿oVirt 做参照物。
  oVirt 由客户端(oVirt-Node)与管理端(oVirt-Engine)组成, oVirt-Engine 是一个J2EE的WEB 项目,方便用户通过WEB 图形化的交化界面管理资源管理虚拟机。目前针对oVirt 的二次开发第一步都是从编译和修改oVirt-Engine 开始。如果有人足够不要脸完全可以把源码下载改个Title 后编译打包再说是自己开发的VDI拿去挣钱。
  如何用源码编译出一套oVirt-Engine 的介绍很多,其实官方档也介绍的很清楚,但是依然很多人在编译过程中各种踩坑、甚至怀疑人生。说实话前几天想个做编译笔记分享给大家的过程中又踩坑,因此坚定一定要写一个《拒坑版oVirt-Engine 4.2 编译笔记》 ,争取让参照笔记的人可以一次直接编译成功(最新的 oVirt 4.2)。

首先,无论英文是否好(不用就是在线翻译)都强列建议看一下官方英文原版的编译文档,可以了解官方流程,重要的是一些特别强调的地方。
https://www.ovirt.org/develop/developer-guide/engine/engine-development-environment/

我的完整笔记:

第一步:安装操作系统及修改默认语言
安装一个干净的 Centos 7.4 选择默认语言为英语,如果你已经有一个中文版,可以通过修改 /etc/locale.conf 将默认语言改为英文,如果你偏不信坚持非要用中文后面掉坑请自责。

默认语言

vim /etc/locale.conf

LANG="en_US.UTF-8"

第二步:安装后期相关的依赖包、软件包

批量安装第三方软件包

yum install git java-devel maven openssl m2crypto python-psycopg2 python-cheetah python-daemon libxml2-python pyflakes python-pep8 python-docker-py mailcap python-jinja2 python-dateutil gdeploy unzip

这里使用yum install 批量的安装N 个软件包(名字用空格隔开),全部都是后面编译脚本执行中可能会用到的,切记不要漏装。在些异常情况下批量安装时可能个别的包安装失败了,由于滚屏速度快你没看见。到最后执行编译脚本时提示缺少某些组件(软件包)时可以回到这里再补装。

第三步:安装 postgresql 9.6 (新版)
Cenos 7 默认源中所提供的 postgresql( 一种非关系型数据库)版本比较老,oVirt 4.2 对 postgresql 的依赖要求最低是9.4 ,因此我没有在上面批量安装软件包中一并安装。在些需要先更新 postgresql 的官方安装源:

postgresql 安装步骤

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96-server postgresql96-contrib

第四步:设置openJdk 为首选
其实如果你没有自己安装过 ORACLE JDK( SUN JDK )这一步不是必须的,因为Centos 7 自带的JAVA 就是 openJDK

设置java首选openjdk

alternatives --config java
alternatives --config javac

第五步:安装 ovirt
前面几版都只是准备工作。这里才刚刚开始触及 oVirtr 工作; 但请注意这里也仍仅是前期的相关支持库与依赖、基础环境的准备工作。正戏还是没有开始....

安装源

yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release42.rpm

安装 ovirt-engine 相关服务

yum install ovirt-engine-wildfly ovirt-engine-wildfly-overlay

安装 ovirt-host 相关的库

yum install ovirt-host-deploy ovirt-setup-lib ovirt-js-dependencies

第六步:配置 postgresql 9.6 相关设置
正戏上演前的大餐,这一步有几个文件需要手工修改,还需要在命令行配置数据库,操作时要注意看清楚提示,确保每步都执行成功,否则后面又会踩坑。

初始化数据库

/usr/pgsql-9.6/bin/postgresql96-setup initdb

修改 postgresql.conf 文件

vim /var/lib/pgsql/9.6/data/pg_hba.conf

host all all 127.0.0.1/32 password

host all all ::1/128 password

修改 postgresql.conf 文件

vim /var/lib/pgsql/9.6/data/postgresql.conf

max_connections=150
autovacuum_vacuum_scale_factor=0.01
autovacuum_analyze_scale_factor=0.075
autovacuum_max_workers=6

work_mem=8192

重启PostgreSQL服务

systemctl start postgresql-9.6

设置PostgreSQL服务开机启动

systemctl enable postgresql-9.6

允许 postgresql-9.6 通过防火墙

firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload

创建数据库和用户:(以root身份使用以下命令)

从root 切换到 postgres

su - postgres

打开 template1 并在其下创建用户:engine 密码:engine ; 这个用户名与密码后面配置时会用到,一定要要设得自己不知道了。

psql -d template1
create user engine password 'engine';
create database engine owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';

输入 q 返回

q

打开 engine 并在其下创建扩展 uuid-ossp ,

psql -d engine
DROP FUNCTION IF EXISTS uuid_generate_v1();
CREATE EXTENSION "uuid-ossp";

输入 q 返回,exit 退出

q
exit

第七步:克隆 ovirt-engine 的源码到本地并编译
正戏开始:

关闭防火墙(这一步其实是可选的)

systemctl stop firewalld.service

git 源码

mkdir -p "$HOME/git"
cd "$HOME/git"
git clone git://gerrit.ovirt.org/ovirt-engine

编译(不要用root用户,不要用root 用户这个是一再强调又强调的,可人偏持不信)。执行 make ,ovirt-engine 的编译脚本中有很多参数可供调用,关于这些参数的意义我会另外再写一篇。这里我只用一个参数 PREFIX="$HOME/ovirt-engine"

整个编译过程会比较长,我大约用了一个小时左右必须联网、如果上面的相关支持库、包都已经安装了,这里会比较顺利。

make install-dev PREFIX="$HOME/ovirt-engine"

检查 /usr/lib/firewalld/services/ 下是否有ovirt 的防火墙配置文件,不知道是不是我运气不好还是别的弯子我绕错了路,我从官网同步回来的文件中竟然没有?后来我在官方oVirt-engine 发行版(产品)中找到了这几个文件,我提供下载。如果你也没有下载回来直接放到 /usr/lib/firewalld/services/ 目录下面。

ovirt-imageio.xml
ovirt-provider-ovn.xml
ovirt-storageconsole.xml
ovirt-vmconsole.xml

下载我打包现成的:

https://www.yunforum.net/sfile/ovirt-firewalld.xml.zip

第八步:设置ovirt
$HOME/ovirt-engine/bin/engine-setup
如果前面所有的步骤都正确操作了,这个设置过程会很顺利,基本输入YES 后,再一路按回车就可以了(除了验证数据库的用户名密码,就是此前设置 engine )

第九步:启动ovirt-engine服务

启动ovirt-engine服务

$HOME/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt-engine.py start
当服务启动成功后,你可以通过浏览器直接访问管理门户,浏览器必须支持H5

访问ovirt-engine

http://localhost:8080
https://localhost:8443

相关文章
最近ovirt遇到一些问题整理及解决方法
最近ovirt遇到一些问题整理及解决方法
1018 0
|
存储 Windows
Cheat Engine基本使用方法
Cheat Engine基本使用方法
195 2
|
Go 开发工具
Genymotion-启动报错Unable to load VirtualBox engine....
Genymotion-启动报错Unable to load VirtualBox engine....
128 0
|
SQL AliSQL MySQL
AliSQL情人节版本Release:开源Sequence Engine
AliSQL开源Sequence Engine; 单调递增的唯一值,是在持久化数据库系统中常见的需求,无论是单节点中的业务主键,还是分布式系统中的全局唯一值,亦或是多系统中的幂等控制。
4979 0
|
关系型数据库 数据库 PostgreSQL
|
存储 数据安全/隐私保护 网络安全