KVM Cloud云平台

项目介绍

KVM Cloud 是一款基于Java实现的轻量级私有云平台,旨在帮助中小企业快速实现计算、存储、网络等资源的管理,让企业拥有自己的云平台,包括但不限于如下功能:
1、基于KVM的VM基础功能(创建、启动、停止、重装、webVNC等功能)
2、使用NFS作为磁盘存储池
3、支持磁盘动态添加取消
4、多主机管理
5、支持模版维护,用于快速创建VM
6、虚拟机IP自动管理
7、多网卡支持
8、支持 raw、qcow、qcow2、vdi、vmdk、vpc磁盘格式
9、磁盘快照支持
10、通过OVS支持VPC概念
11、支持cloud-init配置系统密码

关于升级

目前不支持V1、V2升级到最新版本
V3.0升级时请重新上传系统模版文件Cloud-System-v3.1.qcow2(md5:2696ca0d762279bc386b03c8cea82cd7),并在模版页面点击重新下载

操作系统

Linux(intel)

SELinux配置

setenforce 0
vi /etc/selinux/config
SELINUX=permissive

SELinux配置

vim /etc/sysctl.conf 
net.ipv4.ip_forward=1               # 设置转发并保存
sysctl -p

防火墙配置

systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables

NFS配置

1、安装NFS软件包
yum -y install nfs-utils rpcbind
2、设置开机自启以及启动服务
systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server
3、新建存储文件夹
mkdir -p /data/nfs
4、编辑配置
vi /etc/exports
/data/nfs *(rw,async,no_root_squash)
5、重新加载exportfs文件
  exportfs -a
6、编辑nfs配置
vi /etc/sysconfig/nfs
    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    RQUOTAD_PORT=875
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020
7、重新服务
systemctl restart rpcbind
systemctl restart nfs-server
8、测试挂载是否正常
mount -t nfs 127.0.0.1:/data/nfs /mnt
df -h        ###查看有了代表成功
umount /mnt

KVM

1、验证主机是否支持虚拟化
 lsmod | grep kvm #查看结果确认是否支持虚拟化
 如果是vmware开启的虚拟机,请启用虚拟化技术
2、主机安装KVM
yum install qemu-kvm libvirt bridge-utils
yum install java-1.8.0-openjdk* -y
3、配置KVM 主机网桥,增加一个网桥

这一步一定注意:使用ip addr查看你的网卡名,在CentOS 7中网卡名可能不是eth0,错误的网卡名会导致后期配置的虚拟机无法正常被访问到! 确认网卡名无误后配置网桥:

vi /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.2.130
    NATMASK=255.255.255.0
    PREFIX=24
    GATEWAY=192.168.2.1
    DNS1=8.8.4.4
    DNS2=8.8.8.8
​
# 务必使用 ip addr 命令查看你的实际网卡名,他很可能不是eth0
# 如需ovs配置,请参考[OVS 网卡设置参考.txt](scripts%2FOVS%20%E7%BD%91%E5%8D%A1%E8%AE%BE%E7%BD%AE%E5%8F%82%E8%80%83.txt)
# 下面这个编辑命令注意改成 ifcfg-实际网卡名
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 下面这个DEVICE注意改成 实际网卡名
    BOOTPROTO=none
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    NM_CONTRLLED=no
    BRIDGE=br0
4、VNC 配置  
vi /etc/libvirt/qemu.conf
    vnc_listen="0.0.0.0"
5、Libvirtd配置
vi /etc/libvirt/libvirtd.conf
    listen_tls = 0
    listen_tcp = 1
    unix_sock_group = "root"
    unix_sock_rw_perms = "0777"
    auth_unix_ro = "none"
    auth_unix_rw = "none"
    tcp_port = "16509"
    listen_addr = "0.0.0.0"
    auth_tcp = "none"
vi /etc/sysconfig/libvirtd
    LIBVIRTD_ARGS="--listen"
systemctl restart libvirtd 
项目编译
mvn clean package

完成配置

1、导入mysql表及相关数据

脚本位于scripts下

2、安装Redis

3、修改配置文件

4、分别启动管理端及Agent端,浏览页面:http://localhost:8080/

管理端: java -jar cloud-management-1.0-SNAPSHOT.jar --spring.config.location=server.yaml
Agent: java -jar cloud-agent-1.0-SNAPSHOT.jar --spring.config.location=client.properties
 --spring.config.location 是可选项,用于指定配置文件,如果不需要修改,可以去掉,配置文件为各自模块下的src/main/resources/application.properties文件

5、平台登陆账号默认用户名/密码:admin/123456

6、创建基础网络

采用桥接网络配置,IP地址段与主机主机段需保持一致,可通过起始IP与结束IP和主机网络进行分离,防止IP冲突,Vlan只支持OVS方式

7、创建主机

8、创建存储池(只支持nfs)

9、下载基础模版(系统模版选择cloud/v3/Cloud-System-V3.1.qcow2)

链接: 百度网盘 请输入提取码 提取码: 1bpn

10、安装nginx,配置基础下载地址,并在页面完成模版配置

11、等待系统模版下载完成,并初始化系统VM成功

12、windows附加磁盘时请安装virtio-win.iso驱动

13、创建VM

相关问题

1、关于找不到配置文件问题导致数据库连接问题

server.yaml 和 client.properties 内容分别为management和agent项目下的application.yaml和application.properties的文件,运行时自行修改名称及相关配置

2、关于备份与恢复

对数据库和存储池进行完整备份;
数据无价,建议对虚拟机中的数据进行备份

3、关于网络隔离

    1)、目前只支持OVS桥接状态下的Vlan模式,如需使用,请自行安装OVS。
    2)、负载均衡器可通过挂载基础网络网卡的方式自行实现。
​

4、个别windows系统无法找到引导的问题

    1)、首先确认创建的ISO系统类型是否正确
    2)、如果确认系统类型没有问题,可以通过老毛桃做一个PE的ISO镜像,在创建系统的时候可以通过PE镜像创建,然后进入PE系统,在页面上卸载光盘,重新挂载你要安装的操作系统,然后通过PE安装就可以正常安装了

5、windows系统磁盘不识别问题

    1)、windows没有virto的驱动,请安装virtio-win.iso驱动
    2)、如果是系统盘则需要在磁盘选择页面临时挂载virtio-win.iso驱动后安装或选择ide总线方式

6、服务器掉电重启后处理

   1、服务器掉电重启后,请在页面手动关闭所有自己创建的虚拟机,然后重新启动,系统虚拟机有自动检测重启功能,无需处理
   2、掉电可能引起虚拟磁盘损坏,如无法启动,可通过qemu-img check检查并进行相应修复

7、虚拟机虚拟化嵌套

1、验证KVM 宿主机是否启用了嵌套虚拟化:
    基于 Intel 的处理器运行以下命令:cat /sys/module/kvm_intel/parameters/nested
    基于 AMD 的处理器运行以下命令: cat /sys/module/kvm_amd/parameters/nested
    上述命令输出N /0表示嵌套虚拟化是禁用的。如果我们得到的输出是Y/1 则表示在您的宿主机已启用嵌套虚拟化
2、如果需要启用嵌套虚拟化,使用以下内容创建一个文件名为/etc/modprobe.d/kvm-nested.conf 的文件:
    options kvm-intel nested=1
    options kvm-intel enable_shadow_vmcs=1
    options kvm-intel enable_apicv=1
    options kvm-intel ept=1
3、reboot 重启机器
4、现在验证嵌套虚拟化功能是否启用
    cat /sys/module/kvm_intel/parameters/nested

8、cloud-init相关配置(如需禁用,请在管理配置文件中设置app.route.type:dhcp)

1、cloud-init只支持dnsmasq下发方式
2、cloud-init数据源采用NoCloud,请修改cloud相关配置如下:
    datasource:
      NoCloud:
        seedfrom: http://169.254.169.254/
    datasource_list: [  NoCloud ]
​
3、系统模板在安装cloud-init后手动设置相关配置
    1)、设置允许密码登录:设置ssh_pwauth:   1
    2)、可设置允许root登录:disable_root: 1 
    3)、ubuntu修改/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg 保证默认网卡名和分配网卡名一致
    4)、目前只测试了Centos与Ubuntu,Windows请自行实现相关初始化行为
    5)、密码只对应默认用户,具体请查看system_info.default_user相关配置
    6)、其他配置请参照cloud-init相关配置进行安装
    7)、对系统模板请安装qemu-command-agent,并进行相关配置
    
    
4、目前只提供Centos7及Ubuntu18.04的系统模版,其他系统模版,请自行实现
    1)、Centos默认用户名为centos,密码为创建系统时输入的密码
    2)、Ubuntu默认用户名为ubuntu,密码为创建系统输入的密码
    3)、系统模版不支持root用户名密码登录,如需root登录,请自行修改
​

9、页面删除主机后,如需要重新加入主机,请删除该主机Agent目录下config.json,然后重启Agent

10、关于提示签名错误问题,请确保管理端跟agent端时间同步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/162040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

systemverilog:interface中端口方向、Clocking block的理解

1、interface中端口方向的理解 (1)从testbench的角度看,tb中信号的输入输出方向与interface中信号输入输出方向一致: (2)从DUT角度看,DUT中信号输入输出方向与interface中信号输入输出方向相反…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.17,PWM控制与状态切换)

1.今天做了什么 2.过程思路 看了两天文档才慢慢看懂,有点满了 现在接着前一天的思路,可以通过代码来控制pwm的占空比。我这里采用的是TP0定时器 初步控制pwm的占空比 void LED_PWM_OPEN(void) {//占空比 PWM1-Y-PB2PWM1DH 0X0F;PWM1DL 0X00; //占…

【Linux】20、进程状态:不可中断进程、iowait、僵尸进程、dstat strace pstree

文章目录 一、进程状态1.1 iowait 分析1.2 僵尸进程1.3 小结 短时应用的运行时间比较短,很难在 top 或者 ps 这类展示系统概要和进程快照的工具中发现,你需要使用记录事件的工具来配合诊断,比如 execsnoop 或者 perf top。 讲到 CPU 使用率的…

App测试经典面试题及参考答案

最近整理了一些关于App测试的面试题。 本参照答案是本人在工作实践中总结,仅代表个人观点,如有错误,请谅解。 1、说一些你在测试过程中常用到的adb命名 2、APP测试与web测试的区别? 3、APP闪退有哪些原因造成的? …

解决Kibana初始化失败报错: Unable to connect to Elasticsearch

现象: 原因: docker run生成容器的时候,指定elastic server时指向了localhost 为什么不能是localhost, 因为这个localhost指向的是容器本身的网络,而elastic用的是物理网络,两个网络是隔离的,所以如果kiba…

统计量及抽样分布

1.常用统计量 (1)样本均值 反映总体X数学期望的信息,是最常用的统计量。 (2)样本方差 反映总体X方差的信息。 (3)样本变异系数 反映总体变异系数C的信息,用来刻画离散程度。 &am…

微服务实战系列之Nacos

导语 欢迎来到 “Nacos” 的世界! Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单…

C语言基本算法----冒泡排序

原理 冒泡排序就是对一个存放N个数据的数组进行N次扫描,每次把最小或者最大的那个元素放到数组的最后,达到排序的目的。 原理图解 冒泡排序过程分析 冒泡排序的执行过程 冒泡排序总结 在此感谢 冒泡排序法_哔哩哔哩_bilibili 这篇blog是对这位up此视…

ESP32网络开发实例-非接触式水位监测

非接触式水位监测 文章目录 非接触式水位监测1、HC-SR04介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将使用 HC-SR04 超声波传感器和 ESP32 创建一个水位监测网络服务器。 这将是一个非接触式水位测量系统。 首先,我们将介绍HC-SR04 与 ESP32 连接。 使用ESP32对超声…

mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决

有时候我们在使用mac的时候,会遇到一些问题,比如无法向移动硬盘拷贝文件或者不能读取移动硬盘文件。这些问题会给我们的工作和生活带来不便,所以我们需要找到原因和解决办法。本文将为你介绍mac无法向移动硬盘拷贝文件怎么回事,以…

RobotFramework之如何使用数据驱动(十二)

学习目录 引言 数据驱动是什么? 非驱动方式测试案例 通过添加Template模板的方式,实现数据驱动 将参数放在变量文件中,实现数据驱动 引言 大家平时在写接口或者UI自动化用例的时候,是否遇到这种情况: 写了很多条…

在 C# 程序中注入恶意 DLL

为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的?其实简而言之就是线程的远程注入,这一篇就展开说一下。 实现原理 1. 基本思路 WinDbg 在附加进程的时候,会注入一个线程到 C# 进程 中&…

盘点60个Python各行各业管理系统源码Python爱好者不容错过

盘点60个Python各行各业管理系统源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 源码下载链接:https://pan.baidu.com/s/1VdAFp4P0mtWmsA158oC-aA?pwd8888 提取码:8888 项目名…

原来机械硬盘比内存慢10万倍

我们都知道机械硬盘的速度很慢,内存的速度很快,那么不同存储器之间的差距到底有多大呢? 我们先来看一幅图: CPU访问寄存器的时间是0.3纳秒,访问L1高速缓存的时间是1纳秒,访问L2高速缓存的时间是4纳秒… 秒…

Cmake学习

cmake大致 cmake_minimum_required(VERSION 3.0)project(test) #通过set自定义变量,通过${}取出 #set(SRC add.cpp main.cpp muti.cpp sub.cpp) #cmake搜索文件 宏定义PROJECT_SOURCE_DIR aux_source_directory(${PROJECT_SOURCE_DIR} SRC) #file(GLOB/GLOB_RECURSE…

Linux文件权限

R 代表可读 W 代表可写 X 代表可执行 文档类型有如下表示方法:   d - 目录,例如上表档名为『.gconf』的那一行; - - 文档,例如上表档名为『install.log』那一行; l - 链接档(link file); b …

带你快速掌握Linux最常用的命令(图文详解)- 最新版(面试笔试常考)

最常用的Linux指令(图文详解)- 最新版 ls:列出目录中的文件和子目录。(重点)cd:改变当前工作目录。绝对路径:相对路径 pwd:显示当前工作目录的路径。mkdir:创建一个新的目…

[Kettle] 字段处理

1.增加常量 常量是指在计算机程序运行过程中其值不能改变的量 常量可以是任何的数据类型,例如,圆周率"3.141159"、中国首都"北京"等都可以是常量 增加常量是指在数据中增加一个字段,并给字段设置一个固定的值 数据源…

java源码-工程讲解

1、 工程目录 源码工程目录讲解部分,讲解过程会让大家对后端源码工程有一个大致的了解,能让大家在此改造,就可以衍生出一些新的功能,需要对java技术深入了解,需要看后续java技术讲解部分 整个架构是一个spring-boot…

​软考-高级-系统架构设计师教程(清华第2版)【第16章 嵌入式系统架构设计理论与实践(P555~613)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第16章 嵌入式系统架构设计理论与实践(P555~613)-思维导图】 课本里章节里所有蓝色字体的思维导图