基于KVM和WebVirtCloud部署私有云的过程记录

网友投稿 640 2022-11-01

基于KVM和WebVirtCloud部署私有云的过程记录

KVM(Kernel-based Virtual Machine 的缩写)是一个 Linux 虚拟化应用程序,它使用户能够将他们的机器变成管理程序并在隔离的环境中运行多个虚拟机。

WebVirtCloud是一个供管理员和用户使用的虚拟化 Web 界面。它可以将虚拟机委托给用户。noVNC 查看器向来宾域提供完整的图形控制台。 KVM是目前唯一支持的管理程序。

本次是一台物理机服务器上部署KVM,然后在KVM虚拟机上WebVirtCloud对KVM进行管理。

物理机IP:192.168.*.71

虚拟机IP:192.168.*.70

Ps:以下部署方式在CentOS Stream 8、AnolisOS-8.4、openEuler -22.03通过测试。

一、部署KVM主机

1、服务器环境检测​

查看服务器及操作系统版本信息,WebVirtCloud只支持内内核4.0以上版本。

#uname -a

#uname -r

#cat /etc/redhat-release

Ps:openEuler用cat /etc/os-release

检查环境是否支持KVM

#cat /proc/cpuinfo | egrep "vmx|svm"

在输出中,查看标志列表。如果发现vmx(对于 Intel 处理器)或svm (对于 AMD),则系统支持硬件虚拟化。

2、部署KVM​

升级系统

#dnf -y update

查看是否加载KVM

#lsmod | grep kvm

关闭防火墙

#sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#systemctl disable --now firewalld

使用groupinstall一次性安装KVM虚拟化组件

#yum groupinstall "Virtualization Host"

安装libvirt

#yum install libgcrypt virt-install

启用libvirt

#systemctl start libvirtd-tcp.socket

#systemctl enable libvirtd-tcp.socket

#systemctl status libvirtd-tcp.socket

#systemctl start libvirtd

#systemctl enable libvirtd

#systemctl status libvirtd

查看版本信息

#virsh version

3、配置桥接网卡​

KVM虚拟机的网络配置有两种模式:桥接模式和NAT模式。NAT模式:即用户模式,数据包由NAT方式通过主机的接口进行传送,可以访问公网,但是无法从外部访问虚拟机网络,KVM部署时默认配置NAT网卡;。Bridge:即桥接模式,这种模式允许虚拟机像一个独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,需要单独配置。

查看网卡

#ip addr

查看当前网络连接

#nmcli connection

新建网桥,命名为:br0

# nmcli connection add type bridge con-name br0 ifname br0 autoconnect yes

查看新建网桥后连接信息

# nmcli connection

网桥br0桥接至网卡eno1

# nmcli connection add type bridge-slave ifname eno1 master br0

#cd /etc/sysconfig/network-scripts/

#ll

#cat ifcfg-bridge-slave-eno1

# cat ifcfg-br0

修改bro为静态IP:192.168.*.71

#vi ifcfg-br0

同时,修改eno1为的ip,不要冲突。

#vi ifcfg-eno1

查看当时网络信息,新建网桥未启用

# nmcli connection

重启操作系统

#reboot

# nmcli connection

查看当前网络信息,新建网桥已经可以使用了。

#ip addr

4、创建存储目录​

在KVM主机上创建虚拟机和ISO镜像存储目录,位置没有要求,本次安装,笔者是存在KVM主机的/home/kvmadmin/目录下。在kvmadmin目录下新建kvm、iso目录,kvm用于存储虚拟机安装文件,iso应存储镜像文件。

#mkdir /home/kvmadmin/kvm /home/kvmadmin/iso

修改权限:

#chmod 777 /home/kvmadmin

二、部署WebVirtCloud虚拟机

1、上传或者网上下载操作系统镜像​

上传或者下载操作系统镜像至iso,本次测试的镜像是CentOS-Stream-8-x86_64-latest-dvd1.iso,从清华大学源网上下载:

#wget -U NoSuchBrowser/1.0 -P /home/kvmadmin/iso create -f qcow2 /home/kvmadmin/kvm/WebVirtCloud.qcow2 200G

Ps:虚拟磁盘有raw和qcow2两种格式。raw相当于SSD硬盘,占用实际空间固定,支持虚拟化操作较少;qcow2相当于机械硬盘,占用空间随使用增长,支持虚拟化操作较。本次采用qcow2格式。

(2)安装操作系统

本次测试安装的centos-stream8操作系统:

#virt-install --name=WebVirtCloud --vcpus=8 --memory=4096 --disk=/home/kvmadmin/kvm/WebVirtCloud.qcow2 --cdrom=/home/kvmadmin/iso/CentOS-Stream-8-x86_64-latest-dvd1.iso --os-variant=centos-stream8 --noautoconsole --autostart --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5901

Ps:virt-install --name=安装名称,--vcpus=处理器核心个数, --memory=内存大小,--disk=磁盘位置,--os-variant 要安装到客户机中的操作系统,--noautoconsole 不自动连接控制-autostart,--network配置虚拟机网络接口,此处为桥接到br0,--graphics控制模式,listien=监听地址,port=监听端口。

VNC连接

操作系统的安装及配置,此处不讲解,虚拟机的ip地址为:192.168.*.70,并将主机名设为WebVirtCloud。

Ps:操作系统安装完成后,需要重启系统,但系统可能不会自动重启,需要手动去启动。

查看所有虚拟机列表

#virsh list –all

#virsh start WebVirtCloud

VNC登录

配置虚拟机IP地址为:192.168.*.70,主机名设为:WebVirtCloud。

Ps:virsh生命周期管理

关机指令

#virsh shutdown VMACHINE_NAME

断电指令

#virsh destroy VMACHINE_NAME

开机指令

#virsh start VMACHINE_NAME

重启指令

#virsh reboot VMACHINE_NAME

删除虚拟机

# virsh undefine VMACHINE_NAME

查看VNC端口

# virsh vncdisplay VMACHINE_NAME

三、部署WebVirtCloud

1、虚拟机环境检测​

登录WebVirtCloud虚拟机,并对操作系统进行升级:

#dnf -y update

部署WebVirtCloud,需要Ubuntu18.04/20.04,Debian10/11, Centos/OEL/RHEL 8环境。

#cat /etc/redhat-release

2、部署WebVirtCloud​

关闭防火墙

#sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#systemctl disable --now firewalld

安装epel源

#yum -y install epel-release

安装依赖环境

#yum -y install python3-virtualenv python3-devel libvirt-devel glibc gcc nginx supervisor python3-lxml git python3-libguestfs iproute-tc cyrus-sasl-md5 python3-libguestfs

克隆webvirtcloud仓库

#cd /srv &&git clone && cd webvirtcloud

#pip3 install -i pip -U

#pip config set global.index-url install -U setuptools virtualenv

创建虚拟环境

#cp webvirtcloud/settings.py.template webvirtcloud/settings.py

#virtualenv -p $(which python3) /srv/envs/webvirtcloud

激活python虚拟机

#source /srv/envs/webvirtcloud/bin/activate

随机生成字符串

#python /srv/webvirtcloud/conf/runit/secret_generator.py

添加到SECRET_KEY中

#vi /srv/webvirtcloud/webvirtcloud/settings.py

安装第三方仓库

#cd /srv/webvirtcloud/&&pip install -r conf/requirements.txt

迁移数据

#python manage.py makemigrations

#python manage.py migrate

编辑supervisord(后端应用作为supervisord子进程管理)

#vi /etc/supervisord.d/webvirtcloud.ini

[program:webvirtcloud]

command=/srv/envs/webvirtcloud/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py

directory=/srv/webvirtcloud

user=root

autostart=true

autorestart=true

redirect_stderr=true

[program:novncd]

command=/srv/envs/webvirtcloud/bin/python /srv/webvirtcloud/console/novncd

directory=/srv/webvirtcloud

user=root

autostart=true

autorestart=true

redirect_stderr=true

添加网站目录权限

#chown -R nginx:nginx /srv/webvirtcloud

supervisord服务操作

#systemctl enable --now supervisord

#supervisorctl reload

#supervisorctl update

#supervisorctl restart all

将配置拷贝到nginx目录中

#cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/

配置nginx.conf

#vi /etc/nginx/nginx.conf

注释默认虚拟机

设置nginx开机启动:

systemctl enable nginx

重启操作系统

#reboot

浏览器访问:​​-t rsa

(连续三次回车,即在本地生成了公钥和私钥,不设置密码,默认存储在 ~/.ssh目录下)

关闭公钥检查

#cat > ~/.ssh/config << EOF

Host *

StrictHostKeyChecking no

EOF

修改权限

#chmod 600 ~/.ssh/config

(2)推送公钥

将生成的公钥推送到KVM主机。

#ssh-copy-id root@192.168.*.71

验证:

#ssh root@192.168.*.71

(3)添加计算节点

浏览器登录WebVirtCloud:http://192.168.*.70

计算节点->ssh

填写节点名称、IP、登录用户等信息,然后保存

显示已连接

2、创建存储目录​

新建存储:存储->“+”图标:

创建文件目录:

创建ISO镜像目录:

3、虚拟机实例实例管理​

(1)创建实例

创建虚拟机实例

默认即可

本次测试选media模板。

Ps:可以自定义和新建模板。

创建虚拟机

(2)调整配置及操作系统安装

调整配置:可调整磁盘大小、内存大小、CPU数量。

快照:可以创建快照、管理快照

设置:可配置启动(自动启动、启动顺序)、磁盘、控制台、网络、克隆、迁移、用户等。

为虚拟机实例增加网络

添加完成后,是2个网卡,如下图:

挂在操作系统镜像:

挂在完成,如下图:

开启虚拟机实例

控制台

系统安装就赘述了。

(3)查看虚拟机状态

(4)删除虚拟机

4、用户管理​

(1)用户组管理

添加用户组

可对用户组进行编辑和删除

(2)管理用户

添加用户

可对用户进行编辑和删除

(3)给用户分配虚拟机实例

test登录,即可看到拥有的虚拟机实例:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot 整合sentinel的示例代码
下一篇:把自己commit后的docker镜像上传到阿里云并拉取测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~