阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

KVM虚拟化管理平台WebVirtMgr部署-完整记录

162次阅读
没有评论

共计 42198 个字符,预计需要花费 106 分钟才能阅读完成。

KVM- 虚拟化环境安装

宿主机系统:CentOS 6.8

下面是安装过程记录:

1. 操作系统环境安装

(1)修改内核模式为兼容内核启动

[root@ops ~]# uname -a
Linux openstack 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@ops ~]#vim /boot/grub/grub.conf

……

default=1 # 由默认的 0 改为 1,内核兼容模式

(2)关闭 selinux,重启后生效

[root@ops ~]#vim /etc/sysconfig/selinux
……
SELINUX=disabled

[root@ops ~]#setenforce 0
setenforce: SELinux is disabled
[root@ops ~]#getenforce
Disabled

(3)关闭防火墙
[root@ops ~]#chkconfig ip6tables off
[root@ops ~]#chkconfig iptables off

(4)重启
[root@ops ~]#reboot

2. 虚拟化环境配置

(1)查看是否支持虚拟机
说明 1: 半虚拟化是不能运行与安装 KVM 虚拟机的。
[root@ops ~]#egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo          

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

(2)配置 yum 环境,确认 yum 源是好使的。(这一步骤省略,可以用默认 yum 源,也可以换用 163 或阿里的 yum 源,只要能正常使用就行)

(3)安装 kvm 软件包
[root@ops ~]#yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v

补充安装 kvm 虚拟化一些管理工具包
[root@ops ~]#yum -y install libguestfs-tools

******************************* 如果是 centos7,操作如下 ****************************************
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
systemctl enable libvirtd && systemctl start libvirtd
************************************************************************************

3. 查看虚拟化环境

(1)查看虚拟机环境
[root@ops ~]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon: [OK]
Starting libvirtd daemon: [OK]

—————————————————————————————-
启动的时候报错如下:
Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference [FAILED]

解决办法:
yum upgrade device-mapper-libs
—————————————————————————————-

[root@ops ~]# virsh -c qemu:///system list
Id Name State
—————————————————-

(2)查看 kvm 模块支持
[root@ops ~]# lsmod |grep kvm
kvm_intel 54285 0
kvm 333172 1 kvm_intel

(3)查看虚拟工具版本
[root@ops ~]# virsh –version
0.10.2
[root@ops ~]# virt-install –version
0.600.0
[root@ops ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

4. 手动配置虚拟网桥

(1)关闭 networkmanager 服务
[root@ops ~]# chkconfig NetWorkManager off
[root@ops ~]# /etc/init.d/NetWorkManager stop

(2)创建 br0 网桥
[root@ops ~]#cd /etc/sysconfig/network-scripts/
[root@ops ~]#cp ifcfg-em2 ifcfg-br0                     #em2 是本机内网网卡

[root@ops ~]# cat ifcfg-em2
DEVICE=em2
HWADDR=44:A8:42:21:A6:01
TYPE=Ethernet
BRIDGE=br0                                           #将 em2 添加到网桥 br0 内
UUID=6dbfbd49-b6b9-4c51-b2d2-b3ecbead82e9
ONBOOT=yes
IPADDR=192.168.1.17
GATEWAY=192.168.1.1
NM_CONTROLLED=no                           #一定设置为 no!让 em2 不受 networkmanager 的控制
BOOTPROTO=static

[root@ops ~]# cat ifcfg-br0
DEVICE=br0
HWADDR=44:A8:42:21:A6:01
TYPE=Bridge
UUID=6dbfbd49-b6b9-4c51-b2d2-b3ecbead82e9
ONBOOT=yes
IPADDR=192.168.1.17
GATEWAY=192.168.1.1
NM_CONTROLLED=no
BOOTPROTO=static

(3)关闭了 networkmanager 服务之后,才能通过重启网卡服务管理网络。
[root@ops ~]# /etc/init.d/network restart

(4)查看网桥 br0 信息
[root@ops ~]# ifconfig
br0 Link encap:Ethernet HWaddr 44:A8:42:21:A6:01
inet addr:192.168.1.17 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::46a8:42ff:fe21:a601/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6642 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2146342 (2.0 MiB) TX bytes:720 (720.0 b)

em1 Link encap:Ethernet HWaddr 44:A8:42:21:A6:00
inet addr:111.101.186.163 Bcast:103.10.86.63 Mask:255.255.255.192
inet6 addr: fe80::46a8:42ff:fe21:a600/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5877878 errors:0 dropped:0 overruns:0 frame:0
TX packets:175381 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:921486122 (878.7 MiB) TX bytes:22894696 (21.8 MiB)
Interrupt:35

em2 Link encap:Ethernet HWaddr 44:A8:42:21:A6:01
inet6 addr: fe80::46a8:42ff:fe21:a601/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2412349 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:314457702 (299.8 MiB) TX bytes:872 (872.0 b)
Interrupt:38

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:16436 Metric:1
RX packets:238 errors:0 dropped:0 overruns:0 frame:0
TX packets:238 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:58469 (57.0 KiB) TX bytes:58469 (57.0 KiB)

virbr0 Link encap:Ethernet HWaddr 52:54:00:5F:95:B7                                                      #virbr0 虚拟网卡有没有都不影响虚拟机的使用,有办法可以将其删除,但是保留也不影响~
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)

(5)查看网桥
[root@ops ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.44a84221a601 no em2
virbr0 8000.5254005f95b7 yes virbr0-nic

到此 kvm 虚拟化环境安装完毕。

***********************************************

关闭虚拟网卡 virtbr0 的方法:http://www.linuxidc.com/Linux/2016-10/136590.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-10/136589p2.htm

公司机房有一台 2U 的服务器(64G 内存,32 核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限。所以打算在这台 2U 服务器上部署 kvm 虚拟化,虚出多台 VM 出来,以应对新的测试需求。

当 KVM 宿主机越来越多,需要对宿主机的状态进行调控。这里我采用 WebVirtMgr 作为 kvm 虚拟化的 web 管理工具,图形化的 WEB,让人能更方便的查看 kvm 宿主机的情况和操作

WebVirtMgr 是近两年来发展较快,比较活跃,非常清新的一个 KVM 管理平台,提供对宿主机和虚机的统一管理,它有别于 kvm 自带的图形管理工具(virtual machine manager),让 kvm 管理变得更为可视化,对中小型 kvm 应用场景带来了更多方便。

WebVirtMgr 采用几乎纯 Python 开发,其前端是基于 Python 的 Django,后端是基于 Libvirt 的 Python 接口,将日常 kvm 的管理操作变的更加的可视化。

WebVirtMgr 特点:
操作简单,易于使用
通过 libvirt 的 API 接口对 kvm 进行管理
提供对虚拟机生命周期管理
WebVirtMgr 功能

宿主机管理支持以下功能
CPU 利用率
内存利用率
网络资源池管理
存储资源池管理
虚拟机镜像
虚拟机克隆
快照管理
日志管理
虚机迁移

虚拟机管理支持以下功能
CPU 利用率
内存利用率
光盘管理
关 / 开 / 暂停虚拟机
安装虚拟机
VNC console 连接
创建快照

下面对这一环境部署的过程做一详细记录,希望能帮助到有用到的朋友们。

这里我将 webvirtmgr 服务器和 kvm 服务器放在同一台机器上部署的,即单机部署
系统:CentOS 6.8
内存:64G
CPU:32 核
ip:192.168.1.17(内网),111.101.186.163(外网)

一、首先要安装 KVM 虚拟化环境,参考前一页进行安装:

http://www.linuxidc.com/Linux/2016-10/136589.htm

二、Kvm 的管理工具 webvirtmgr 安装和使用

1 安装支持的软件源
[root@openstack ops]#yum -y install http://dl.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

2 安装相关软件
[root@openstack ops]#yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx

3 从 git-hub 中下载相关的 webvirtmgr 代码
[root@openstack ops]#cd /usr/local/src/
[root@openstack src]#git clone git://github.com/retspen/webvirtmgr.git

4 安装 webvirtmgr
[root@openstack src]#cd webvirtmgr/
[root@openstack webvirtmgr]#pip install -r requirements.txt

5 安装数据库
[root@openstack webvirtmgr]#yum install python-sqlite2

6 对 django 进行环境配置
[root@openstack webvirtmgr]#pwd
/usr/local/src/webvirtmgr
[root@openstack webvirtmgr]#./manage.py syncdb           #默认是 python 执行,如下报错,换用其他版本的 python
————————————————– —————————- 
注意此处用默认的 python 执行上面命令,一般会报错,如下:
ImportError: No module named django.core.management

这个一般是由于 python 版本引起的,因为系统自带有好几个版本的 python
[root@openstack webvirtmgr]# python       # 按 Tab 键自查找
python python2.6
python2 python2.6-config python-config
[root@openstack webvirtmgr]# python -V
Python 2.6.6

由此可看出,系统默认的 Python 版本是 2.6.6
说明上面命令默认是 python2.6 执行的

既然使用 python2.6 执行上面的命令报错,那就换用其他版本 python2 执行
[root@openstack webvirtmgr]#/usr/bin/python2 manage.py syncdb     #最终发现使用 python2 执行这个命令就不报错了
…………
…………
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’): admin
Email address: wangshibo@163.com
Password:*********
Password (again):*********
——————— ——————— ——————— ——————— 
[root@openstack webvirtmgr]#/usr/bin/python2 manage.py collectstatic          # 生成配置文件(同样使用 python2 版本执行,不要使用默认的 python 执行)
WARNING:root:No local_settings file found.

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type ‘yes’ to continue, or ‘no’ to cancel: yes
……….
……….

[root@openstack webvirtmgr]#/usr/bin/python2 manage.py createsuperuser  # 添加管理员账号(同样使用 python2 版本执行,不要使用默认的 python 执行)
WARNING:root:No local_settings file found.
Username: ops                                                   # 这个是管理员账号,用上面的 admin 和这个管理员账号都可以登陆 webvirtmgr 的 web 界面管理平台
Email address: wangshibo@163.com
Password:
Password (again):
Superuser created successfully.

7 拷贝 web 到 相关目录
[root@openstack ops]#mkdir -pv /var/www
[root@openstack ops]#cp -Rv /usr/local/src/webvirtmgr /var/www/webvirtmgr

8 设置 ssh
[root@openstack ops]#ssh-keygen -r rsa #产生公私钥
[root@openstack ops]#ssh-copy-id 192.168.1.17 #由于这里 webvirtmgr 和 kvm 服务部署在同一台机器,所以这里本地信任。如果 kvm 部署在其他机器,那么这个是它的 ip
[root@openstack ops]#ssh 192.168.1.17 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60

9 编辑 nginx 配置文件
提前确保 /etc/nginx/nginx.conf 文件里开启了“include /etc/nginx/conf.d/*.conf;”

[root@openstack ops]#vim /etc/nginx/conf.d/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; # or /srv instead of /var
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 $remote_addr;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}

[root@openstack ops]#mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

10 启动 nginx
[root@openstack ops]#/etc/init.d/nginx restart

11 修改防火墙规则
[root@ops ~]#vim /etc/sysconfig/selinux
……
SELINUX=disabled

[root@ops ~]#setenforce 0
setenforce: SELinux is disabled
[root@ops ~]#getenforce
Disabled

[root@openstack ops]#/usr/sbin/setsebool httpd_can_network_connect true

12 设置 supervisor
[root@openstack ops]#chown -R nginx:nginx /var/www/webvirtmgr

[root@openstack ops]#vim /etc/supervisord.conf #在文件末尾添加, 注意将默认的 python 改为 python2,因为上面只有用这个版本执行才不报错!
[program:webvirtmgr]
command=/usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py                     # 启动 8000 端口
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/python2 /var/www/webvirtmgr/console/webvirtmgr-console                               # 启动 6080 端口(这是控制台 vnc 端口)
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx

[root@openstack ops]#vim /var/www/webvirtmgr/conf/gunicorn.conf.py #确保下面 bind 绑定的是本机的 8000 端口,这个在 nginx 配置中定义了,被代理的端口
bind = ‘127.0.0.1:8000’

13 设置开机启动
[root@openstack ops]#chkconfig supervisord on
[root@openstack ops]#vim /etc/rc.local
/usr/sbin/setsebool httpd_can_network_connect true

14 启动进程
[root@openstack ops]#/etc/init.d/supervisord restart

15 查看进程
[root@openstack ops]#netstat -lnpt 即可以看到 6080 和 8000 已经启动
[root@openstack ops]# lsof -i:6080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python2 53476 nginx 3u IPv4 364124 0t0 TCP *:6080 (LISTEN)
[root@openstack ops]#lsof -i:8000

——————————————————————————
一般来说,只要上面的 supervisord 服务启动了,8000 和 6080 端口就起来了。
因为在 /etc/supervisord.conf 文件里配置了这两个端口的启动设置

如果 supervisord 服务启动了,8000 和 6080 端口还是没起来!
那么就需要手动启动 /etc/supervisord.conf 文件里配置的这两个端口的启动命令,即:
[root@openstack ops]# /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py       #这个命令会一直在操作
[root@openstack ops]# /usr/bin/python2 /var/www/webvirtmgr/console/webvirtmgr-console                          # 这个命令会一直在操作
[root@openstack ops]# /etc/init.d/supervisord restart
[root@openstack ops]# lsof -i:8000
[root@openstack ops]# lsof -i:6080
——————————————————————————

16 web 访问
http://111.101.186.163/login/

这里用超级管理员登陆,只有超级管理员登陆后才能看到“基础构架”窗口

普通用户登陆后,只能看到“WebVirtMgr”一个窗口

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

选择“SSH 链接“,设置 Label,IP,用户

注意:Label 与 IP 要相同

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

打开后,有报错!看来在上面使用 ssh 连接的配置环节有误所致!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

解决措施:

1)在 webvirtmgr 服务器(服务端)上(这里 kvm 和 WebVirtMgr 部署在同一台机器上)创建 nginx 用户家目录(默认 nginx 服务安装时是没有 nginx 家目录的),生成 nginx 的公私钥
[root@openstack ops]# cd /home/
[root@openstack home]# mkdir nginx
[root@openstack home]# chown nginx.nginx nginx/
[root@openstack home]# chmod 700 nginx/ -R
[root@openstack home]# su – nginx -s /bin/bash
-bash-4.1$ ssh-keygen                             # 期间输入 yes 后直接回车,回车
-bash-4.1$ touch ~/.ssh/config && echo -e “StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null” >> ~/.ssh/config
-bash-4.1$ chmod 0600 ~/.ssh/config

2)在 kvm(客服端)服务器上(这里 kvm 和 WebVirtMgr 部署在同一台机器上)配置用户,这里默认采用 root 用户
———————————————————————————————————————
如果采用其他用户,比如 webvirtmgr,操作如下:
[root@openstack ops]#useradd webvirtmgr
[root@openstack ops]#echo “123456” | passwd –stdin webvirtmgr
[root@openstack ops]#groupadd libvirt
[root@openstack ops]#usermod -G libvirt -a webvirtmgr
———————————————————————————————————————

3)在 webvirtmgr 服务器(服务端)上(这里 kvm 和 WebVirtMgr 部署在同一台机器上),将 nginx 用户的 ssh-key 上传到 kvm 服务器上(这里 kvm 和 WebVirtMgr 部署在同一台机器上)
[root@openstack ops]# su – nginx -s /bin/bash
-bash-4.1$ ssh-copy-id root@192.168.1.17
Warning: Permanently added ‘192.168.1.17’ (RSA) to the list of known hosts.
root@192.168.1.17’s password: #输入 192.168.1.17 即本机的 root 账号
Now try logging into the machine, with “ssh ‘root@192.168.1.17′”, and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.
———————————————————————————————————————
这里采用的是 root 用户,如果采用其他用户,比如上面假设的 webvirtmgr 用户,操作如下:
[root@openstack ops]#su – nginx -s /bin/bash
-bash-4.1$ssh-copy-id webvirtmgr@192.168.0.23
———————————————————————————————————————

4)在 kvm(客服端)服务器上(这里 kvm 和 WebVirtMgr 部署在同一台机器上)配置 libvirt ssh 授权
[root@openstack ops]# vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:root #注意这里采用的是 root 用户
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[root@openstack ops]# chown -R root.root /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
———————————————————————————————————————
这里采用的是 root 用户,如果采用其他用户,比如上面假设的 webvirtmgr 用户,操作如下:
[root@openstack ops]#vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:webvirtmgr #这里就设定 webvirtmgr 用户
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[root@openstack ops]#chown -R webvirtmgr.webvirtmgr /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
———————————————————————————————————————

5)重启 libvirtd 服务
/etc/init.d/libvirtd restart

这样上面报错的问题就迎仍而解了!

然后重新 ssh 方式连接就 ok 了,就不会有上面那个报错了~

但是,又出现了其他报错(如下)!尼玛~~  接续排查!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

解决措施:

 在 WebVirtMgr 服务器本地使用 ssh 方式连接,在终端命令行里:

[root@openstack .ssh]# virsh -c qemu+ssh://103.10.86.17/system list
The authenticity of host ‘103.10.86.17 (103.10.86.17)’ can’t be established.
RSA key fingerprint is 3d:c1:2e:70:e9:e5:1d:84:40:a2:63:82:af:e5:cc:cd.
Are you sure you want to continue connecting (yes/no)? yes
error: End of file while reading data: Warning: Permanently added ‘103.10.86.17’ (RSA) to the list of known hosts.: Input/output error
error: failed to connect to the hypervisor

看日志 tail /var/log/secure | grep sshd 发现是我这里主动发出断开的. 有可能检测到 libvirtd 有些问题导致的。
当时使用 virt-manage 可以查询到远程的信息. 估计是 sshd 出现的问题把.

折腾一会,暂时没找到解决方案

决定先选用通过 tcp 协议进行迁移的(但是这种方式没有用 ssh 连接方式安全——)
等后面有时间了,再想办法解决上面 ssh 方式连接的错误吧

使用 tcp 进行对远程 libvirtd 进行连接访问的配置如下:

1)修改文件 /etc/sysconfig/libvirtd,用来启用 tcp 的端口
[root@openstack ops]# cat /etc/sysconfig/libvirtd
……..
LLIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS=”–listen”

2)修改文件 /etc/libvirt/libvirtd.conf
[root@openstack ops]#vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = “16509”
listen_addr = “0.0.0.0”
auth_tcp = “none”

3)运行 libvirtd
[root@openstack ops]#service libvirtd restart

如果没起效果(我的就没有生效,那么使用命令行. 如果生效了,执行下面命令就会报错
[root@openstack ops]#libvirtd –daemon –listen –config /etc/libvirt/libvirtd.conf

4)查看运行进程
[root@openstack ops]# ps aux | grep libvirtd
root 16563 1.5 0.1 925880 7056 ? Sl 16:01 0:28 libvirtd -d -l –config /etc/libvirt/libvirtd.conf

5)查看端口
[root@openstack ops]# lsof -i:16509

6)在 source host 连接 dest host 远程 libvirtd 查看信息(也可以用公网 ip)
[root@openstack ops]# virsh -c qemu+tcp://192.168.1.17/system
Welcome to virsh, the virtualization interactive terminal.

Type: ‘help’ for help with commands
‘quit’ to quit

virsh #

成功使用 tcp 去访问 libvirtd。

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

注意:

在使用 tcp 方式连接后,会出现连接终端的情况!

[root@openstack .ssh]# virsh -c qemu+tcp://192.168.1.17/system
error: Cannot recv data: Connection reset by peer
error: failed to connect to the hypervisor

连接断开,重新连接便可。

[root@openstack ops]# ps aux | grep libvirtd
root 59619 0.6 0.0 1008128 22048 ? Sl 19:17 0:06 libvirtd –daemon –config /etc/libvirt/libvirtd.conf –listen
root 61081 0.0 0.0 103316 1004 pts/2 S+ 19:33 0:00 grep –color libvirtd
[root@openstack ops]# kill -9 59619
[root@openstack ops]# ps aux | grep libvirtd
root 61083 0.0 0.0 103312 904 pts/2 S+ 19:33 0:00 grep –color libvirtd
[root@openstack ops]# libvirtd –daemon –listen –config /etc/libvirt/libvirtd.conf
[root@openstack ops]# ps aux | grep libvirtd
root 61086 13.5 0.0 418240 6576 ? Sl 19:33 0:00 libvirtd –daemon –listen –config /etc/libvirt/libvirtd.conf
root 61176 0.0 0.0 103312 908 pts/2 S+ 19:33 0:00 grep –color libvirtd
[root@openstack ops]# virsh -c qemu+tcp://192.168.1.17/system
Welcome to virsh, the virtualization interactive terminal.

Type: ‘help’ for help with commands
‘quit’ to quit

virsh #

后续发现,webvirtmgr 连上后,过一会儿就会断开!

针对这个情况,可以可以写个定时脚本,如下:

[root@openstack ops]# cat /usr/local/src/libvirtd.sh

#!/bin/bash
ps -ef | grep “libvirtd –daemon –listen”|grep -v grep|awk -F” ” ‘{print $2}’|xargs kill -9
/usr/sbin/libvirtd –daemon –listen –config /etc/libvirt/libvirtd.conf

[root@openstack ops]# crontab -l
* * * * * /bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 10;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 30;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 50;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1

*********************************************************************************

一般如上配置后,webvirtmgr 里的控制台是可以正常连接虚拟机的。

但如果 webvirtmgr 里通过控制台页面 (vnc) 连接虚拟机失败,可以按照下面的操作方法尝试解决:

kvm 原来的安装方式是客户端需要安装 vncviewer,才能看到安装页面,而webvirtmgr 使用了 novnc,页面通过 websocket 进行通信。

1)首先需要安装 novnc
[root@openstack ops]# yum install -y novnc

2)防火墙打开 vnc 的 6080 端口
[root@openstack ops]# vim /etc/sysconfig/iptables
…….
-A INPUT -p tcp -m state –state NEW -m tcp –dport 6080 -j ACCEPT
…….

[root@openstack ops]# /etc/init.d/iptables restart

3)由上面可知,webvirtmgr 进程通过 supervisor 管理。这里需要重启 supervisor 进程
[root@openstack ops]# /etc/init.d/supervisord restart

这样,再次打开 Webvirtmgr 的控制台,发现就能连上虚拟机了!

******************
可以在 webvirtmgr 服务器上通过命令行尝试下连接:
[root@openstack ops]# novnc_server –help
Usage: novnc_server [–listen PORT] [–vnc VNC_HOST:PORT] [–cert CERT]

Starts the WebSockets proxy and a mini-webserver and
provides a cut-and-paste URL to go to.

–listen PORT Port for proxy/webserver to listen on
Default: 6080
–vnc VNC_HOST:PORT VNC server host:port proxy target
Default: localhost:5900
–cert CERT Path to combined cert/key file
Default: self.pem
–web WEB Path to web files (e.g. vnc.html)
Default: ./

[root@openstack ops]# novnc_server –listen 192.168.1.7:6086           # 端口在 6080 后的都可以用
Warning: could not find self.pem
Starting webserver and WebSockets proxy on port 192.168.1.7:6086
WARNING: no ‘numpy’ module, HyBi protocol will be slower
WebSocket server settings:
– Listen on 192.168.1.7:6086
– Flash security policy server
– Web server. Web root: /usr/share/novnc
– No SSL/TLS support (no cert file)
– proxying from 192.168.1.7:6086 to localhost:5900

Navigate to this URL:

http://kvm-server:192.168.1.7:6086/vnc.html?host=kvm-server&port=192.168.1.7:6086

Press Ctrl-C to exit

*********************************************************************************

KVM- 虚拟化环境安装

宿主机系统:CentOS 6.8

下面是安装过程记录:

1. 操作系统环境安装

(1)修改内核模式为兼容内核启动

[root@ops ~]# uname -a
Linux openstack 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@ops ~]#vim /boot/grub/grub.conf

……

default=1 # 由默认的 0 改为 1,内核兼容模式

(2)关闭 selinux,重启后生效

[root@ops ~]#vim /etc/sysconfig/selinux
……
SELINUX=disabled

[root@ops ~]#setenforce 0
setenforce: SELinux is disabled
[root@ops ~]#getenforce
Disabled

(3)关闭防火墙
[root@ops ~]#chkconfig ip6tables off
[root@ops ~]#chkconfig iptables off

(4)重启
[root@ops ~]#reboot

2. 虚拟化环境配置

(1)查看是否支持虚拟机
说明 1: 半虚拟化是不能运行与安装 KVM 虚拟机的。
[root@ops ~]#egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo          

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

(2)配置 yum 环境,确认 yum 源是好使的。(这一步骤省略,可以用默认 yum 源,也可以换用 163 或阿里的 yum 源,只要能正常使用就行)

(3)安装 kvm 软件包
[root@ops ~]#yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v

补充安装 kvm 虚拟化一些管理工具包
[root@ops ~]#yum -y install libguestfs-tools

******************************* 如果是 centos7,操作如下 ****************************************
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
systemctl enable libvirtd && systemctl start libvirtd
************************************************************************************

3. 查看虚拟化环境

(1)查看虚拟机环境
[root@ops ~]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon: [OK]
Starting libvirtd daemon: [OK]

—————————————————————————————-
启动的时候报错如下:
Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference [FAILED]

解决办法:
yum upgrade device-mapper-libs
—————————————————————————————-

[root@ops ~]# virsh -c qemu:///system list
Id Name State
—————————————————-

(2)查看 kvm 模块支持
[root@ops ~]# lsmod |grep kvm
kvm_intel 54285 0
kvm 333172 1 kvm_intel

(3)查看虚拟工具版本
[root@ops ~]# virsh –version
0.10.2
[root@ops ~]# virt-install –version
0.600.0
[root@ops ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

4. 手动配置虚拟网桥

(1)关闭 networkmanager 服务
[root@ops ~]# chkconfig NetWorkManager off
[root@ops ~]# /etc/init.d/NetWorkManager stop

(2)创建 br0 网桥
[root@ops ~]#cd /etc/sysconfig/network-scripts/
[root@ops ~]#cp ifcfg-em2 ifcfg-br0                     #em2 是本机内网网卡

[root@ops ~]# cat ifcfg-em2
DEVICE=em2
HWADDR=44:A8:42:21:A6:01
TYPE=Ethernet
BRIDGE=br0                                           #将 em2 添加到网桥 br0 内
UUID=6dbfbd49-b6b9-4c51-b2d2-b3ecbead82e9
ONBOOT=yes
IPADDR=192.168.1.17
GATEWAY=192.168.1.1
NM_CONTROLLED=no                           #一定设置为 no!让 em2 不受 networkmanager 的控制
BOOTPROTO=static

[root@ops ~]# cat ifcfg-br0
DEVICE=br0
HWADDR=44:A8:42:21:A6:01
TYPE=Bridge
UUID=6dbfbd49-b6b9-4c51-b2d2-b3ecbead82e9
ONBOOT=yes
IPADDR=192.168.1.17
GATEWAY=192.168.1.1
NM_CONTROLLED=no
BOOTPROTO=static

(3)关闭了 networkmanager 服务之后,才能通过重启网卡服务管理网络。
[root@ops ~]# /etc/init.d/network restart

(4)查看网桥 br0 信息
[root@ops ~]# ifconfig
br0 Link encap:Ethernet HWaddr 44:A8:42:21:A6:01
inet addr:192.168.1.17 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::46a8:42ff:fe21:a601/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6642 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2146342 (2.0 MiB) TX bytes:720 (720.0 b)

em1 Link encap:Ethernet HWaddr 44:A8:42:21:A6:00
inet addr:111.101.186.163 Bcast:103.10.86.63 Mask:255.255.255.192
inet6 addr: fe80::46a8:42ff:fe21:a600/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5877878 errors:0 dropped:0 overruns:0 frame:0
TX packets:175381 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:921486122 (878.7 MiB) TX bytes:22894696 (21.8 MiB)
Interrupt:35

em2 Link encap:Ethernet HWaddr 44:A8:42:21:A6:01
inet6 addr: fe80::46a8:42ff:fe21:a601/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2412349 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:314457702 (299.8 MiB) TX bytes:872 (872.0 b)
Interrupt:38

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:16436 Metric:1
RX packets:238 errors:0 dropped:0 overruns:0 frame:0
TX packets:238 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:58469 (57.0 KiB) TX bytes:58469 (57.0 KiB)

virbr0 Link encap:Ethernet HWaddr 52:54:00:5F:95:B7                                                      #virbr0 虚拟网卡有没有都不影响虚拟机的使用,有办法可以将其删除,但是保留也不影响~
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)

(5)查看网桥
[root@ops ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.44a84221a601 no em2
virbr0 8000.5254005f95b7 yes virbr0-nic

到此 kvm 虚拟化环境安装完毕。

***********************************************

关闭虚拟网卡 virtbr0 的方法:http://www.linuxidc.com/Linux/2016-10/136590.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-10/136589p2.htm

继上一篇安装好 kvm 的 web 管理平台 webvirtMgr 后,接下来说说 WebVirtMgr 的日常配置:添加宿主机,创建虚机,磁盘扩容,快照等

具体操作记录如下:

配置宿主机
1、登录 WebVirtMgr 管理平台

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

2、添加宿主机
选择首页的 WebVirtMgr –>Addd Connection

选择“TCP 链接“,设置 Label,IP,用户,密码

注意:Label 与 IP 要相同

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

虚机部署
1、创建存储池
点击前面创建的宿主机,进入虚拟机部署界面

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

点击“存储池”按钮,创建存储池(即创建磁盘镜像存放的位置)

注意:
创建存储池时, 首先要在宿主机上创建一个目录,然后在”路径“设置栏中添加该目录
例:mkdir /home/kvm/kvmstorage -p

[把提前下载好的 CentOS 镜像拷贝到上面创建的存储池目录 /home/kvm/kvmstorage 下;这里可以放不同版本的系统镜像(windows 也可以),以便在下面安装过程中选择不同镜像安装系统]

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

 2、添加磁盘镜像

 KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

注意:
下面“Metadata”前的小方框一定不能勾选(默认是勾选的,要去掉!)
这里添加的“镜像”就是所创建虚拟机的硬盘空间(我测试环境给了 150G)
虚拟机所占用的空间就是这个“镜像”所在的宿主机下路径所在的分区空间(也就是 /home/kvm/kvmstorage/,即宿主机的 home 分区)

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

 创建完成后如下:

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

3、宿主机网卡的桥接模式设置

 KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

注意下面的“设备”一项要填写桥接的物理网卡(即 br0 对应的那个网卡,这里填的是宿主机之前的内网卡 em3)

网关地址也一定要填写正确,不然虚拟机和宿主机同网段机器则会网络不通。

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

4、创建网络池

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

5、创建虚机

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

6、虚机挂载 ISO 镜像

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

下面选择系统安装时使用的镜像,这个镜像是上面放到 /home/kvm/kvmstorage 目录下的,如果下载了各种镜像版本放到里面,那么就可以在这里选择你想安装的版本了!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

[这里选择的镜像在上面提到过,保存到存储池目录/home/kvm/kvmstorage 里面的,重启虚拟机后在这里就能看到]

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

7、启动虚机
点击“启动”按钮后,打开虚机电源。

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

点击控制台按钮,进入操作系统安装界面

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

8、虚机 IP 地址设置
当虚机安装完成后,登陆虚拟机,给虚机设置静态 IP 地址

[root@vmserver001~]cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cat ifcfg-eth0
DEVICE=eth0
HWADDR=52:54:00:8C:6A:E1
TYPE=Ethernet
UUID=4f57c69c-a0f3-44e2-b75e-c37eb130f5b1
ONBOOT=yes
NM_CONTROLLED=no                                        #让 eth0 不受 networkmanager 的控制
BOOTPROTO=static
IPADDR=192.168.1.99
NETMASK=255.255.255.0
GATEWAY=192.168.1.1                

***********************************************************************************************

如何删除之前创建的存储池 kvm01?

操作记录如下:

[root@openstack qemu]# virsh pool-list –all
Name State Autostart
—————————————–
kvm01 active yes
vm1    active yes

首先取消存储池 kvm01 的激活

[root@openstack qemu]# virsh pool-destroy kvm01
Pool kvm01 destroyed

然后登陆 webvirtmgr 界面,在“存储池”里找到“kvm01”,先停止,再删除。

再次查看,就删除了存储池 kvm01 了

[root@openstack qemu]# virsh pool-list –all
Name State Autostart
—————————————–
vm1 active yes

***********************************************************************************************

  • webvirtmgr 克隆虚机操作

1、关闭正在运行的虚机

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

2、进入虚机配置界面,在克隆配置项,为新的虚机的“名字”,“MAC 地址”,“磁盘镜像”进行设置

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录继上一篇安装好 kvm 的 web 管理平台 webvirtMgr 后,接下来说说 WebVirtMgr 的日 ”/>

—————————————————————————————————
或者:(和上面的克隆是一样的)
直接克隆之前所创建虚拟机镜像(这个虚拟机必须是已经创建了的),然后用这个新克隆的镜像创建新的虚拟机,这也算是克隆虚拟机做法

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

然后创建虚拟机,创建中选用上面新克隆的硬盘镜像
—————————————————————————————————

3、webvirtmgr 界面里 启动克隆的新虚拟机,vnc 进入系统,对 /etc/udev/rules.d/70-persistent-net.rules 文件做如下修改

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

修改后

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

4、编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 修改虚机的网卡配置,为虚机分配新的 IP 地址

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

5、重启系统 使网卡重新注册,让配置生效

   reboot 

 

  • webvirtmgr 虚机磁盘扩容(新增磁盘)

1 关闭虚机

2 对虚机的 xml 文件的 disk 域添加如下代码

场景一:新增一块磁盘

 <disk type=’file’ device=’disk’>

      <driver name=’qemu’ type=’qcow2′ cache=’none’/> — 添加改行代码找到新增磁盘格式

      <source file=’/home/kvm/teststorage/entd01.img’/>  – 指定新增磁盘路径

      <target dev=’vda’ bus=’virtio’/>  – 指定磁盘设备名称,和传输总线类型

    </disk>

场景二:新增多块磁盘

已新增两块盘为例:

 <disk type=’file’ device=’disk’>

      <driver name=’qemu’ type=’qcow2′ cache=’none’/>

      <source file=’/home/kvm/teststorage/entd01.img’/>

      <target dev=’vda’ bus=’virtio’/>

    </disk>

    <disk type=’file’ device=’disk’>

      <driver name=’qemu’ type=’qcow2′ cache=’none’/>

      <source file=’/home/kvm/vm/waq02-clone.qcow2’/>

      <target dev=’vdb’ bus=’virtio’/>

    </disk>

3 启动虚机,然后在虚机系统内部对磁盘进行格式化,分区等操作。

*************************************

关闭和删除 br0

[root@openstack ~]# virsh net-list
Name State Autostart Persistent
————————————————–
br0 active yes yes

[root@openstack ~]# virsh net-undefine br0
error: Failed to undefine network br0
error: Requested operation is not valid: network is still active

[root@openstack ~]# virsh net-destroy br0
Network br0 destroyed

[root@openstack ~]# virsh net-list
Name State Autostart Persistent
————————————————–

一般情况下,虚拟机(下面称 vm)跟宿主机通过网桥方式进行通信,只要宿主机能联网,那么 vm 也就能顺利联网。

然而,我的测试环境下的网络环境比较特殊:

没有内网交换机设置,也就是说内网没有网关,宿主机默认的网关是外网地址的。

如下,宿主机开启了两个网卡:em1(外网),em2(内网,加入到网桥 br0 中)

[root@openstack ~]# ip addr           #查看宿主机的网卡配置情况
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 44:a8:42:21:a6:00 brd ff:ff:ff:ff:ff:ff
inet 103.10.86.17/26 brd 111.101.186.163 scope global em1
inet6 fe80::46a8:42ff:fe21:a600/64 scope link
valid_lft forever preferred_lft forever
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 44:a8:42:21:a6:01 brd ff:ff:ff:ff:ff:ff
inet6 fe80::46a8:42ff:fe21:a601/64 scope link
valid_lft forever preferred_lft forever
4: em3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 44:a8:42:21:a6:02 brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 44:a8:42:21:a6:03 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 44:a8:42:21:a6:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.17/24 brd 192.168.1.255 scope global br0
inet6 fe80::46a8:42ff:fe21:a601/64 scope link
valid_lft forever preferred_lft forever
8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:54:00:08:cf:9a brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe08:cf9a/64 scope link
valid_lft forever preferred_lft forever

[root@openstack ~]# route -n    #查看路由,默认路由网关是外网的
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
103.10.86.0 0.0.0.0 255.255.255.192 U 0 0 0 em1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 br0
0.0.0.0 111.101.186.1 0.0.0.0 UG 0 0 0 em1

 

由于内网网关不存在,并且 vm 和宿主机之间采用的是 bridge 桥接模式,所以 vm 不能通过桥接模式自行联网了。

要想使安装后的 vm 联网,还需要我们手动进行些特殊配置:

(1)宿主机部署 squid 代理环境,即 vm 对外的访问请求通过宿主机 squid 代理出去。

(2)vm 对内的访问请求通过宿主机 iptables 的 nat 转发进来或者 nginx 反向代理(proxy_pass)进来。

———————————————————————————————————
下面说的是 http 方式的 squid 代理;
如果是 https 的 squid 代理,可以参考我的另一篇技术博客内容:
http://www.cnblogs.com/kevingrace/p/5853199.html
———————————————————————————————————

一、宿主机的 squid 代理部署记录如下:

yum 命令直接在线安装 squid
[root@openstack ~]#yum install squid

安装完成后,修改 squid.conf 文件中的内容,修改之前可以先备份该文件
[root@openstack ~]# cd /etc/squid/
[root@openstack squid]#cp squid.conf squid.conf_bak
[root@openstack squid]#vim squid.conf
1. 找到文件中的 http_access deny all,将其修改为http_access allow all,表示所有用户都可以访问这个代理,
2. 找到http_port 3128,将其修改为http_port 192.168.1.17:3128,这里的 IP 及端口是 squid 的代理 IP(这里也就是宿主机的 ip)及端口,

然后执行下面命令,进行 squid 启动前测试
[root@openstack squid]# squid -k parse
2016/08/09 13:35:04| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2016/08/09 13:35:04| Processing: acl manager proto cache_object
…………..
…………..
2016/08/09 13:35:04| Processing: refresh_pattern . 0 20% 4320
2016/08/09 13:35:04| Initializing https proxy context

[root@openstack squid]# squid -z
2016/08/09 13:35:12| Creating Swap Directories

[root@openstack squid]# /etc/init.d/squid start
Starting squid: . [OK]

[root@openstack squid]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
………….
tcp 0 0 192.168.1.17:3128 0.0.0.0:* LISTEN 71848/(squid)
………….

 

 

**********************************

如果宿主机开启了 iptables 防火墙规则,则还需要在 /etc/sysconfig/iptables 里添加下面一行:

-A INPUT -s 192.168.1.0/24 -p tcp -m state –state NEW -m tcp –dport 3128 -j ACCEPT

 

然后重启 iptables 服务

[root@openstack ~]# /etc/init.d/iptables restart

 

二、虚拟机 VM 上进行 squid 代理配置

只需要在系统环境变量配置文件 /etc/profile 里添加下面一行即可(在文件底部添加)
[root@vmserver001 ~]# vim /etc/profile
…….
export http_proxy=http://192.168.1.17:3128

[root@vmserver001 ~]#source /etc/profile       #使上面的配置生效

 

测试虚拟机是否能对外访问:

[root@vmserver001 ~]# curl http://www.baidu.com         #能正常对外访问

[root@vmserver001 ~]#yum list                     #yum 能正常在线使用

[root@vmserver001 ~]#wget http://my.oschina.net/mingpeng/blog/293744       #能正常在线下载

 

*********************************************************************

虚拟机对内的访问请求通过宿主机 iptables 的 nat 端口转发实现:

比如:
宿主机:外网 ip-111.101.186.163,内网 ip-192.168.1.17
虚拟机 1:ip-192.168.1.150 
虚拟机 2:ip-192.168.1.151
虚拟机 3:ip-192.168.1.152

要求通过访问宿主机的 8088、8089、8090 端口,分别 nat 转发到虚拟机 1、虚拟机 2、虚拟机 3 的 80 端口

(1)虚拟机的操作
1)关闭防火墙 iptables
#/etc/init.d/iptables stop
#chkconfig iptables off
然后修改 /etc/sysconfig/selinux 里的“SELINUX=disabled”
#setenforce 0
#getenforce
#reboot

2)将三台虚拟机的网关 指向宿主机的内网地址(这一点很重要!)
#vim /etc/sysconfig/network-script/ifcfg-eth0
…..
GATEWAY=192.168.1.17

#/etc/init.d/network restart

 

(2)宿主机的操作
先开启宿主机的 IP 转发功能:
[root@openstack ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

 

设置 nat 转发规则

[root@kvmserver ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Tue Aug 16 09:48:24 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [449:63333]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 6080 -j ACCEPT                                  【6080 端口为 vnc 服务端口,一定也要打开!】
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8088 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8089 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8090 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m state –state NEW -m tcp –dport 3128 -j ACCEPT
#-A INPUT -j REJECT –reject-with icmp-host-prohibited                                                                 这两行注释掉,不然 nat 端口转发的时候会有问题!
#-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Aug 16 09:48:24 2016
# Generated by iptables-save v1.4.7 on Tue Aug 16 09:48:24 2016
*nat
:PREROUTING ACCEPT [9:32464]
:POSTROUTING ACCEPT [9:8580]
:OUTPUT ACCEPT [9:8580]
-A PREROUTING -p tcp -m tcp –dport 8088 -j DNAT –to-destination 192.168.1.150:80                       #注意,DNAT 规则一定要都放在 SNAT 规则之上!
-A PREROUTING -p tcp -m tcp –dport 8089 -j DNAT –to-destination 192.168.1.151:80
-A PREROUTING -p tcp -m tcp –dport 8090 -j DNAT –to-destination 192.168.1.152:80
-A POSTROUTING -d 192.168.1.150 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
-A POSTROUTING -d 192.168.1.151 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
-A POSTROUTING -d 192.168.1.152 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
COMMIT
# Completed on Tue Aug 16 09:48:24 2016

然后重启 iptables,使之生效!
[root@openstack ~]#service iptables restart

******************************
或者在终端命令行操作:
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp –dport 8088 -j DNAT –to-destination 192.168.1.150:80
[root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.150 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m state –state NEW -m tcp –dport 8088 -j ACCEPT

[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp –dport 8089 -j DNAT –to-destination 192.168.1.151:80
[root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.151 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m state –state NEW -m tcp –dport 8089 -j ACCEPT

[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp –dport 8090 -j DNAT –to-destination 192.168.1.152:80
[root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.152 -p tcp -m tcp –sport 80 -j SNAT –to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m state –state NEW -m tcp –dport 8090 -j ACCEPT

 

保存规则,然后重启 iptables
[root@openstack ~]#service iptables save

[root@openstack ~]#service iptables restart

# 终端命令行里添加规则后,要先 save 保存,然后重启~

#/etc/sysconfig/iptables 文件里添加规则后,要 restart 重启使之生效~

# 查看设置的规则
[root@openstack ~]#iptables -L #查看 filter 表的规则
[root@openstack ~]#iptables -L -t nat #查看 nat 表的规则

**********************
注意:
nat 端口转发设置成功后,记得在 /etc/sysconfig/iptables 文件里注释掉下面两行!不然 nat 转发会有问题!一般如上面在 nat 转发规则设置好并 save 和 restart 防火墙之后就会自动在 /etc/sysconfig/iptables 文件里删除掉下面两行内容了。
#-A INPUT -j REJECT –reject-with icmp-host-prohibited
#-A FORWARD -j REJECT –reject-with icmp-host-prohibited

*********************************************************************************************

同样的,如果是其他端口的 nat 转发,比如想访问虚拟机 1 的数据接 3306 端口。
可以设置:宿主机 63306-> 虚拟机 3306

宿主机操作:
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp –dport 63306 -j DNAT –to-destination 192.168.1.150:3306
[root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.150 -p tcp -m tcp –dport 3306 -j SNAT –to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m state –state NEW -m tcp –dport 63306 -j ACCEPT #防火墙放行 63306 端口
[root@openstack ~]#/etc/init.d/iptables save

[root@openstack ~]#/etc/init.d/iptables restart

虚拟机需要提前在 mysql 里授权给宿主机

*********************************************************************************************

*********************************************************************************************

注意:

如上面访问宿主机 8080 端口转发到虚拟机的 80 端口,除了上面使用 iptables 的 nat 转发规则实现,也可以使用 nginx 的 proxy_pass 反向代理实现。

在宿主机的 nginx 配置如下:

[root@bastion-IDC ~]# cat /Data/app/nginx/conf/vhosts/80-vm.conf
server {
listen 8088;
server_name localhost;
location / {
root /opt/;
index index.html index.htm;
proxy_pass http://192.168.1.150/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}

}

重启 nginx 服务,iptables 开放 8080 端口

这样,访问宿主机 8080,即 http://111.101.186.163:8080 显示结果就是 http://192.168.1.150 的结果

*********************************************** 

除了用 nginx 反向代理,还可以使用 haproxy 反向代理(在其他篇章中有介绍)

一、背景说明 

在之前的篇章中,提到在 webvirtmgr 里安装 linux 系统的 vm,下面说下安装 windows 系统虚拟机的操作记录:

由于 KVM 管理虚拟机的硬盘和网卡需要 virtio 驱动,linux 系统默认支持 virtio 驱动,所以安装 linux 系统虚拟机的时候只需要加载 iso 镜像即可。

但是 windows 系统默认不支持 virtio 驱动,需要另外下载 virtio 驱动, 在安装 windowss 虚拟机过程中,需要选择 virtio 驱动路径,继而加载驱动,最后才可以识别到驱动。

下面是安装 windows server 2008 虚拟机的操作过程:

二、准备工作
1)UltraISO 软件下载地址

软碟通 UltraISO v9.5.3.2901 简体中文完美注册版  http://www.linuxidc.com/Linux/2012-11/74577.htm?_t=t

2)virtio-win-0.1-30.iso 下载地址【也可以自行下载其他高版本】
http://pan.baidu.com/s/1hsoJzNY  提取密码:ea9y

virtio 的 iso 文件中包括三种驱动:
1)网卡驱动
2)硬盘驱动
3)用来实现内存膨胀的驱动

三、安装记录

 (1)下载 UltraISO 软件和 virtio 驱动,安装 UltraISO 软件,并在里面打开 virtio-win-0.1-30.iso 文件,在本地创建文件夹 virtio-win-0.1-30,点击 UltraIOS“操作”-“提取”将其提取到本地文件夹 virtio-win-0.1-30 下:

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

从图中可以看出,这个 virtio-win-0.1-30 驱动集成了 win7、xp、wlh、wnet 等多个 win 版本系统的驱动,其中,各驱动对应关系如下,在安装的时候,根据所安装版本选择相应驱动目录:
wxp: winxp 磁盘驱动
wnet: win2003 磁盘驱动
win7:win7 磁盘驱动
wlh: win2008 磁盘驱动
xp: win xp/2003 网卡驱动
vista: win vista/7/2008 网卡驱动

(2)使用 UltraISO 软件打卡 windows_server_2008.iso 镜像文件,并将 virtio-win-0.1-30 文件夹复制到下图中路径下,比如放到镜像里的 support->tools 下(也可以其他路径,自己定义)
点击 UltraIOS 的“操作”->“添加目录”,将上面(1)步中存放在本地 virtio-win-0.1-30 文件夹添加进去:

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

在上面将 virtio-win-0.1-30.iso 里内容添加到 windows server 2008 的 iso 镜像里后,另存为一个新的 iso。“文件”->“另存为”

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

(3)接着,参照“http://www.cnblogs.com/kevingrace/p/5739009.html”文章,在 webvirtmgr 里添加 windows server2008 镜像(也就是上面保存的新的涵盖 virio 内容的 iso 镜像),安装虚拟机,然后进入 webvirtmgr 的控制台查看操作过程:

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

选在“加载驱动程序”

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

浏览,找到驱动路径

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

选择驱动所在文件夹(在第(2)步添加的路径)

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

选择硬盘驱动程序:
a、第一个为网卡驱动
b、 第二个为硬盘驱动(选这个)(不过最好是全部选中,这样在安装后就不用在手动加载两外两个驱动了)
c、第三个是用来实现内存膨胀的驱动

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

这样就可以认到硬盘驱动了

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

系统装完之后,进入系统,开启远程桌面,并安装网卡驱动(默认安装之后没有网卡驱动)

“更改驱动程序软件”——修改网卡驱动类型

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

也就是找到上面第(2)步中放到 windows_server_2008.iso 镜像文件中的 virtio-win-0.1-30 驱动路径(“support“->”tools“->”virtio-win-0.1-30“->”wlh“->”AMD64“)

注意:因为在此我安装的是 64bit 的 OS,所以选择的是 AMD64,如果你安装的 OS 是 32bit,建议你选择 X86

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

这样,网卡驱动就加载上了,然后配置 ip 就可以跟宿主机通信了。

—————————————————————————————————-
特别注意:
上面其实就是下载 windows server 2008 的 iso 镜像和 virtio 驱动镜像,然后将 virtio 驱动镜像集成到 windows server 2008 镜像内,最后安装虚拟机

下面提供一个下载地址:
已经集成 VirtIO 驱动的各版本 Windows 的 ISO 镜像

http://www.hostloc.com/thread-242194-1-1.html

国内用户专用的”集成 VirtIO 驱动的 windows 版本“下载地址:
http://pan.baidu.com/share/init?shareid=948450002&uk=2451828834(提取密码 mtx2)

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

————————————————————————————————-

——————————————————————————————————
上面安装的 windows 虚拟机(ip:192.168.1.180)如若不能联网,可以通过宿主机(110.111.10.7,内网 ip 为 192.168.1.7)的 squid 代理上面

1)宿主机安装配置好 squid,3128 端口运行客户机连接

2)虚拟机配置 ip

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

浏览器里配置 squid 代理。”工具“->“Internat 属性 ”->”连接 ”->“局域网(LAN)设置”

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

以上设置后,windows 虚拟机就可以访问 http/https 的页面了

——————————————————————————————————
如何要想远程桌面连接这台 windows 虚拟机,则需要在宿主机上进行 nat 端口转发设置(远程桌面连接的端口是 3389)

[root@kvm-server conf]# cat /etc/sysconfig/iptables
……….
*nat
:PREROUTING ACCEPT [6:966]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp –dport 3389 -j DNAT –to-destination 192.168.1.180:3389
-A POSTROUTING -d 192.168.1.180/32 -p tcp -m tcp –sport 3389 -j SNAT –to-source 192.168.1.7

………
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:560]
-A INPUT -p tcp -m state –state NEW -m tcp –dport 3389 -j ACCEPT

[root@kvm-server conf]# /etc/init.d/iptables restart

========================
或者
[root@kvm-server conf]# iptables -t nat -A PREROUTING -p tcp -m tcp –dport 3389 -j DNAT –to-destination 192.168.1.180:3389
[root@kvm-server conf]# iptables -t nat -A POSTROUTING -d 192.168.1.180/32 -p tcp -m tcp –sport 3389 -j SNAT –to-source 192.168.1.7
[root@kvm-server conf]# /etc/init.d/iptables save
========================

之前介绍了在 webvirtmgr 平台下创建 CentOS,windows server 2008 的虚拟机,今天说下创建 Ubuntu 虚拟机的过程。

(1)首先下载 ubuntu16.04 的 iso 镜像放到 /usr/local/src 下面
[root@kvm-server src]# ll ubuntu-16.04-desktop-amd64.iso
-rw-r–r– 1 root root 1485881344 Apr 21 2016 ubuntu-16.04-desktop-amd64.iso

(2)将镜像拷贝到存储池目录 /home/kvm/kvmstorage 下(参考之前的文章:http://www.linuxidc.com/Linux/2016-10/136589p2.htm)
[root@kvm-server src]# cp ubuntu-16.04-desktop-amd64.iso /home/kvm/kvmstorage/

切换到存储池存放目录下,发现有 centos,windows 镜像,也有了 ubuntu 镜像
[root@kvm-server src]# cd /home/kvm/kvmstorage/
[root@kvm-server kvmstorage]# ll
total 154171796
-rw-r–r– 1 qemu qemu 3916431360 Sep 22 16:47 CentOS-6.8-x86_64-bin-DVD1.iso
-rw-r–r– 1 qemu qemu 4329570304 Sep 27 16:01 CentOS-7-x86_64-DVD-1511.iso
-rw-r–r– 1 qemu qemu 3511975936 Sep 30 10:33 cn_windows_server_2008_r2.iso
-rw——- 1 qemu qemu 68263346176 Oct 24 17:48 disk001.img
-rw——- 1 qemu qemu 63845433344 Oct 24 17:48 disk002.img
-rw——- 1 qemu qemu 2504785920 Oct 24 17:48 disk003.img
-rw——- 1 qemu qemu 2730491904 Oct 24 17:47 disk004.img
-rw——- 1 qemu qemu 2323709952 Oct 24 17:48 disk005.img
-rw-r–r– 1 qemu qemu 1485881344 Oct 24 14:35 ubuntu-16.04-desktop-amd64.iso

(3)登陆 webvirtmgr 界面,可以在“存储池”里面发现 ubuntu 的镜像

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

 KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

然后点击“添加镜像”创建虚拟机安装过程中需要的硬盘镜像。

创建虚拟机的过程在此省略 ….. 创建步骤参考之前的博客:http://www.cnblogs.com/kevingrace/p/5739009.html

———————————————————————————————-
下面说下 ubuntu 虚拟机创建成功后的几个操作注意点

(1)通过 webvirtmgr 控制台进入 ubuntu 安装界面,默认 ubuntu 虚拟机安装成功后,是需要手动设置 ip 的:

   sudo 切换到 root 用户 下,再使用 ifconfig -a(查看所有适配器的命令) 命令发现:ubuntu16.04 下的默认网卡是 ens3,而不是我们习惯上认为的 eth0!!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

(2)手动设置 ip。ubuntu 下的网卡配置文件是 /etc/network/interface,这也和 centos 系统下的不一样。网卡设置成宿主机的 ip(即 192.168.1.7),设置好之后,再重启网卡服务:

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

再次查看 ip,发现 ip 已经生效了,发现可以跟宿主机的 ip 相互 ping 通了。

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

(3)这个时候,在宿主机上能 ping 通上面的虚拟机 192.168.1.181,但是发现 ssh 连接不上!!!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

ssh 不通,telnet 192.168.1.181 22 也是不通!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

最后发现,虚拟机的 ssh 服务压根没有安装。因为 ubuntu 服务器刚安装好,默认是没有启用 ssh 服务的!

现在我们手动启用 ssh 服务:

1)这时候虚拟机有内网 ip,可以和宿主机 192.168.1.7 互通,可以通过 squid 代理上网。
根据之几篇的设置可知,宿主机上部署了 squid 代理服务
http://www.cnblogs.com/kevingrace/p/5753193.html

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

2)安装 openssh-server 服务 (上面已经设置了通过宿主机的 squid 代理上网,所以这里可以使用 apt-get 在线安装)
在安装前,一定要 update 更新 apt-get 源,这个很重要!不然安装时会提示没有 openssh-server 这个软件包!
在 ubuntu 系统里,在 apt-get 安装工具前,最好都 apt-get update 更新下源。

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

3)接着修改 root 密码。这个不要忘了!
在虚拟机安装过程中的密码只是登陆 ubuntu 服务器的密码,但不是 root 账号的密码!

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

4)修改 ssh 配置文件 /etc/ssh/sshd_config,允许以 root 用户通过 ssh 登录:
找到:PermitRootLogin prohibit-password
修改:PermitRootLogin yes

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

5)最后关闭防火墙。
ubuntu 下对防火墙的操作,和 centos 下大不相同,如下:
—————————————————
关闭 ubuntu 的防火墙
ufw disable

开启防火墙
ufw enable

卸载了 iptables
apt-get remove iptables

关闭 ubuntu 中的防火墙的其余命令
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
—————————————————

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

6)最后测试,发现从宿主机上可以 ssh 成功登陆虚拟机了

KVM 虚拟化管理平台 WebVirtMgr 部署 - 完整记录

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136589.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计42198字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中