虚拟化之KVM的部署、应用、调优

传统数据中心面临的问题:

资源使用率低

资源分配不均

自动化能力差

云计算介绍:

云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

tomcat提供几个端口?

全虚拟化:直接使用底层的硬件 比如:KVM

半虚拟化:通过一个中间件,来调用底层的硬件 比如:xen

硬件虚拟化:

软件虚拟化:

应用虚拟化:

一个机器跑八个tomcat和跑八个虚拟机跑八个tomcat

kvm是一个内核模块

qemu是将网络IO和硬盘IO的虚拟化

安装软件


[[email protected] ~]# yum -y install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install

检查是否支持虚拟化


[[email protected] ~]# grep -E "(vmx|svm)" /proc/cpuinfo

vmx:inter

svm:amd

[[email protected] ~]# lsmod  | grep kvm

kvm_intel             148081  0

kvm                   461126  1 kvm_intel

创建硬盘


[[email protected] ~]# qemu-img create -f raw /opt/CentOS-7.1-x86_64.raw 10G

Formatting ‘/opt/CentOS-7.1-x86_64.raw‘, fmt=raw size=10737418240

启动libvirtd服务


[[email protected] ~]# systemctl enable libvirtd.service

[[email protected] ~]# systemctl start libvirtd.service

[[email protected] ~]# systemctl status libvirtd.service

磁盘拷贝


[[email protected] ~]# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso

建立虚拟机


[[email protected] ~]#virt-install --name CentOS-7.1-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1.iso --disk path=/opt/CentOS-7.1-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

修改网卡的名称(使用tab键)


net.ifnames=0 biosdevname=0

基本的操作


关闭虚拟机

virsh shudown CentOS-7.1-x86_64(主机名)

virsh destroy CentOS-7.1-x86_64(主机名)

打开虚拟机

virsh start CentOS-7.1-x86_64

删除虚拟机

virsh undefine CentOS-7.1-x86_64

查看虚拟机(全部)

virsh list  --all

编辑虚拟机

virsh edit CentOS-7.1-x86_64

挂起

virsh suspended CentOS-7.1-x86_64

恢复

virsh resume CentOS-7.1-x86_64

查看正在运行的虚拟机:


ps -aux |grep kvm

kvm虚拟机就是一个KVM进程。

cd /etc/libvirt/qemu

CPU热添加

virsh edit 主机名     这里设置的最大是4个

<vcpu placement=‘auto‘ current="1">4</vcpu>

virsh shutdown 主机名

virsh start 主机名

热添加,添加两个cpu

virsh setvcpus 主机名 2 --live

网络配置


只需要将虚拟机的网卡启动就可以,他的KVM机器会启动一个dhcp服务器。

[[email protected] network-scripts]# ps aux|grep dns

nobody     2248  0.0  0.0  15524   880 ?        S    14:07   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --dhcp-script=/usr/libexec/libvirt_leaseshelper

存在这里面

cat /var/lib/libvirt/dnsmasq/default.conf

strict-order

pid-file=/var/run/libvirt/network/default.pid

except-interface=lo

bind-dynamic

interface=virbr0

dhcp-range=192.168.122.2,192.168.122.254

dhcp-no-override

dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases

dhcp-lease-max=253

dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile

addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts

按装 ifconfig工具

yum -y install net-tools

CPU热添加(只能是CentOS7)

要实现CPU热添加,就必须首先设置CPU的总数,且热添加的总数不能超过CPU的综合数。

方式一:修改xml文件


[[email protected] network-scripts]# virsh  edit CentOS-7.1-1-x86_64

原:<vcpu placement=‘static‘>1</vcpu>

现:<vcpu placement=‘auto‘ current=‘1‘>4</vcpu>

VCPU匹配方式是自动,当前是1,最大是4

需要重启才能实现

在虚拟机中查看

cat /proc/cpuinfo |grep "processor"|wc -l

1

在kvm中设置cpu

virsh setvcpus CentOS-7.1-x86_64 2 --live

如果没有的话,需要把上面的O置为1

virsh setvcpus CentOS-7.1-x86_64 3 --live

热添加只能加,不能减。(开机状态)

方式二:在安装的时候


[[email protected] network-scripts]# virt-install --help |grep cpu

--vcpus VCPUS         Number of vcpus to configure for your guest. Ex:

--vcpus 5

--vcpus 5,maxcpus=10,cpuset=1-4,6,8

--vcpus sockets=2,cores=4,threads=2,

内存热膨胀和压缩,总数不能超过最大内存


[[email protected] network-scripts]# virsh  edit CentOS-7.1-1-x86_64

最大内存<memory unit=‘KiB‘>4048576</memory>

当前内存<currentMemory unit=‘KiB‘>1048576</currentMemory>

查看

virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon

设置

virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon 600

#硬盘:

全镜像模式  稀疏模式

raw         qcow2

qemu-img

[[email protected] opt]# brctl addbr br0

[[email protected] opt]# brctl show

[[email protected] ~]# brctl addif br0 eth0 && ip addr del dev eth0 10.0.0.111/24 && ifconfig br0 10.0.0.111/24 up && route add default gw 10.0.0.2 && iptables -F

http://www.unixhot.com/article/4

[[email protected] ~]# brctl addbr br0

[[email protected] ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

br0             8000.000000000000       no

virbr0          8000.525400035327       yes             virbr0-nic

[[email protected] ~]# brctl addif br0 eth0

[[email protected] ~]# ip addr del dev 10.0.0.100/24

[[email protected] ~]# ifconfig br0 10.0.0.100/24 up

关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

查看selinux

getsebool

全虚拟化  半虚拟化

原本实现方式:

虚拟机的虚拟内存===>虚拟机的物理内存

宿主机的虚拟内存===>宿主机的物理内存

现在实现方式:EPT(inter)

虚拟机的虚拟内存=====EPT=====宿主机的物理内存

内存的优化

内存寻址:EPT

内存合并:KSM

大页内存: khugepaged  把连续的4K内存合并成为2M

内存的合并

[[email protected] ~]# ps aux |grep ksmd

root        280  0.0  0.0      0     0 ?        SN   20:37   0:00 [ksmd]

大页内存

[[email protected] ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

[[email protected] ~]# ps aux |grep khugepaged

root        281  0.0  0.0      0     0 ?        SN   20:37   0:02 [khugepaged]

I/O优化:

Virtio 半虚拟化

I/O调度算法:

CentOS7上默认有三种:noop deadline cfq

[[email protected] ~]# dmesg |grep scheduler

[    1.385817] io scheduler noop registered

[    1.385820] io scheduler deadline registered (default)

[    1.385851] io scheduler cfq registered

默认是deadline

[[email protected] ~]# cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

修改成cfg

[[email protected] ~]# echo cfq > /sys/block/sda/queue/scheduler

[[email protected] ~]# cat /sys/block/sda/queue/scheduler

noop deadline [cfq]

永久的修改:改内核参数

[[email protected] ~]# elevator=noop

SSD的话,一定要改成noop,那样性能是最好的。

概念链接:

什么是RestAPI

http://www.ruanyifeng.com/blog/2014/05/restful_api.html

什么是SOA

http://baike.baidu.com/subview/21305/5033544.htm

什么是消息队列

http://baike.baidu.com/view/262473.htm

什么是对象存储

http://www.zhihu.com/question/21536660

时间: 2024-11-01 16:14:53

虚拟化之KVM的部署、应用、调优的相关文章

KVM虚拟化(KVM的部署及使用)

1.虚拟化 1.1概念 将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器等),予以抽象 .转换后呈现出来并可供分区.组合为一个或多个电脑配置环境. 1.2应用数据化的原因 1)同一台物理机运行多个不同版本应用软件 2)硬件依赖性较低 3)便于数据迁移 1.3虚拟化的优势 1)提高应用兼容性 2)降低运营成本 3)加速应用部署 4)提高服务器可用性 5)提高资源利用率 6)动态调度资源 7)降低能源消耗 2.KVM 2.1KVM 1)KVM是开源软件 2)是x86架构且硬件支持虚拟化技术

ElasticSearch5.6.5集群部署及调优、Head和Bigdesk插件安装

一.简介: Elasticsearch是一个基于Apache Lucene的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它: ·       分布式的实时文件存储,每个字段都被索引并可被搜索 ·        分布式的实时分析搜索引擎 ·        可以扩展到上百台服务器,处理PB级结构化或非结构化数据 二.环境准备 主机 系统 配置 IP nod

ES集群部署及调优

系统:Centos6ES版本:6.4.0服务器三台172.16.0.8172.16.0.6172.16.0.22 部署jdk解压jdk放在/data目录,/data/jdk配置环境变量,/etc/proifle里面加入如下 export JAVA_HOME=/data/jdk export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH s

sparkStreaming程序的的部署、调优

(1)部署 部署方式:spark standalone集群.yarn集群.meoss集群...driver的HA:如果希望driver程序在失败之后自动重启,那么需要在程序中使用getOrcreate方法重构streamingContext对象,以及在spark-submit中添加参数. Checkpoint目录的设置:如果程序使用到checkpoint目录,就必须配置一个hdfs兼容的文件系统作为checkpoint目录,因为程序是分布式的,不能将checkpoint单独的设置在某一个节点接收

部署和调优 3.3 dns安装配置-3

只有一台DNS服务器是不保险的,现在给他配置个从服务器. 在另外一台虚拟机上安装配置DNS服务器.先查看虚拟机ip为:192.168.1.111 ifconfig 给从安装bind和dig命令 yum install -y bind yum install -y bind-utils 打开主配置文件 vim /etc/named.conf listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; 改为 // listen-o

部署和调优 2.1 squid正向代理

安装squid yum install -y squid Squid 官方网站为 http://www.squid-cache.org 打开注释掉的 cache_dir ufs /var/spool/squid 100 16 256 缓存目录的位置,大小100M 一级子目录16个 二级子目录256个. 在下面添加一行 cache_mem 128 MB 为了加快速度,把缓存的东西放内存里,128M 在最后添加一行 refresh_pattern \.(jpg|png|gif|js|css|mp3|

部署和调优 1.7 samba 部署和优化-1

Samba服务可以实现linux上共享一个目录,windows上面访问. 安装 yum install -y samba samba-client 配置文件在 vim /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb bac

部署和调优 1.5 vsftp部署和优化-1

系统自带的ftp服务软件.vsftpd 安装vsftpd yum install -y vsftpd 启动vsftpd /etc/init.d/vsftpd start 如果启动失败,可能是端口被占用,所有的ftp服务都占有21端口 netstat -lnp killall pure-ftpd 默认的ftp服务可以让系统的用户登录 更改用户的密码是 passwd加用户名 passwd wangshaojun 在远程机器上登录 lftp [email protected]192.168.1.117

部署和调优 2.9 mysql主从配置-3

测试 先给主mysql解锁 > unlock tables; 删除一个表 > use db1; > show tables; > drop table help_category ; 去从 mysql 看一下 > use db1; > show tables; 没有 help_category. ////////////////////////////////////////////////////////////////////////创建一个表 show creat