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最小化安装的镜像(阿里云的源应该可以找到)。
安装操作系统的过程这里不表,这里主要说明一下本人的习惯细节:
- 模板虚拟机命名为base
- CPU指定为4核心,2槽2核心1线程,内存为1024M
- 分配了10G的磁盘空间
- 自定义分区/boot 256M,其他给根分区,选择xfs文件系统
- 不要忘记设置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快速创建虚拟机使用。