基于“c/s”模式的kvm部署

在网上找了些关于kvm部署资料,发现大部分都是单台主机安装kvm,然后在本机直接创建管理虚拟机。其实需要部署虚拟化环境的往往是服务器,并且都没有安装桌面环境,KVM安装后通过客户端进行远程管理,就像vm的exsi一样,所以决定整理一份c/s模式的安装部署资料。

  • 服务器端安装kvm

  • 系统信息

操作系统:CentOS Linux release 7.9.2009

CPU: Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz

内存:32G

硬盘:4T

  • 安装KIM
yum install qemu-kvm libvirt libvirt-devel libvirt-client virt-install virt-viewer bridge-utils -y
  •  配置libvirt服务

# vi /etc/libvirt/libvirtd.conf

listen_tls=0
listen_tcp=1
auth_tcp="none"
LIBVIRTD_ARGS="--listen"

修改配置文件以上内容,如果没有手动添加。LIBVIRTD_ARGS="--listen"这项很重要,如果没有配置服务启动后并不会监听端口。 

  • 配置服务开机自启

# systemctl enable --now libvirtd

  • 为虚拟机创建桥接网络

   

nmcli con add type bridge ifname br0 con-name br0 autoconnect yes
##创建桥接网络
nmcli con mod br0 ipv4.addresses 192.168.10.17/24 ipv4.gateway 192.168.10.254 
##给网桥设置固定ip
nmcli con modify eno1 connection.autoconnect no
##关闭默认网卡自动连接
nmcli con add type bridge-slave ifname eno1 master br0
##将物理网卡接入到桥接网络中
systemctl restart NetworkManager
##重启网络服务
nmcli dev reapply eno1
##重新加载eno1配置
firewall-cmd --add-masquerade --permanent
##开启防火墙ip转发功能,这个非常重要,如果没有开启ip转发,虚拟机与主机可以ping通,但主机使用ssh连接或者访问虚拟机指定端口都会显示"No route to host"的错误。
firewall-cmd --reload
##重载防火墙配置
##如果防火墙服务没有开启,必需在系统配置中开启ip转发
vi /etc/sysctl.conf
##添加以下内容
net.ipv4.ip_forward = 1
##立即生效
sysctl -p


以上将关闭网卡eno1的连接,br0被重新设定新ip,如果服务器只有这一张网卡,通过客户端的ssh连接到服务器将会被断开,需要重新连接。                                                  


  • 客户端安装kvm管理软件

  • 系统信息
PRETTY_NAME="Ubuntu 22.04.4 LTS"
  • 安装kvm客户端管理软件

apt install virt-manager

  • 使用virt-manager连接服务器的kvm

如果kvm连接使用ssh协议并通过密码登陆,需要首先安装ssh-askpass

apt install ssh-askpass

打开virt-manager--添加连接

建议使用ssh-key进行验证,添加连接时选择自定义连接,输入自定义url,如

qemu+ssh://root@192.168.10.17/system?keyfile=/home/drs/.ssh/kpy_rsa

  • 创建虚拟机

将系统镜像文件上传到服务器/var/lib/libvirt/images目录下,双击virt-manager中创建的连接,新建虚拟机按向导配置完成虚拟机创建

网络选择之前创建的桥接设备‘br0’,最好勾选“在安装前自定义配置”,这样可以在启动虚拟机前先对虚拟机配置进行调整,因为默认配置不会配置光驱引导,不会配置显示协议,造成启动虚拟机后双击无法进入虚拟机控制台,总是运行ssh-askpass提示输入密码,密码输入正确仍然无法进入控制台。

修改虚拟机配置

引导选项--勾选“IDE-CDROM1”

IDE-CDROM1--选择服务器上传的iso文件

显示协议配置如下

“地址”这一项一定要“所有接口”否则服务端不会有显示协议监听,双击虚拟机提示输入密码且无法打开控制台。如果服务器开启了防火墙,请开放5900/tcp端口。


  • 遇到的路由知识补充

当服务器有2张网卡,1张用于本地连接1张用于kvm虚拟网桥,且希望虚拟网桥与本地连接都使用同一网段,会生成2条相同路由,造成路由冲突,客户端ping服务器的2个ip都没有延时,但使用ssh连接时非常慢。

使用ip route查看产生这一现像的服务器路由表如下:

192.168.10.0/24 dev eno1 proto kernel scope link src 192.168.10.7 metric 102

192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.17 metric 425

原因分析:

路由中metric的值会影响节点之间路径的成本、质量或优先级,值越大路由计算成本延时越高,2条同样路由会造成数据包选择通讯接口时产生不确定性,影响网络性能,造成较大网络延时。

解决办法:

调整br0的metric值为100

nmcli con mod br0 ipv4.route-metric 100
nmcli dev reapply br0

调整后重新使用ssh连接马上就能连上了。

  •  疑问:

metric影响ssh连接,可对http请求似乎没有影响,有大神路过欢迎指点。


  • 针对服务器有多张网卡的情况,最好将多张网卡进行bond,然后再加入到桥接网络,再提供给kvm使用,这可避免路由冲突,并提网络可靠性。
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup miimon 100 primary eno1 connection.master bridge0 connection.slave-type bridge
nmcli con add type bond-slave con-name bond0-eno1 ifname eno1 master bond0
nmcli con add type bond-slave con-name bond0-eno2 ifname eno2 master bond0

我这使用的是主备模式bond,可根据实际需要修改模式。将bond接入到bridge后,bond手动配置的ip地址等信息被自动复盖,需要固定ip可以在bridge中进行配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值