KVM Cloud云平台

news2024/12/22 23:09:57

项目介绍

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端时间同步

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。 主要功能: 系统运行…

Web之CSS笔记

Web之HTML、CSS、JS 二、CSS(Cascading Style Sheets层叠样式表)CSS与HTML的结合方式CSS选择器CSS基本属性CSS伪类DIVCSS轮廓CSS边框盒子模型CSS定位 Web之HTML笔记 二、CSS(Cascading Style Sheets层叠样式表) Css是种格式化网…

3D建模基础教程:可编辑多边形建模的基础认识

可编辑多边形建模是3D建模中的一种常见方法,它允许用户对模型进行细致的调整和编辑。以下是对可编辑多边形建模的详细介绍: 1、层级概念:在可编辑多边形建模中,有五个层级,分别是点层级、边层级、边界层级、面层级和元…

2023年亚太杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

[内存泄漏][PyTorch](create_graph=True)

PyTorch保存计算图导致内存泄漏 1. 内存泄漏定义2. 问题发现背景3. pytorch中关于这个问题的讨论 1. 内存泄漏定义 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致…

蓝桥杯每日一题2023.11.18

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用搜索,将每一个格子进行初始赋值方便确定是否为相邻的数,将空出的两个格子首先当作已经填好数值为100,此时从第一个格子右边的格子开始搜索&#xff…

vscode编写verilog的插件【对齐、自动生成testbench文件】

vscode编写verilog的插件: 插件名称:verilog_testbench,用于自动生成激励文件 安装教程:基于VS Code的Testbench文件自动生成方法——基于VS Code的Verilog编写环境搭建SP_哔哩哔哩_bilibili 优化的方法:https://blog.csdn.net…

ROSCon 2023 大会回顾

系列文章目录 文章目录 系列文章目录前言一、会议内容二、其他活动 前言 我们与 ROSCon 2023 全体 700 多名与会者的合影。 视频回放链接 一、会议内容 ROSCon 2023 是我们第十二届年度 ROS 开发者大会,于 2023 年 10 月 18 日至 20 日在路易斯安那州新奥尔良举行。…

字符串函数详解

一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论&#xff1a; 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…

ThinkPHP 系列漏洞

目录 2、thinkphp5 sql注入2 3、thinkphp5 sql注入3 4、 thinkphp5 SQL注入4 5、 thinkphp5 sql注入5 6、 thinkphp5 sql注入6 7、thinkphp5 文件包含漏洞 8、ThinkPHP5 RCE 1 9、ThinkPHP5 RCE 2 10、ThinkPHP5 rce3 11、ThinkPHP 5.0.X 反序列化漏洞 12、ThinkPHP…

anaconda安装依赖报错ERROR: Cannot unpack file C:\Users\33659\AppData\Loca...|问题记录

执行命令&#xff1a; # 安装matplotlib依赖 pip install matplotlib-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com出现问题&#xff1a; ERROR: Cannot unpack file C:\Users\33659\AppData\Local\Temp\pip-unpack-0au_blfq\simple (downloa…

U-boot(二):主Makefile

本文主要探讨210的主Makefile。 Makefile uboot版本号&#xff1a; VERSION&#xff1a;主板本号 PATCHLEVEL&#xff1a;次版本号 SUBLEVEL&#xff1a;再次版本号 EXTRAVERSION:附加信息 VERSION 1 PATC…

二元分类模型评估方法

文章目录 前言一、混淆矩阵二、准确率三、精确率&召回率四、F1分数五、ROC 曲线六、AUC&#xff08;曲线下面积&#xff09;七、P-R曲线类别不平衡问题中如何选择PR与ROC 八、 Python 实现代码混淆矩阵、命中率、覆盖率、F1值ROC曲线、AUC面积 指标 公式 意义 真正例 (TP)被…

无需API开发,伯俊科技实现电商与客服系统的无缝集成

伯俊科技的无代码开发实现系统连接 自1999年成立以来&#xff0c;伯俊科技一直致力于为企业提供全渠道一盘货的服务。凭借其24年的深耕零售行业的经验&#xff0c;伯俊科技推出了一种无需API开发的方法&#xff0c;实现电商系统和客服系统的连接与集成。这种无代码开发的方式不…

java的包装类

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 1. 包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了 一个包装类型。 若想了解…

MySQL用逗号分割的id怎么实现in (逗号分割的id字符串)。find_in_set(`id`, ‘1,2,3‘) 函数

1.MySQL 1.1.正确写法 select * from student where find_in_set(s_id, 1,2,3); 1.2.错误示范 select * from student where find_in_set(s_id, 1,2 ,3); -- 注意&#xff0c;中间不能有空格。1、3 select * from student where find_in_set(s_id, 1,2, 3); -- 注意…

sqli-labs关卡19(基于http头部报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第十九关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚…

IDEA创建文件添加作者及时间信息

前言 当使用IDEA进行软件开发时&#xff0c;经常需要在代码文件中添加作者和时间信息&#xff0c;以便更好地维护和管理代码。 但是如果每次都手动编辑 以及修改那就有点浪费时间了。 实践 其实我们可以将注释日期 作者 配置到 模板中 同时配置上动态获取内容 例如时间 这样…

【MyBatisPlus】快速入门

文章目录 1. 简单使用2. 条件构造器 —— 针对于复杂查询3. 自定义SQL4. IService4.1 基本接口方法4.1.1 新增4.1.2 删除4.1.3 修改4.1.4 查找 4.2 开发基础业务接口4.3 开发复杂业务接口4.4 Lambda方法4.5 批量新增 5. 代码生成6. 分页功能6.1 分页插件基本使用6.1 通用分页实…