云平台管理
详细实现
创建如下目录结构
在maven的pom.xml添加依赖
运行之前。打开virsh 使用命令“virsh list --all”或virt-manger查看虚拟机状态
此时web浏览器端没有虚拟机信息
我们在virt-manager下手动创建一个demo虚拟机
现在切换到浏览器段查看
首先我们对创建的虚拟机进行管理,可以看出,我们的操作有删除,挂起,重启,启动,关机
首先进行挂起
在进行启动
然后进行重启
最后进行关机,但是关机之后在web端就不显示此虚拟机了,只有打开后可以看到管理操作。
最后的最后演示删除操作
接下来演示在web段创建虚拟机实例
我们只需要更改以创建成功的虚拟机.xml文件
以下面为例
我们只需要更改name,和uuid属性。
演示存储池管理
新增存储池有缺陷,目前还未解决
演示网络部分
需求分析
用户通过web方式管理虚拟机,可以对虚拟机进行添加,挂起,恢复,删除,启动,关机。可以实时的看到虚拟机的信息。查看宿主机的的信息。以及操作对存储池的管理还有网络的管理。
系统实现
云平台管理系统是对虚拟机进行管理和操作,该系统采用Libvirt Java API 进行分析和设计,使用编程语言java作为开发语言,使用IDEA作为开发平台,通过springboot框架+thmleaf模板引擎展示给用户,能够实现很好的交互页面。使用的前端的请求交给后端controller层来处理。在通过controller调用service层处理。对虚拟机的启动,重启,正常关机,强制关机,挂起,唤醒挂起的虚拟机,保存当前虚拟机状态,读取已保存的虚拟机,也可以实现对当前运行的虚拟机状态的打印输出,还可以实现对网络的启动和关闭。
-
连接
public class Libvirt {
private Connect connect;
?
public Connect getConnect() {
return connect;
}
?
public Libvirt() throws LibvirtException {
connect = new Connect("qemu:///system",false);
}
}
-
宿主机信息列表
/*
宿主机信息列表
*/
?
-
存储池信息列表
3、/*
存储池信息列表
*/
-
网络信息列表
4、/*
网络信息列表
*/
-
虚拟机信息列表
/*
虚拟机信息列表
*/
-
添加存储池
?
/*
添加存储池
*/
-
删除存储池
/*
删除存储池
*/
-
通过xml添加虚拟机
/*
通过xml添加虚拟机
*/
-
暂停/挂起虚拟机
/*
暂停/挂起虚拟机
*/
-
还原暂停/挂起虚拟机
/*
还原暂停/挂起虚拟机
*/
-
关闭虚拟机
*/
?
public void shutdownDomain(String name) throws LibvirtException {
Domain domain = libvirt.getConnect().domainLookupByName(name);
domain.shutdown();
}
-
删除虚拟机
/*
删除虚拟机
*/
-
重启虚拟机
/*
重启虚拟机
*/
-
为虚拟机添加网络
/*
为虚拟机添加网络
*/
环境搭建
jdk环境及idea的安装及maven的安装与配置
环境信息: OS:Ubuntu18.04 JDK:8
JDK的
-
解压缩,放到指定目录(以jdk-8u333-linux-x64.tar.gz为例)
目标不存在需要先创建目录,我这里是放在/opt目录下: sudo mkdir /opt/java8
目录创建成功后解压缩到该目录:
```shell
sudo tar -zxvf jdk-8u333-linux-x64.tar.gz -C /opt/java8
```
或者先移动到该目录,进入到源目录下执行以下命令:
```shell
sudo mv jdk-8u333-linux-x64.tar.gz /opt/java8
```
然后进入到目标目录下进行解压缩sudo tar -zxvf jdk-8u333-linux-x64.tar.gz
注意:这里一定要加sudo,否则你的用户角色不一定有权限 3.使用vim修改环境变量:
使用vim打开环境变了文件 sudo vim ~/.bashrc
vim安装成功后接下来继续打开文件进行编辑,在末尾先输入一个I,进入写入模式,追加下面内容:
#set oracle jdk environment ## 这里JAVA_HOME要注意目录要换成自己解压的jdk 目录
export JAVA_HOME=/opt/java8/jdk1.8.0_333
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
编辑结束用:wq进行保存退出,如果是在编辑过程中放弃编辑可以按Esc键,接下来使环境变量马上生效
命令: source ~/.bashrc
4.设置系统默认jdk 版本(如果系统中只有一个JDK,也可以不做此操作)
sudo update-alternatives --install /usr/bin/java java /opt/java8/jdk1.8.0_151/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /opt/java8/jdk1.8.0_151/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /opt/java8/jdk1.8.0_151/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /opt/java8/jdk1.8.0_151/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /opt/java8/jdk1.8.0_151/bin/javap 300
然后执行:
sudo update-alternatives --config java
说明: 若是初次安装jdk,会有下面的提示 There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/jdk1.8.0_151/bin/java 意思是链接组 java (提供 /usr/bin/java)中只有一个候选项:/opt/java8/jdk1.8.0_151/bin/java 无需配置。 如果不是提示这个,请选择合适的jdk,或者是一些别的问题
5.测试jdk,输入命令 java -version 显示结果如下说明JDK安装配置成功 java version "1.8.0_333" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
安装IDEA
安装maven前首先确保你安装了JDK
jdk安装位置及设置: 前往oracle官网下载jdk,我将下载后的jdk放在了/root/ENVIRMENT目录下
进入到
/root/ENVIRMENT/apache-maven-3.8.5/conf
编辑setting.xml
<?xml version="1.0" encoding="UTF-8"?>
?
?
xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
?
?
?
?
?
?
?
maven-default-http-blocker
external:http:*
Pseudo repository to mirror external repositories initially using HTTP.
http://0.0.0.0/
true
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
?
?
?
?
设置MAVEN_HOME
$sudo gedit ~/.bashrc
#set maven environment
MAVEN_HOME=/root/ENVIRMENT/apache-maven-3.8.5
PATH=$PATH:$MAVEN_HOME/bin
由于此次编辑的为~/.bashrc,不用重启电脑,使用ctrl+alt+t在重新打开一个交互式shell上述配置即可生效。 注意在原有shell中该配置不会生效。 最后运行mvn -v
检查你的安装配置是否成功
maven阿里云镜像在setting.xml上面已配置
?
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central