Deepin_kvm虚拟机群部署

Posted liwanliangblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deepin_kvm虚拟机群部署相关的知识,希望对你有一定的参考价值。

1. 概述

本篇博客主要讲述在Deepin系统上使用KVM虚拟化环境部署虚拟化集群来完成个人的运维实践平台项目:Promethues。

之前是在win10系统下使用vmware workstation作为虚拟化平台,暂时搁浅...

2. kvm虚拟化环境

2.1 安装kvm依赖环境

Deepin上安装kvm环境很简单,命令行执行:
sudo apt-get install qemu qemu-kvm virt-manager ,libvirtd服务会自动启动和开机启动。

2.1 配置虚拟化网络

与win10平台使用vmware workstation来完成该项目不同的是,Deepin系统上使用libvirtd提供的虚拟化服务时,需要使用其提供的nat网络。
默认的虚拟网络类型已经是nat模式,叫做default。default是不随着libvirtd服务启动的,执行命令:
virsh net-auotstart default,设置default随着libvirtd服务启动。libvirtd服务同时提供了dnsmasq的轻量级DHCP和DNS服务。

本篇博客仅仅使用其DHCP服务,通过给虚拟机分配固定的MAC地址来实现固定IP的目的。

具体操作如下:

2.1.1 修改default.xml

一般不建议直接修改该文件,但是你修改这个文件,也不一定会有什么问题。
Deepin系统上,使用终端切换到root用户。

编辑配置文件:vim /etc/libvirt/qemu/networks/autostart/default.xml
修改内容如下:

	<mac address=‘00:00:00:80:00:01‘/>
	<ip address=‘192.168.80.1‘ netmask=‘255.255.255.0‘/>
	<dhcp>
	  <rang start=‘192.168.80.11‘ end=‘192.168.80.99‘>
	  <host mac=‘00:00:00:80:00:11‘ ip=‘192.168.80.11‘ name=‘node11‘/>
	  <host mac=‘00:00:00:80:00:12‘ ip=‘192.168.80.12‘ name=‘node12‘/>
	  <host mac=‘00:00:00:80:00:13‘ ip=‘192.168.80.13‘ name=‘node13‘/>
			....这里省略...
	  <host mac=‘00:00:00:80:00:99‘ ip=‘192.168.80.99‘ name=‘node99‘/>
	</dhcp>

本人在修改该配置文件时,使用了for循环批量生产了配置,然后通过vim粘贴进去。

修改了default.xml之后,需要执行systemctl restart libvirtd生效

上述的过程完成之后,就可以为虚拟机固定IP打下第一个基础了。

2.1.2 创建模板虚拟机

通过virt-manager创建一个模板虚拟机。

注:如果不适用virt-manager来安装,可以用命令行virt-install命令指定参数安装,本篇博客先跳过此部分内容。

本人选择的是centos7最小化安装的镜像(阿里云的源应该可以找到)。
安装操作系统的过程这里不表,这里主要说明一下本人的习惯细节:

  1. 模板虚拟机命名为base
  2. CPU指定为4核心,2槽2核心1线程,内存为1024M
  3. 分配了10G的磁盘空间
  4. 自定义分区/boot 256M,其他给根分区,选择xfs文件系统
  5. 不要忘记设置root密码

一顿操作之后,模板虚拟机base出炉。

3. 初始化模板虚拟机

Deepin终端执行virsh start base,将模板虚拟机开机之后,ssh base即可输入密码登录虚拟机(我的base也是node99,/etc/hosts里面一个IP可以对应多个主机名)

注:deepin终端执行for i in ((seq 11 99);do echo "192.168.80.)i node$i" >> /etc/hosts; done

然后将初始化脚步run_me拷贝到base节点上并执行。

我的run_me初始化脚本内容如下:


#!/bin/bash

#安装依赖
yum -y install 	epel-release 
yum repolist 

yum -y install 	vim net-tools lsof wget tree psmisc pciutils	gcc gcc-c++ automake autoconf 	strace dstat nmap tcpdump 	nfs-utils sssd 	openldap openldap-servers openldap-clients compat-openldap openldap-devel openldap-servers-sql 
yum -y install atop htop mytop 

#关闭服务
systemctl disable firewalld
systemctl disable postfix

#禁用selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config

#修改ssh服务
sed -i ‘s/#UseDNS yes/UseDNS no/g‘ /etc/ssh/sshd_config
sed -i ‘s/#PrintLastLog yes/PrintLastLog no/g‘ /etc/ssh/sshd_config

echo "        StrictHostKeyChecking no" >> /etc/ssh/ssh_config
echo "        UserKnownhostsFile /dev/null" >> /etc/ssh/ssh_config
echo "        LogLevel quiet" >> /etc/ssh/ssh_config

#创建host
for i in $(seq 11 99)
do
	echo "192.168.80.$i    node$i" >> /etc/hosts
done

#生成秘钥
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys

#修改启动选项,不延迟,禁用ipv6
sed -i ‘s/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/g‘ /etc/default/grub
sed -i ‘s/quiet/quiet ipv6.disable=1/g‘ /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

#启用virsh console登录虚拟机
systemctl enable serial-getty@ttyS0.service

完成上面的操作,模板虚拟机base就可以关机了,作为以后要创建的虚拟机的模板备用。
此后便可以通过virt-clone快速创建虚拟机使用。

以上是关于Deepin_kvm虚拟机群部署的主要内容,如果未能解决你的问题,请参考以下文章

FlockingPPO无人机群控制算法基于Flocking和PPO深度强化学习的无人机群控制算法的MATLAB仿真

如何与多个用户环境中运行的PBS

一文读懂百度PaddlePaddle EDL技术

导致资产预编译在heroku部署上失败的代码片段

分布式爬虫

官网性能应用待机群组