由于公司需要不得不要搭建Linux环境,自己做的课题是ELK日志分析相关。因此要大干一场,一下子计划采用近10台机器来做试验,但由于我这里只有三台物理机,所以我就搞起了虚拟化kvm。在Linux里面要安装三台Linux系统。满足实验的要求来。本次我们讲解的环境全部都是在文本界面下安装,没有使用图形桌面和VNC工具图形展示。

1、首先是准备一台物理机,安装上去Linux操作系统,这里使用centos7.5版本。在安装kvm之前需要检测系统CPU是否支持虚拟化

[root@chaofeng ~]# grep -Ei '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 rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm epb tpr_shadow vnmi ept vpid xsaveopt dtherm ida arat pln pts

如果有过滤出vmx或svm关键字就代表支持虚拟化,vmx是Intel的CPU,svm是AMD的CPU

2、开始安装kvm环境,此处需要epel的yum源,如果系统没有安装,可使用yum install -y epel-release来一键安装或者安装阿里云的epel源(点击)也可以。

yum install -y kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install

此处稍微花费点时间。

3、安装好之后,我们设置为开机启动项

#systemctl enable libvirtd
#reboot

重启过后检测是否加载kvm模块

[root@chaofeng boot]# lsmod | grep kvm
kvm_intel
kvm kvm_intel
irqbypass kvm

查看kvm程序有没有真正启动。

[root@chaofeng network-scripts]# ps aux | grep libvirtd
root 0.0 0.7 ? Ssl : : /usr/sbin/libvirtd
root 0.0 0.0 pts/ S+ : : grep --color=auto libvirtd

如果没有的话,我们就使用systemctl  start  libvirtd来启动程序。

4、配置网卡

我自己选择的是桥接模式组件网络,因为我需要连同各个不同物理机上的虚拟机才行。关于桥接模式与NAT模式的区别,大家可以自行百度查看。我这里仅仅列出实现的方法。

在桥接模式中,三台虚拟机使用的是同一个桥接网卡。

3.1、首先是复制一份物理网卡ens33的配置文件并命名为ens33

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0

3.2、修改ens33网卡配置文件

[root@chaofeng network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ccecf4a6-b71e-43ec-bd26-78af2a3f6ba5
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.15.10
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=192.168.1.1
BRIDGE=br0

主要是增加最后一行内容

3.3、修改br0配置文件

[root@chaofeng network-scripts]# cat ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
#UUID=ccecf4a6-b71e-43ec-bd26-78af2a3f6ba5
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.15.11
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=192.168.1.1

主要是修改上面的三处。我这里是配置为静态的IP,也可以配置为dhcp自动获取ip地址。

然后重启网卡。

systemctl  restat   network

3.4、然后查看一下网卡信息

[root@chaofeng network-scripts]# ip addr
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN group default qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast master br0 state UP group default qlen
link/ether :0c::ed::ac brd ff:ff:ff:ff:ff:ff
: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc noqueue state UP group default qlen
link/ether :0c::ed::ac brd ff:ff:ff:ff:ff:ff
inet 192.168.15.11/ brd 192.168.15.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 fe80::adfd:e8a9:917c:/ scope link noprefixroute
valid_lft forever preferred_lft forever
: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu qdisc noqueue state DOWN group default qlen
link/ether ::::f5:af brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/ brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
: virbr0-nic: <BROADCAST,MULTICAST> mtu qdisc pfifo_fast master virbr0 state DOWN group default qlen
link/ether ::::f5:af brd ff:ff:ff:ff:ff:ff
: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast master br0 state UNKNOWN group default qlen
link/ether fe::::5f:1b brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe30:5f1b/ scope link
valid_lft forever preferred_lft forever
: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast master br0 state UNKNOWN group default qlen
link/ether fe::::a1:d8 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe92:a1d8/ scope link
valid_lft forever preferred_lft forever
: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast master br0 state UNKNOWN group default qlen
link/ether fe::::: brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe14:/ scope link
valid_lft forever preferred_lft forever

我们主要关注的是ens33网卡和br0桥接网卡。你会发现ens33原来的ip是不显示的,这是因为br0网卡占用了,并且此时物理机上的Linux系统的ip是被br0覆盖掉的,原先的ip地址不能再使用了。此时我们看到br0的ip地址就是这台物理机ip地址,这不是虚拟机的地址,这点大家要明白。况且我还没有开始创建虚拟机。

剩下的比如virbr0以及virbr0-nic则表示nat的地址,我们这次不使用这种NAT转换的网络模式,因此不做解释。

但是下面的vnet0、vnet1、vnet2确实很重要的东西,从上面我们知道br0代表是网桥,那么为什么把他叫做 “网桥” 呢?因为它在我们的物理机和虚拟机之间的网络通讯起着一个桥梁的作用,没有它,在桥接模式下我们的虚拟机将无法与物理机在同一个网络中。从我的机子来说,ens33是物理机的网卡,而br0则是网桥,那么vnet0、vnet1则是一个个的虚拟网卡,并且vnet0对应第一台物理机的网卡eth0,vnet1则是对应第二胎物理机的网卡eth0。虽然我们的虚拟机和物理机在同一个网络并且都拥有独立的IP,但是他们之间的通信却不是两台物理机之间的通信那么简单,大题是这样的:

而我们的桥接模式中的网络架构大概是这样的:

所以说br0与vnet0、vnet1发挥着巨大的作用,我们一定要搞清楚他。

3.5、查看网桥接口

请注意:你的此时可能还没有vnet0、vnet1、vnet2、vnet3这几个虚拟接口interface名称,这几个是当我们已经创建好虚拟机的时候才会有的。

4、开始安装虚拟机。

virt-install --name=elk01 --memory=,maxmemory= --vcpus=,maxvcpus= --os-type=linux --os-variant=rhel7 --location=/data/CentOS--x86_64-DVD-.iso --disk path=/data/elk01.img,size= --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

解释说明一下:

--name 指定虚拟机的名称
--memory 指定分配给虚拟机的内存资源大小
maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
--vcpus 指定分配给虚拟机的CPU核心数量
maxvcpus 指定可调节的最大CPU核心数量
--os-type 指定虚拟机安装的操作系统类型
--os-variant 指定系统的发行版本
--location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
--disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
--bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
--graphics 指定是否开启图形
--console 定义终端的属性,target_type 则是定义终端的类型
--extra-args 定义终端额外的参数

如果你的物理机系统是centos6,则上面的命令需要改正,如下所示:

virt-install --name=elk01 --ram= --vcpus=,maxvcpus= --os-type=linux --os-variant=rhel7 --location=/data/CentOS--x86_64-DVD-.iso --disk path=/data/elk01.img,size= --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

如果你安装过程中出现错误:

[root@centos6-chaofeng2 ~]# virt-install --name=elk04 --ram= --vcpus=,maxvcpus= --os-type=linux --os-variant=rhel7 --location=/usr/local/src/CentOS--x86_64-DVD-.iso --disk path=/data/elk04.img,size= --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
ERROR Guest name 'elk04' is already in use.

这说明你的虚拟机的名字冲突了,可以换个名字,如果执意要使用这个名字,需要把曾经安装过的虚拟机elk04卸载掉。方法是

[root@centos6-chaofeng2 ~]# virsh undefine elk04
Domain elk04 has been undefined

4.1、接下来要开始安装了。

只要我们看到的中括号里面的“!”号,都表示要进行设置。这些参数与我们在vmwear虚拟机里面安装都是一模一样的,只不过这里没有图形化,全部都是文本而已。当你选择好一个之后,中括号里面会变成“x”号,说明我们已经设置好这一项了。我一般都设置上图中的1、2、3、5、8这五项内容。

依次选择好之后,我们就可以按下“b”键开始安装了。当看到下图界面的时候,表示安装成功了,

此时按下回车键,重启虚拟机就可以使用了。

在虚拟机里面,我们按下 ctrl+]  组合按键表示退出当前虚拟机,但这并不是关机虚拟机。不过仅仅只有这一些命令是不够我们操作kvm虚拟机的,还需要学习其他的命令。

5、管理虚拟机的常用命令。

# virsh console study01  # 进入指定的虚拟机,进入的时候还需要按一下回车
# virsh start study01 # 启动虚拟机
# virsh shutdown study01 # 关闭虚拟机
# virsh destroy study01 # 强制停止虚拟机
# virsh undefine study01 # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
# virsh autostart study01 # 设置宿主机开机时该虚拟机也开机
# virsh autostart --disable study01 # 解除开机启动
# virsh suspend study01 # 挂起虚拟机
# virsh resume study01 # 恢复挂起的虚拟机

6、设置虚拟机联网。

进入到/etc/sysconfig/network-scripts目录下,找到ifcfg-eth0这个网卡配置文件,然后编辑这一行ONBOOT=yes,将no改为yes,然后重启网卡systemctl restart network即可。

此时我们就已经安装好了这样的一台虚拟机。但是如果是安装多个虚拟机的话,我们可以使用克隆来解决就行。如果还是自己手动安装的话,有一个需要注意的就是虚拟网卡的问题。就是在virt-install安装的时候,参数:--bridge仍然还是br0,即"--bridge=br0",为什么呢?因为桥接模式下,多个虚拟机使用的是同一块网卡,因此需要我们设置为br0。因为我在这里跳坑啦,所以给大家说明白。

其次,在安装第二台虚拟机的时候,主要修改的参数主要是:--name="elk02"  、--disk path="/data/elk02.img"这两个参数。这两个是必须修改项,其他的可酌情修改。

7、克隆虚拟机

[root@centos6-chaofeng2 ~]# virt-clone -o elk04 -n elk05 -f /data/elk05.img
Cloning elk04.img % [=========================================- ] 2.8 MB/s | GB : ETA

-o:后跟旧的系统的名称

-n:后跟克隆后的新系统的名称

-f:后跟克隆后的系统存放的位置

kvm企业级虚拟化环境部署的更多相关文章

  1. 在 CentOS 7上Virtualbox+phpVirtualBox完整虚拟化环境部署

    一.phpVirtualBox简介      VirtualBox是一套为不同操作系统而设的 x86 虚拟化产品.它是一个机器/硬件的虚拟化产品,功能上与 VMware Server.Parallel ...

  2. kvm虚拟化环境的搭建

    首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...

  3. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...

  4. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...

  5. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip

    之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...

  6. KVM虚拟化环境准备

    1. 概述2. 环境准备2.1 硬件环境2.2 软件环境2.2.1 YUM安装软件包2.2.2 环境检查2.2.3 启动libvirtd服务2.3 网络环境2.3.1 复制网卡配置文件2.3.2 修改 ...

  7. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置

    继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...

  8. kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

    平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...

  9. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(6)--在线调整虚拟机的大小

    前面提到过openstack环境部署及创建虚拟机的完整过程,然后有时候会发现创建的虚拟机规格太小,满足不了业务需求:亦或是虚拟机规格太大,容易造成资源浪费.于是就有了在线拉伸虚拟机规格的需求.所以,今 ...

随机推荐

  1. PL/SQL Developer从11.0.6版本开始32/64为之区分

    PL/SQL Developer从11.0.6版本开始32/64为之区分 在PL/SQL Developer11.0.6版本之前,64位Windows操作系统在使用PL/SQL Developer都未 ...

  2. dart之旅(二)- 内建类型

    目录 number 类型 字符串 布尔类型 像大多数语言一样,dart 也提供了 number,string,boolean 等类型,包括以下几种: numbers strings booleans ...

  3. 【Shell实战】定期清理日志文件的shell脚本

    功能描述:清理/var/log/路径下的messages历史日志文件(messages-date),但不清理messages文件本身 依赖要求:服务器上安装了bc模块 # clean_logs.sh ...

  4. apache log4j打印日志源码出口

    Throwable.class: public void printStackTrace(PrintStream s) { synchronized (s) { s.println(this); St ...

  5. php扩展编译方法

    linux下php已经编译,如何再为php增加新的扩展通过php自带的phpize,如我的phpize在/usr/local/php/bin/phpize1.到软件的官方或pecl.php.net去下 ...

  6. BizTalk Orchestration execute Flat file disassembler ReceivePipeline

    需求是这样,在一个inbound XML中有个一点节点使用平文件的方式存放,还要解析比如固定长度或根据特殊字符截取字段 也就是需要在流程里面先把输入的XML的节点先读出来,这个方式有很多可以直接升级属 ...

  7. ReactNative常用组件汇总

    导航组件react-navigation: https://github.com/react-community/react-navigation 网络请求asios: https://github. ...

  8. 微信分享JSSDK-invalid signature签名错误的解决方案

    核对官方步骤,确认签名算法. 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认con ...

  9. Algolia使用教程 , 超详细傻子看都会

    框架描述 发现网上Algolia这块的资料较少,就花了点时间从官网上整理了下,总结了几项常用的功能用法. 现在比较有名的Algolia提供了云搜索的服务.具体办法是我们将数据库的信息以JSON的格式上 ...

  10. openssl passwd

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 该伪命令用于生成加密的密码. [root@xuexi tmp]# whati ...