龙空技术网

打造微服务与容器化的企业环境-虚拟化环境的建设

简简单单程序员 389

前言:

而今小伙伴们对“pythonkvm”都比较关注,姐妹们都想要知道一些“pythonkvm”的相关内容。那么小编同时在网摘上网罗了一些对于“pythonkvm””的相关知识,希望我们能喜欢,姐妹们一起来了解一下吧!

正如上文所述,我们在公司采用虚拟化技术的主要原因是备份方便、高扩展性以及资源隔离。虽然虚拟化技术可能会带来一定程度的性能损耗,但考虑到公司的业务需求和项目类型,这种损耗是可以接受的。接下来,我们将介绍如何在公司实施虚拟化系统。

首先,我们选择了KVM(Kernel-based Virtual Machine)作为虚拟化解决方案。KVM是基于Linux内核的开源虚拟化技术,具有优秀的性能和稳定性。此外,KVM对CentOS操作系统的支持非常友好,可以很好地满足我们的需求。

为了方便管理和操作KVM虚拟机,我们还选择了WebVirtMgr作为虚拟机管理工具。WebVirtMgr是一个基于Web的KVM虚拟机管理界面,提供了友好的图形界面,让我们可以轻松地创建、配置和管理虚拟机。

接下来,我们将简要介绍如何在CentOS上安装和配置KVM及WebVirtMgr。

安装KVM

在CentOS系统上安装KVM,首先需要确保服务器支持硬件虚拟化。可以通过以下命令检查:

bashCopy codegrep -E 'vmx|svm' /proc/cpuinfo

如果输出中包含vmx(Intel)或svm(AMD),则表示服务器支持硬件虚拟化。

接下来,执行以下命令安装KVM及相关组件:

Copy codesudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install

安装完成后,启动并使能libvirtd服务:

bashCopy codesudo systemctl start libvirtdsudo systemctl enable libvirtd
安装WebVirtMgr

首先,安装依赖包:

Copy codesudo yum install python-virtualenv git gcc python-devel libvirt-devel libxml2-devel libxslt-devel libffi-devel openssl-devel

接着,克隆WebVirtMgr源码并创建虚拟环境:

bashCopy codegit clone  webvirtmgrvirtualenv venv

进入虚拟环境并安装WebVirtMgr:

bashCopy codesource venv/bin/activatepip install -r requirements.txt

最后,启动WebVirtMgr服务:

bashCopy code./manage.py runserver 0.0.0.0:8000

至此,KVM和WebVirtMgr均已安装配置完成。通过浏览器访问服务器的8000端口,即可使用WebVirtMgr管理虚拟机。

通过以上步骤,我们成功地在公司实施了虚拟化系统。有了这套系统,我们可以更方便地进行系统备份、扩展资源以及实现资源隔离。在实际应用中,我们发现虚拟化系统为公司的业务发展带来了诸多好处。

接下来,我们将介绍如何使用WebVirtMgr创建和管理虚拟机,以满足不同业务需求。

创建虚拟机

登录WebVirtMgr后,点击左上角的“创建实例”按钮。在弹出的窗口中,填写虚拟机的名称、内存大小、CPU核心数等基本信息。此外,还可以选择虚拟机的磁盘大小、网络配置以及安装镜像。

点击“创建实例”后,WebVirtMgr将自动为我们创建虚拟机,并开始安装操作系统。在安装过程中,可以通过“控制台”选项卡查看虚拟机的实时状态。

管理虚拟机

在虚拟机创建完成后,我们可以通过WebVirtMgr对其进行各种操作,如启动、关闭、重启、挂起等。此外,还可以对虚拟机进行快照备份和恢复。

点击虚拟机名称进入详情页面,可以查看和编辑虚拟机的详细配置信息,如内存大小、CPU核心数、磁盘大小等。在需要时,可以根据业务需求对虚拟机的资源进行调整。

虚拟机迁移

当服务器资源不足或需要负载均衡时,我们可以将虚拟机迁移到其他服务器上。在WebVirtMgr中,只需点击虚拟机详情页面的“迁移”按钮,选择目标服务器,并点击“迁移实例”即可。

需要注意的是,为确保迁移过程中的数据一致性,建议在迁移前关闭虚拟机。

通过以上步骤,我们可以方便地在公司内部实施和管理虚拟化系统。有了虚拟化技术的支持,我们可以更灵活地应对各种业务场景,提高公司的运维效率和开发速度。在未来的工作中,我们将继续探索和应用虚拟化技术,为公司的发展提供更强大的技术支持。

接下是我们的虚拟化建设步骤

第一步创建模版系统,模版系统安装目录是/data/centos。模板系统中做好了以下几项工作:

磁盘挂载一下每个挂载点单独设置kvm磁盘文件。磁盘文件使用qcow2格式。此格式支持磁盘快照。

挂载点: / 大小100G

挂载点: /data 大小200G

挂载点: /var/lib/docker 大小60G

修改linux文件句柄限制

echo "* soft nofile 65535" >> /etc/security/limits.confecho "* hard nofile 65535" >> /etc/security/limits.confecho "* soft nproc 65535" >> /etc/security/limits.confecho "* hard nproc 65535" >> /etc/security/limits.confecho "fs.file-max = 65535" >> /etc/sysctl.conf
调整网络参数:编辑 /etc/sysctl.conf 文件并添加以下内容以优化网络性能
net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.ipv4.tcp_rmem = 4096 87380 16777216net.ipv4.tcp_wmem = 4096 65536 16777216net.ipv4.tcp_window_scaling = 1net.ipv4.tcp_timestamps = 1net.ipv4.tcp_sack = 1net.ipv4.tcp_no_metrics_save = 1net.core.netdev_max_backlog = 2500
修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens3 TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="none"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens3"UUID="da38f7ad-8276-4049-b3d1-70077715655c" DEVICE="ens3"ONBOOT="yes"# 需要修改{{IPADDR}}IPADDR="10.20.0.1"PREFIX="8"GATEWAY="10.0.0.1"IPV6_PRIVACY="no"
修改hostname
vi /etc/hostnamecentos
修改dns(路由器上也需要设置一般是在DHCP服务器设置中的DNS服务器改为我们的NAS地址)
vi /etc/resolv.confnameserver 10.10.20.22nameserver 223.5.5.5nameserver 223.6.6.6
yum修改为国内镜像
按照文档指示操作
安装docker
安装官网文档执行即可
docker加速
1. 注册阿里云账号2. 登录控制台3. 搜索容器镜像服务4. 在镜像加速器中找到CentOS命令
关闭虚拟机
# 在虚拟机内部执行shutdown
对虚拟机做快照
# 在宿主机上执行virsh list --all# 确认虚拟机关闭# 对虚拟机进行快照操作virsh snapshot-create-as {{虚拟机的名字}} {{快照的名字}} {{快照的备份}}

复制虚拟机

dell-1 服务器

k8s-work-1k8s-work-3k8s-work-5k8s-etcd-1k8s-control-1

dell-2 服务器

k8s-etcd-2 k8s-work-4k8s-work-6load-balancek8s-control-2k8s-work-2

联想服务器

k8s-control-3k8s-etcd-2rancher

复制建议通过脚本完成

# filename: kvm.xml.py#encoding=utf-8import sysif __name__ == '__main__':  file = sys.argv[1]  src = sys.argv[2]  tag = sys.argv[3]  body = "";  with open(file,'r') as f:    for line in f:      body = body + line.replace(src, tag)   with open(file,"w") as f:    f.write(body)
#!/bin/bash# filename: kvm.create.shpath=$1name=$2vcpu=$3memory=$[$4*1024*1024]mkdir -p $pathrsync --progress /data/centos/centos-root.qcow2 $path/$name-root.qcow2rsync --progress /data/centos/centos-docker.qcow2 $path/$name-docker.qcow2rsync --progress /data/centos/centos-data.qcow2 $path/$name-data.qcow2virsh dumpxml centos > $path/$name.xmlpython kvm.xml.py $path/$name.xml /data/centos/centos-root.qcow2 $path/$name-root.qcow2python kvm.xml.py $path/$name.xml /data/centos/centos-docker.qcow2 $path/$name-docker.qcow2python kvm.xml.py $path/$name.xml /data/centos/centos-data.qcow2 $path/$name-data.qcow2python kvm.xml.py $path/$name.xml "<name>centos</name>" "<name>$name</name>"python kvm.xml.py $path/$name.xml "<memory unit='KiB'>4194304</memory>" "<memory>$memory</memory>"python kvm.xml.py $path/$name.xml "<currentMemory unit='KiB'>4194304</currentMemory>" "<currentMemory unit='KiB'>$memory</currentMemory>"python kvm.xml.py $path/$name.xml "<vcpu placement='static'>4</vcpu>" "<vcpu placement='static'>$vcpu</vcpu>"python kvm.xml.py $path/$name.xml "<uuid>08a78d83-cadd-4220-8266-a04682390425</uuid>" ""python kvm.xml.py $path/$name.xml "<mac address='52:54:00:64:49:e9'/>" ""virsh define $path/$name.xml#virsh start $name

使用该脚本

#./kvm.create.sh /data/k8s/rancher rancher 2 4./kvm.create.sh /data/k8s/k8s-control-1 k8s-control-1 2 4./kvm.create.sh /data/k8s/k8s-control-2 k8s-control-2 2 4./kvm.create.sh /data/k8s/k8s-control-3 k8s-control-3 2 4./kvm.create.sh /data/k8s/k8s-etcd-1 k8s-etcd-1 2 4./kvm.create.sh /data/k8s/k8s-etcd-2 k8s-etcd-2 2 4./kvm.create.sh /data/k8s/k8s-etcd-3 k8s-etcd-3 2 4#./kvm.create.sh /data/k8s/k8s-work-1 k8s-work-1 8 64#./kvm.create.sh /data/k8s/k8s-work-2 k8s-work-2 8 64#./kvm.create.sh /data/k8s/k8s-work-3 k8s-work-3 8 64#./kvm.create.sh /data/k8s/k8s-work-4 k8s-work-4 8 64#./kvm.create.sh /data/k8s/k8s-work-5 k8s-work-5 8 64#./kvm.create.sh /data/k8s/k8s-work-6 k8s-work-6 8 64

启动虚拟机后的修改

vi /etc/hostname## 内容需要修改成虚拟机的名称vi /etc/sysconfig/network-scripts/ifcfg-ens3
对load-balance和ranchen的特殊配置

1. 建议直接使用物理机的网络接口

2.取消/data的挂载,并删除磁盘文件

原因是这两个系统会有大量的网络IO但是基本上不会在安装其他应用系统了。没必要保留/data目录。

安装rancher服务

建议使用2.5.x个人感觉2.5版本的界面比较容易理解。

或者去他的官网:

docker run -d \  --name rancher \  --restart=unless-stopped \  -p 80:80 -p 443:443 \  --privileged \  rancher/rancher:v2.5.9
通过rancher部署其他系统

标签: #pythonkvm