1 基础环境规划

1.1 主机环境规划

系统版本

主机名

IP地址

内存

磁盘

CentOS6.9

kvm-node1

10.0.0.200

2G

20G

CentOS6.9

kvm-node2

10.0.0.201

2G

20G

CentOS6.9

kvm-manager

10.0.0.210

2G

20G

CentOS6.9

nfs01

10.0.0.31

2G

20G

1.2 Linux系统基础优化

#更改主机名

[root@kvm-node1 ~]# hostname

kvm-node1

#查看系统内核版本

[root@kvm-node1 ~]# uname -r

2.6.32-696.el6.x86_64

#查看selinux状态

[root@kvm-node1 ~]# getenforce

Disabled

#查看防火墙iptables状态

[root@kvm-node1 ~]# /etc/init.d/iptables status

iptables: Firewall is not running.

#查看本地hosts解析

[root@kvm-node1 ~]# cat /etc/hosts

10.0.0.200 kvm-node1

10.0.0.201 kvm-node2

10.0.0.210 kvm-manager

10.0.0.31 nfs01

1.3 检查虚拟化支持是否开启

#执行以下命令输出结果中包好vmx则表示已经开启,没有任何输出则表示没有启用

[root@kvm-node1 ~]# grep -E 'vmx|svm' /proc/cpuinfo

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat xsaveopt pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid rdseed adx

#VMware Workstation虚拟机开启虚拟化支持方法如下:

1.4 安装KVM虚拟化软件

#KVM虚拟化组件说明

Ø qemu虚拟化软件,可以虚拟不同的IO设备,如网卡、声卡、显卡等

Ø libvirt 用于管理kvm虚拟机的工具

Ø virt-install 命令行安装虚拟机工具

Ø virt-manager 图形化管理虚拟机工具

Ø openssh-askpass 远程连接kvm主机

#KVM软件安装命令

[root@kvm-node1 ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install openssh-askpass -y

# kvm是linux内核的一个模块,验证KVM模块是否加载到linux内核

[root@kvm-node1 ~]# lsmod | grep kvm

kvm_intel 55432 0

kvm 346318 1 kvm_intel

1.5 启动libvirtd服务并添加开机自启动

[root@kvm-node1 ~]# /etc/init.d/libvirtd start

Starting libvirtd daemon:

[root@kvm-node1 ~]# /etc/init.d/libvirtd status

libvirtd (pid 1649) is running...

[root@kvm-node1 ~]# chkconfig --list libvirtd

libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

1.6 开启ipv4路由转发(NAT模式必选,网桥模式略过)

#修改/etc/sysctl.conf配置文件net.ipv4.ip_forward = 1

[root@kvm-node1 ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf

#更改linux内核使其立即生效

[root@kvm-node1 ~]# sysctl -p /etc/sysctl.conf

net.ipv4.ip_forward = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

1.7 配置网络(网桥模式生产环境)

# 修改网卡配置文件NM_CONTROLLED=no,使其不受NetworkManager控制

[root@kvm-node1 ~]# sed -i 's#NM_CONTROLLED=yes#NM_CONTROLLED=no#g' /etc/sysconfig/network-scripts/ifcfg-eth0

[root@kvm-node1 ~]# sed -i 's#NM_CONTROLLED=yes#NM_CONTROLLED=no#g' /etc/sysconfig/network-scripts/ifcfg-eth1

#创建br0网桥配置文件,并设置网卡eth0桥接到网桥br0上

[root@kvm-node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=no

BRIDGE=br0

[root@kvm-node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

IPADDR=10.0.0.200

NETMASK=255.255.255.0

GATEWAY=10.0.0.1

DNS1=114.114.114.114

DNS2=223.5.5.5

[root@kvm-node1 ~]# /etc/init.d/network restart

1.8 查看网桥br0配置完成后的网络信息

[root@kvm-node1 ~]# ifconfig

br0 Link encap:Ethernet HWaddr 00:0C:29:E2:34:26

inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fee2:3426/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:224 errors:0 dropped:0 overruns:0 frame:0

TX packets:143 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:17610 (17.1 KiB) TX bytes:27692 (27.0 KiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:E2:34:26

inet6 addr: fe80::20c:29ff:fee2:3426/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:31570 errors:0 dropped:0 overruns:0 frame:0

TX packets:18074 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:40885315 (38.9 MiB) TX bytes:1455107 (1.3 MiB)

eth1 Link encap:Ethernet HWaddr 00:0C:29:E2:34:30

inet addr:172.16.1.200 Bcast:172.16.1.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fee2:3430/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:3 errors:0 dropped:0 overruns:0 frame:0

TX packets:48 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:180 (180.0 b) TX bytes:3312 (3.2 KiB)

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

virbr0 Link encap:Ethernet HWaddr 52:54:00:80:89:7B

inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

1.9 显示当前系统网桥信息

[root@kvm-node1 ~]# brctl show

bridge name bridge id STP enabled interfaces

br0 8000.000c29e23426 no eth0

virbr0 8000.52540080897b yes virbr0-nic

2 NFS存储挂载

2.1 安装NFS、rpcbind服务

[root@kvm-node1 ~]# rpm -qa nfs-utils rpcbind

rpcbind-0.2.0-16.el6.x86_64

nfs-utils-1.2.3-78.el6.x86_64

[root@kvm-node1 ~]# yum install nfs-utils rpcbind -y

2.2 启动rpcbind服务并添加开机自启动

[root@kvm-node1 ~]# /etc/init.d/rpcbind start

Starting rpcbind: [ OK ]

[root@kvm-node1 ~]# chkconfig rpcbind on

2.3 打印rpc信息

[root@kvm-node1 ~]# rpcinfo -p localhost

program vers proto port service

100000 4 tcp 111 portmapper

100000 3 tcp 111 portmapper

100000 2 tcp 111 portmapper

100000 4 udp 111 portmapper

100000 3 udp 111 portmapper

100000 2 udp 111 portmapper

2.4 挂载NFS共享目录

#显示NFS服务器上的挂载信息

[root@kvm-node1 ~]# showmount -e 10.0.0.31

Export list for 10.0.0.31:

/mirror 10.0.0.0/24

/images 10.0.0.0/24

#创建相应的挂载目录

[root@kvm-node1 ~]# mkdir /mirror

[root@kvm-node1 ~]# mkdir /images

#执行挂载命令

[root@kvm-node1 ~]# mount -t nfs 10.0.0.31:/mirror /mirror/

[root@kvm-node1 ~]# mount -t nfs 10.0.0.31:/images /images/

#显示当前系统挂载信息

[root@kvm-node1 ~]# df -h | grep -E "mirror|images"

10.0.0.31:/mirror 18G 7.1G 9.2G 44% /mirror

10.0.0.31:/images 18G 7.1G 9.2G 44% /images

#设置nfs网络文件系统开机自动挂载

[root@kvm-node1 ~]# echo "#share system mirror by wolf_dreams at 2018-8-01" >> /etc/rc.d/rc.local

[root@kvm-node1 ~]# echo "mount -t nfs 10.0.0.31:/mirror /mirror/" >> /etc/rc.d/rc.local

[root@kvm-node1 ~]# echo "mount -t nfs 10.0.0.31:/images /images/" >> /etc/rc.d/rc.local

#验证/etc/rc.d/rc.local文件中nfs挂载是否写入成功

[root@kvm-node1 ~]# tail -2 /etc/rc.d/rc.local

mount -t nfs 10.0.0.31:/mirror /mirror/

mount -t nfs 10.0.0.31:/images /images/

3 创建kvm虚拟机

3.1 创建虚拟机磁盘

#kvm虚拟机的磁盘格式支持两种raw(固定大小)、qcow2(精简模式)

[root@kvm-node1 ~]# qemu-img create -f qcow2 /images/VM-Centos.img 5G

Formatting '/images/VM-Centos.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536

3.2 创建虚拟机实例

#参数说明

--virt-type:指定虚拟机类型(kvm、qemu、xen)

--os-type:指定虚拟机操作系统类型(linux、windows)

--name:指定虚拟机名称

--raw:指定虚拟机使用内存大小

--cpu:指定cpu的核数(默认为1)

--cdrom:指定虚拟机安装的ISO镜像

--disk:指定虚拟机数据存储磁盘格式(raw、qcow2)、存放位置、大小、磁盘接口类型等

--network:指定虚拟机网络类型, 默认nat,生产环境常用bridge

--graphics:指定虚拟机可连接方式, 比如VNC、监听IP、VNC连接端口等

--noautoconsole:不连接虚拟机图形界面控制台

#操作命令

[root@kvm-node1 ~]# virt-install --name VM-Centos --os-type=linux --virt-type kvm --ram 1024 --cdrom=/mirror/CentOS-6.9-x86_64-bin-DVD1.iso --disk path=/images/VM-Centos.img,format=qcow2,size=5,bus=scsi --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5901 --noautoconsole

Starting install...

Creating domain... | 0 B 00:00

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

#特别提示

使用--disk参数时,一定要指定磁盘的格式、接口类型、大小,如果不明确制定安装操作系统的时候识别的磁盘空间为0,不能安装操作系统;安装Centos6.9最小内存要设置为1G,要不安装操作系统的时候会进入文本模式而不是图形安装模式

3.3 使用vnc客户端连接KVM虚拟机,进行操作系统安装

#vnc客户端连接kvm虚拟机出现报错如下(原因可能是数据溢出导致):

#解决办法(调试图形质量为Low或者High模式多试几次即可解决):

3.4 开始安装Centos操作系统

#省略余下的安装过程,新入门的linux人员自行百度相关安装步骤

3.5 SecureCRT使用virt-manager管理虚拟机

3.5.1 安装X11相关软件

[root@kvm-node1 ~]# yum install -y xorg-x11-font-utils.x86_64

xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64

3.5.2 查询X11相关软件包

[root@kvm-node1 ~]# rpm -qa | grep xorg-x11

xorg-x11-xauth-1.0.9-1.el6.x86_64

xorg-x11-server-utils-7.7-14.el6.x86_64

xorg-x11-xinit-1.0.9-14.el6.x86_64

xorg-x11-font-utils-7.2-11.el6.x86_64

xorg-x11-utils-7.5-14.el6.x86_64

3.5.3 SSH服务端开启SSH隧道转发X11

#修改/etc/ssh/sshd_config配置文件X11Forwarding no为X11Forwarding yes

[root@kvm-node1 ~]# sed -i 's#X11Forwarding no#X11Forwarding yes#g' /etc/ssh/sshd_config

[root@kvm-node1 ~]# grep "X11Forwarding*" /etc/ssh/sshd_config

#X11Forwarding no

X11Forwarding yes

# X11Forwarding no

#重启SSH服务

[root@kvm-node1 ~]# /etc/init.d/sshd restart

Stopping sshd: [ OK ]

Starting sshd: [ OK ]

3.5.4 在客户端机器上安装Xming

Xming下载地址:https://sourceforge.net/projects/xming/

Xming安装方法:windows系统上双击安装即可

3.5.5 设置SecureCRT转发

#在SSH服务端上验证转发设置是否成功

[root@kvm-node1 ~]# echo $DISPLAY

localhost:12.0

3.5.6 在SSH服务端运行virt-manager命令

#virt-manager出现乱码现象

#解决virt-manager乱码方法

[root@kvm-node1 ~]# yum list dejavu-lgc-sans-fonts -y

#再次运行virt-manager

#至此我们可以使用在不安装图形化界面也能使用图形化管理kvm虚拟机了

4 KVM管理工具之Webvirtmgr实战

4.1 基础环境介绍

#系统基本设置

[root@kvm-manager ~]# cat /etc/redhat-release

CentOS release 6.9 (Final)

[root@kvm-manager ~]# uname -r

2.6.32-696.el6.x86_64

[root@kvm-manager ~]# hostname

kvm-manager

[root@kvm-manager ~]# getenforce

Disabled

[root@kvm-manager ~]# /etc/init.d/iptables status

iptables: Firewall is not running.

[root@kvm-manager ~]# for i in `echo -e "0\n1"`;do echo -n eth$i:;ifconfig eth$i | awk -F '[ :]+' 'NR==2{print $4}';done

eth0:10.0.0.210

eth1:172.16.1.210

#开启yum源包缓存

[root@kvm-manager ~]# vi /etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=1

debuglevel=2

logfile=/var/log/yum.log

4.2 安装webvirtmgr软件包

[root@kvm-manager ~]# yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

[root@kvm-manager ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx

4.3 安装python需求并设置Django环境

[root@kvm-manager ~]# git clone git://github.com/retspen/webvirtmgr.git

Initialized empty Git repository in /root/webvirtmgr/.git/

remote: Counting objects: 5730, done.

remote: Compressing objects: 100% (6/6), done.

remote: Total 5730 (delta 1), reused 0 (delta 0), pack-reused 5724

Receiving objects: 100% (5730/5730), 3.01 MiB | 131 KiB/s, done.

Resolving deltas: 100% (3686/3686), done.

[root@kvm-manager ~]cd webvirtmgr

[root@kvm-manager webvirtmgr]# pip install -r requirements.txt

[root@kvm-manager webvirtmgr]# ./manage.py syncdb

WARNING:root:No local_settings file found.

Creating tables ...

Creating table auth_permission

Creating table auth_group_permissions

Creating table auth_group

Creating table auth_user_groups

Creating table auth_user_user_permissions

Creating table auth_user

Creating table django_content_type

Creating table django_session

Creating table django_site

Creating table servers_compute

Creating table instance_instance

Creating table create_flavor

#输入用户信息:

You just installed Django's auth system, which means you don't have any superusers defined.

Would you like to create one now? (yes/no): yes

Username (leave blank to use 'root'): root #输入用户名

Email address: gh1578@qq.com #输入自己的邮箱账户

Password: #输入你的用户登录密码

Password (again): #再次确认登录密码

Superuser created successfully.

Installing custom SQL ...

Installing indexes ...

Installed 6 object(s) from 1 fixture(s)

[root@kvm-manager webvirtmgr]# ./manage.py collectstatic

#创建额外的超级用户

[root@kvm-manager webvirtmgr]# ./manage.py createsuperuser

WARNING:root:No local_settings file found.

Username: admin #输入超级用户名

Email address: gh1578@qq.com #输入你的邮箱

Password: #输入超级用户的登录密码

Password (again): #再次确认密码

Superuser created successfully.

#修改额外超级用户密码

[root@kvm-manager webvirtmgr]# ./manage.py changepassword admin

WARNING:root:No local_settings file found.

Changing password for user 'admin'

Password:

Password (again):

Password changed successfully for user 'admin'

4.4 配置nginx

[root@kvm-manager webvirtmgr]# cd ..

[root@kvm-manager ~]# mkdir -pv /var/www

mkdir: created directory `/var/www'

[root@kvm-manager ~]# mv webvirtmgr/ /var/www/

#添加文件webvirtmgr.conf中/etc/nginx/conf.d目录中

[root@kvm-manager ~]# cd /etc/nginx/conf.d/

[root@kvm-manager conf.d]# vim webvirtmgr.conf

server {

listen 80 default_server;

server_name $hostname;

#access_log /var/log/nginx/webvirtmgr_access_log;

location /static/ {

root /var/www/webvirtmgr/webvirtmgr;

expires max;

}

location / {

proxy_pass http://127.0.0.1:8000;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;

proxy_set_header Host $host:$server_port;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 600;

proxy_read_timeout 600;

proxy_send_timeout 600;

client_max_body_size 1024M; # Set higher depending on your needs

}

}

#启动nginx服务报错如下:

[root@kvm-manager nginx]# /etc/init.d/nginx start

Starting nginx: nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/conf.d/webvirtmgr.conf:2

[FAILED]

#报错原因:在/etc/nginx/conf.d/目录存在nginx服务默认的配置文件,从而引起冲突,导致nginx服务启动失败

[root@kvm-manager conf.d]# ls -ld default.conf.bak

-rw-r--r-- 1 root root 451 Oct 31 2016 default.conf

#解决办法:

[root@kvm-manager conf.d]# mv default.conf{,.bak}

[root@kvm-manager conf.d]# ls -ld default.conf*

-rw-r--r-- 1 root root 451 Oct 31 2016 default.conf.bak

#启动nginx服务并设置开机自启动

[root@kvm-manager ~]# /etc/init.d/nginx status

nginx is stopped

[root@kvm-manager ~]# /etc/init.d/nginx start

Starting nginx: [ OK ]

[root@kvm-manager ~]# chkconfig nginx on

#查看nginx端口是否正常开通

[root@kvm-manager ~]# lsof -i :80

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nginx 25044 root 6u IPv4 63052 0t0 TCP *:http (LISTEN)

nginx 25046 nginx 6u IPv4 63052 0t0 TCP *:http (LISTEN)

#设置/var/www/webvirtmgr目录属主与属组权限为nginx

[root@kvm-manager ~]# chown -R nginx:nginx /var/www/webvirtmgr/

[root@kvm-manager ~]# ls -ld /var/www/webvirtmgr/

drwxr-xr-x 21 nginx nginx 4096 Aug 4 16:39 /var/www/webvirtmgr/

4.5 配置Supervisor

#编辑/etc/supervisord.conf配置文件,在该文件尾部添加以下内容

[root@kvm-manager ~]# vim /etc/supervisord.conf

[program:webvirtmgr]

command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py

directory=/var/www/webvirtmgr

autostart=true

autorestart=true

logfile=/var/log/supervisor/webvirtmgr.log

log_stderr=true

user=nginx

[program:webvirtmgr-console]

command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console

directory=/var/www/webvirtmgr

autostart=true

autorestart=true

stdout_logfile=/var/log/superviso

4.6 启动supervisord服务并设置开机自启动

[root@kvm-manager ~]# /etc/init.d/supervisord status

supervisord is stopped

[root@kvm-manager ~]# /etc/init.d/supervisord start

Starting supervisord: [ OK ]

[root@kvm-manager ~]# chkconfig supervisord on

#查看supervisord服务是否正常运行

[root@kvm-manager ~]# ps -ef | grep supervisord | grep -v grep

root 25421 1 0 19:01 ? 00:00:03 /usr/bin/python /usr/bin/supervisord

4.7 调试webvirtmgr方法

[root@kvm-manager ~]# cd /var/www/webvirtmgr/

[root@kvm-manager webvirtmgr]# ./manage.py runserver

WARNING:root:No local_settings file found.

WARNING:root:No local_settings file found.

Validating models...

0 errors found

August 04, 2018 - 16:47:44

Django version 1.5.5, using settings 'webvirtmgr.settings'

Development server is running at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Error: That port is already in use.

4.8 打开webvirtmgr web登录页面

1、在浏览器中输入http://10.0.0.210/login/

2、在浏览器中输入http://192.168.1.8:8000/login/

#修改/var/www/webvirtmgr/conf/gunicorn.conf.py配置文件中bind = '127.0.0.1:8000'为

bind = '0.0.0.0:8000'即可

[root@kvm-manager ~]# vim /var/www/webvirtmgr/conf/gunicorn.conf.py

#bind = '127.0.0.1:8000'

bind = '0.0.0.0:8000'

#重启supervisord服务

[root@kvm-manager ~]# /etc/init.d/supervisord restart

Stopping supervisord: [ OK ]

Starting supervisord: [ OK ]

4.9 添加KVM主机(TCP连接方式)

4.9.1 在webvirtmgr服务端主机上验证KVM主机信息

[root@kvm-manager ~]# virsh -c qemu+tcp://10.0.0.200/system nodeinfo

CPU model: x86_64

CPU(s): 1

CPU frequency: 2501 MHz

CPU socket(s): 1

Core(s) per socket: 1

Thread(s) per core: 1

NUMA cell(s): 1

Memory size: 1004112 KiB

4.9.2 在webvirtmgr服务端上验证KVM主机报错解决方法

#出现报错如下

[root@kvm-manager ~]# virsh -c qemu+tcp://10.0.0.200/system nodeinfo

error: unable to connect to server at '10.0.0.200:16509': No route to host

error: failed to connect to the hypervisor

#问题原因及解决办法

1、KVM宿主机防火墙阻挡16509端口

方法一(关闭防火墙):

/etc/init.d/iptables stop

chkconfig iptables off

方法二(添加防火墙放行16509端口规则):

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT

/etc/init.d/iptables save

2、KVM宿主机tcp监听端口没有启用

#去掉/etc/sysconfig/libvirtd文件中以下内容的注释,使libvirtd服务处于监听状态

[root@kvm-node1 ~]# vim /etc/sysconfig/libvirtd

LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf

LIBVIRTD_ARGS="--listen"

#修改/etc/libvirt/libvirtd.conf文件中以下内容的注释,使libvirtd服务允许tcp方式通讯

[root@kvm-node1 ~]# vim /etc/libvirt/libvirtd.conf

listen_tls = 0 #取消CA认证

listen_tcp = 1 #允许tcp监听

tcp_port = "16509" #开放tcp端口

listen_addr = "0.0.0.0" #修改监听地址为0.0.0.0

auth_tcp = "none" #修改tcp认证为none;如果auth_tcp = "sasl"则tcp方法连接采用sasl方式认证

#重启libvirtd服务

[root@kvm-node1 ~]# /etc/init.d/libvirtd restart

Stopping libvirtd daemon: [ OK ]

Starting libvirtd daemon: [ OK ]

#查看libvirtd服务运行进程状态

[root@kvm-node1 ~]# ps aux | grep libvirtd | grep -v grep

root 17418 0.0 0.7 494124 7036 ? Sl 22:53 0:00 libvirtd --daemon --config /etc/libvirt/libvirtd.conf --listen

#查看libvirtd服务运行相应端口

[root@kvm-node1 ~]# netstat -lntp | grep 16509

tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 17418/libvirtd

#再次在webvirtmgr主机上执行验证KVM宿主机命令,正常打印KVM宿主机基本硬件信息

[root@kvm-manager ~]# virsh -c qemu+tcp://10.0.0.200/system nodeinfo

4.9.3 基于TCP认证采用sasl加密添加特定用户

提示说明:如果auth_tcp = "sasl"则tcp方式连接则采用sasl方式认证,所以要执行以

下saslpasswd2的命令来创建账户,如果为auth_tcp = "none"则可以直接使用kvm宿主机本地的账户以tcp方式添加到webvirtmgr进行管理

#使用saslpasswd2命令添加账户

[root@kvm-node1 ~]# saslpasswd2 -a libvirt gandalf #在KVM宿主机上创建用户gandalf

Password: #输入gandalf密码

Again (for verification): #再次确认gandalf密码

#使用sasldblistusers2命令查看创建的账户

[root@kvm-node1 ~]# sasldblistusers2 -f /etc/libvirt/passwd.db

gandalf@kvm-node1: userPassword

#使用saslpasswd2命令带-d参数禁用用户访问权限

[root@kvm-node1 ~]# saslpasswd2 -a libvirt -d Gandalf

#在webvirtmgr服务端主机上进行验证测试

[root@kvm-manager ~]# virsh -c qemu+tcp://10.0.0.200/system nodeinfo

Please enter your authentication name: gandalf

Please enter your password:

CPU model: x86_64

CPU(s): 1

CPU frequency: 2501 MHz

CPU socket(s): 1

Core(s) per socket: 1

Thread(s) per core: 1

NUMA cell(s): 1

Memory size: 1004112 KiB

4.9.4 在webvirtmgr web页面添加KVM主机

4.9.4.1 TCP连接方式添加

4.9.4.2 添加KVM主机完成

4.9.4.3 管理KVM主机所有信息

5 KVM虚拟化故障案例

5.1 案例一:virsh shutdown VM-name无法关闭虚拟机

问题描述:

通过kvm虚拟化安装虚拟机,通过virsh shutdown VM-name命令关闭虚拟机,命令已经执行成功,但是通过virsh list --all 查看虚拟机状态仍然处于running,只能通过virsh destroy命令强制关闭

解决办法:

在虚拟机上执行以下命令:

yum install acpid -y

/etc/init.d/acpid start

chkconfig acpid on

验证效果:

再次执行virsh shutdown VM-name命令成功关闭虚拟机

5.2 案例二:KVM虚拟机在使用vnc连接时鼠标不同步

解决办法:

virsh edit VM-name

<input type='mouse' bus='ps2'/> 改成  <input type=’tablet’ bus=’usb’/>

(该句位于<devices>配置中)

input元素:input元素含有一个强制的属性,type属性的值可以是mouse或者tablet,前者使用相对运动,后者使用绝对运动。bus属性指定一个明确的设备类型,值可以是:xen、ps2、usb。

云计算之KVM虚拟化实战的更多相关文章

  1. My way on Linux - [虚拟化&云计算] - 云计算概述&KVM虚拟化基础

    思维导图

  2. 1 云计算系列之云计算概述和KVM虚拟化简介

    为什么会出现云之传统数据中学面临的问题 物理服务器的利用率非常低,浪费资源,且资源分配不合理,比如一台服务器CPU使用率不到40%,或者某个应用需要的硬件配置低但是服务器硬件配置高等等. 云计算概念 ...

  3. KVM虚拟化技术实战全过程

    今天准备开始.................... centos安装-kvm 教程: http://www.linuxidc.com/Linux/2017-01/140007.htm http:// ...

  4. KVM虚拟化概述与安装

    虚拟化是构建云计算基础架构不可或缺的关键技术之一,云计算的云端系统,其实质上就是一个大型的KVM分布式系统,虚拟化通过在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的终端加 ...

  5. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  6. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  7. 云计算之KVM安装(二)

    云计算之KVM安装(二) 调整虚拟机 虚拟化Intel使用的是intel VT-X AMD使用的是AMD-V 创建虚拟机步骤 1.准备虚拟机硬盘 2.需要系统iso镜像 3.需要安装一个vnc的客户端 ...

  8. 云计算之KVM简介(一)

    云计算之KVM简介(一) 因为很多人会将云计算和虚拟化弄混,我下面为大家介绍一下 云计算指的是资源使用和交互的一种模式 虚拟化指的是技术,可以将物理计算机虚拟成多个逻辑计算机(VMware)  他俩是 ...

  9. KVM虚拟化技术

    KVM虚拟化技术 Qemu-kvm kvm virt-manager VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machi ...

随机推荐

  1. Dreams save us. Dreams lift us up and transform us into something better.

    Dreams save us. Dreams lift us up and transform us into something better.梦想能够拯救我们.梦想能够激励我们并让我们成为更好的人 ...

  2. php cur错误:SSL错误 unable to get local issuer certificatebool

    采集https链接时出现的问题 办法:跳过SSL证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLO ...

  3. Android - 通过真实案例学习解内存泄漏问题,最终发现Android原生Bug

    作为一个Android新手小白,刚到新公司,最近的工作就是在学习解各类Bug.转型之初,面临各种新知识,会有压力,但是学习的过程是快乐的. 上周刚遇上一类bug,就是应用的内存泄漏问题.最终通过前辈的 ...

  4. 【工作中学习2】Map的使用及排序(第三个参数)

    项目进行中,使用到Map(std::map),Map要点整理如下: 1. Map,也叫关联数组,提供key/value(键/值对),key用来索引,value是被存储和检索的数据. 2. key值唯一 ...

  5. hibernate_HelloWorld

    环境准备 1.下载 hibernate 3.3.2: 2.下载 hibernate 3.4.0: 3.注意阅读 hibernate compatibility matrix(hibernate 网站, ...

  6. instanceof和相关函数

    instanceof:如果左边对象是右边类型所表示类(或任意一子类)的一个实例,则返回true,否则false.判断左边真实类型是不是右边的类或它的派生类. //实例一 Object o= new L ...

  7. Azure 3月新公布(二)

    Azure 3月新发布:HDInsight 的 Apache Hadoop 以及 ExpressRoute 超高性能网关层正式发布,SQL Database Premium RS 层发布公共预览版 A ...

  8. excel跨表查询数据

    环境:公司部分部门进行商品盘点,店铺经理要求不经过系统进行盘点,全程采用excel表格处理所示:            左图为总表,右图为首饰部门录入的数据 需求:找出盘点差异(即首饰部商品数量是否和 ...

  9. 如何C#操作SQLite数据库

    或许有人之前在java开发中使用过SQLite,对它有些印象.在用Winform或Wpf开发小应用程序时,发现用SQLite数据库也是不错的.就像一个会员管理软件,开发完毕后,可以省去想sqlserv ...

  10. 建堆复杂度O(n)证明

    堆排序中首先需要做的就是建堆,广为人知的是建堆复杂度才O(n),它的证明过程涉及到高等数学中的级数或者概率论,不过证明整体来讲是比较易懂的. 堆排过程 代码如下 void print(vector&l ...