傳統數據中心面臨的問題:
資源使用率低
資源分配不均
自動化能力差
雲計算:
雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。
tomcat提供幾個端口?
全虛擬化:直接使用底層的硬件 比如:KVM
半虛擬化:通過一個中間件,來調用底層的硬件 比如:xen
硬件虛擬化:
軟件虛擬化:
應用虛擬化:
一個機器跑八個tomcat和跑八個虛擬機跑八個tomcat
kvm是一個內核模塊
qemu是將網絡IO和硬盤IO的虛擬化
安裝軟件
[root@oldboy-node1 ~]# yum -y install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install
|
檢查是否支持虛擬化
[root@oldboy-node1 ~]# grep -E "(vmx|svm)" /proc/cpuinfo
vmx:inter
svm:amd
[root@oldboy-node1 ~]# lsmod | grep kvm
kvm_intel 148081 0
kvm 461126 1 kvm_intel
|
創建硬盤
[root@oldboy-node1 ~]# 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服務
[root@oldboy-node1 ~]# systemctl enable libvirtd.service
[root@oldboy-node1 ~]# systemctl start libvirtd.service
[root@oldboy-node1 ~]# systemctl status libvirtd.service
|
磁盤拷貝
[root@oldboy-node1 ~]# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso
|
建立虛擬機
[root@oldboy-node1 ~]#
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服務器。
[root@linux-node1 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文件
[root@linux-node1 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
熱添加只能加,不能減。(開機狀態)
|
方式二:在安裝的時候
[root@linux-node1 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,
|
內存熱膨脹和壓縮,總數不能超過最大內存
[root@linux-node1 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
[root@oldboy opt]# brctl addbr br0
[root@oldboy opt]# brctl show
[root@oldboy ~]# 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
[root@linux-node1 ~]# brctl addbr br0
[root@linux-node1 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
virbr0 8000.525400035327 yes virbr0-nic
[root@linux-node1 ~]# brctl addif br0 eth0
[root@linux-node1 ~]# ip addr del dev 10.0.0.100/24
[root@linux-node1 ~]# 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
內存的合並
[root@linux-node1 ~]# ps aux |grep ksmd
root 280 0.0 0.0 0 0 ? SN 20:37 0:00 [ksmd]
大頁內存
[root@linux-node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@linux-node1 ~]# 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
[root@linux-node1 ~]# dmesg |grep scheduler
[ 1.385817] io scheduler noop registered
[ 1.385820] io scheduler deadline registered (default)
[ 1.385851] io scheduler cfq registered
默認是deadline
[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
修改成cfg
[root@linux-node1 ~]# echo cfq > /sys/block/sda/queue/scheduler
[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
永久的修改:改內核參數
[root@linux-node1 ~]# elevator=noop
SSD的話,一定要改成noop,那樣性能是最好的。
什么是RestAPI
什么是SOA
什么是消息隊列
什么是對象存儲