云计算概述和KVM虚拟化
一、云计算概述
为什么有书还需要培训;
xftp;
查找问题:之前干了什么?
中国的计算机行业已经跨入了云计算行业;
运维工资虚高;
1、传统的数据中心面临的问题
为什么分享的人做的非常好:a、想跳槽了;b、宣传的公司的产品; c、提高知名度;
搞电脑的;
a、云计算是一种使用模式;b、云计算是通过网络进行访问的;c、按需付费,弹性计算;
包年包费:是vps;
IDC托管 IDC租用 虚拟主机 VPS openvz 云主机
有足够的机器的话,无需自动化扩容;
但是如果对于机器资源不足的话,需要实现自动化的调度,可以使用自动化扩容;
2、云计算和虚拟化
IaaS:操作系统一下,不包含操作系统; Managed by vendor PaaS:操作系统,运行环境等; SaaS:软件即服务,应用,数据,全部包含;eg:邮箱(反垃圾,反垃圾邮件联盟);
云计算和虚拟化不能比较:云计算是一种模式,虚拟化是一种技术;
不知道虚拟机是干什么的?不知道干什么的?不敢停
云计算是使用虚拟化的技术,来实现的;云计算是通过网络来获取资源的;
虚拟化分类:
1)、全虚拟化:KVM虚拟化是内核支持,CPU需要支持; 2)、半虚拟化:zone; 服务器虚拟化: 桌面虚拟化: 应用虚拟化:
携程和京东使用的是基于openstack的桌面虚拟化;
ESXI XenServer KVM RHEV oVirt openstack Vmware Vshpere EMC 被Dell收购了
3、KVM虚拟化
特性:
1)嵌入的linux内核中 2)代码级资源调用 3)虚拟机就是一个进程;
建议使用CentOS 7,目前所有的开源软件都是支持的;
二、KVM常用管理
1、创建虚拟机
[root@linux-node1 ~]# yum install qemu-kvm qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y
一台机器分为:cpu、内存、IO(磁盘、网络);
kvm(是一个内核模块,是内核态的,需要用户态的程序进行管理)有:cpu和内存;
qemu(本身是一个虚拟化软件,是用户态软件)有:磁盘和网络;
kvm需要硬件虚拟化支持,查看硬件是否支持虚拟化:
[root@linux-node3 ~]# 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 acpi 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 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid xsaveopt xsavec xgetbv1
默认虚拟机没有打开硬件虚拟化,需要在setting中进行设置;
创建虚拟机的磁盘:
[root@linux-node1 ~]# qemu-img create -f raw /opt/CentOS-7.1-x86_64.raw 10G #创建一个虚拟机,-f指定文件格式 Formatting '/opt/CentOS-7.1-x86_64.raw', fmt=raw size=10737418240
[root@linux-node1 opt]# lsmod |grep kvm kvm_intel 162153 0 kvm 525259 1 kvm_intel
启动libvirt:
[root@linux-node1 ~]# systemctl enable libvirtd.service Created symlink from /etc/systemd/system/sockets.target.wants/virtlockd.socket to /usr/lib/systemd/system/virtlockd.socket. [root@linux-node1 ~]# [root@linux-node1 ~]# systemctl start libvirtd.service [root@linux-node1 ~]# systemctl status libvirtd.service ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-02-09 15:11:11 CST; 3min 50s ago
创建ISO镜像文件:
dd if=/dev/cdrom of=/opt/CentOS-7.1.iso #创建ISO文件 [root@linux-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,bus=sata --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install... Creating domain... | 0 B 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process.
如果使用virt-manager+xmanager安装的话,需要设置环境变量DISPLAY:
export DISPLAY=192.168.74.1:0.0
选择cdrom:
我这里使用的使用virt-manager安装的,由于之前磁盘接口默认是ide的,总是包ide-0-0-0找不到的错误,安装失败,所以在安装的时候需要将磁盘接口选择为sata的; 使用vnc,默认监听端口为5900;
远程连接选择vnc:
在安装的时候,设置网卡名为eth0:
[root@linux-node3 ~]# ps aux|grep kvm #kvm就是宿主机中的一个进程 root 610 0.0 0.0 0 0 ? S< 06:38 0:00 [kvm-irqfd-clean] qemu 4830 1.9 23.3 1730568 438344 ? Sl 08:03 2:28 /usr/libexec/qemu-kvm -name CentOS-7.1-x86_64 -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -cpu Westmere -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 6201bfeb-ae90-447d-b75a-1c09cbd7f658 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-8-CentOS-7.1-x86_64/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device ahci,id=sata0,bus=pci.0,addr=0x5 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 -drive file=/opt/CentOS-7.1-x86_64,format=raw,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,media=cdrom,id=drive-sata0-0-0,readonly=on -device ide-cd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0 -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:ae:02:78,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-8-CentOS-7.1-x86_64/org.qemu.guest_agent.0,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -chardev spicevmc,id=charchannel1,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 0.0.0.0:0 -k en-us -vga qxl -global qxl-vga.ram_size=67108864 -global qxl-vga.vram_size=67108864 -global qxl-vga.vgamem_mb=16 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x9 -msg timestamp=on root 4854 0.0 0.0 0 0 ? S 08:03 0:00 [kvm-pit/4830] root 7059 0.0 0.0 112668 972 pts/2 R+ 10:09 0:00 grep --color=auto kvm
2、libvirt介绍
支持xen,kvm,vmware,virtualbox等等;
[root@linux-node3 ~]# virsh list #libvirt api的工具 Id 名称 状态 ---------------------------------------------------- 1 CentOS-7.1-x86_64 running 2 CentOS-7.2-x86_64 running [root@linux-node3 ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 1 CentOS-7.1-x86_64 running 2 CentOS-7.2-x86_64 running
openstack默认使用kvm;
libvirt会创建如下的网卡:
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::fc54:ff:feae:278 prefixlen 64 scopeid 0x20<link> ether fe:54:00:ae:02:78 txqueuelen 1000 (Ethernet) RX packets 160 bytes 15462 (15.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4271 bytes 227026 (221.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在新创建的虚拟机上,编辑网卡,设为开机自启动,使用 ip ad li查看,网卡有地址,是因为dncp的原因:
[root@linux-node3 ~]# ps aux|grep dns nobody 1519 0.0 0.0 15544 468 ? S 06:38 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 1522 0.0 0.0 15516 164 ? S 06:38 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 7662 0.0 0.0 112668 968 pts/2 S+ 10:36 0:00 grep --color=auto dns
可以看到分配的libvirt的地址的范围:
[root@linux-node3 ~]# cat /var/lib/libvirt/dnsmasq/default.conf ##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE ##OVERWRITTEN AND LOST. Changes to this configuration should be made using: ## virsh net-edit default ## or other application using the libvirt API. ## ## dnsmasq conf file created by libvirt 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 #dncp分配的地址范围 dhcp-no-override dhcp-lease-max=253 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
3、CPU热添加
virsh edit CentOS-7.1-x86_64 #编辑libvirt的xml文件
<vcpu placement='auto' current='1'>4</vcpu> #cpu的热添加,最大为4个;cpu的热添加,只有在Centos 7才能做
相当于直接编辑该文件:
[root@linux-node3 qemu]# pwd /etc/libvirt/qemu [root@linux-node3 qemu]# ls CentOS-7.1-x86_64.xml CentOS-7.2-x86_64.xml networks
编辑xml文件之后,只有重启虚拟机才能生效:
[root@linux-node3 ~]# virsh shutdown CentOS-7.1-x86_64 #编辑完xml之后,需要重启才能生效 域 CentOS-7.1-x86_64 被关闭 [root@linux-node3 ~]# virsh start CentOS-7.1-x86_64 域 CentOS-7.1-x86_64 已开始
将cpu的个数改为2个
[root@linux-node3 ~]# virsh setvcpus CentOS-7.1-x86_64 2 --live
然后再虚拟机上查看cat /proc/cpuinfo,可以看到cpu变成两个了
查看CPU是否激活
[root@linux-node3 ~]# cat /sys/devices/system/cpu/cpu0/online 1
cpu的个数只能加,不能减少
[root@linux-node3 ~]# virsh setvcpus CentOS-7.1-x86_64 1 --live #只能加,不能减 错误:不支持的配置:failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count
注意:#cpu热添加,不能超过cpu最大数;
4、内存热添加
<memory unit='KiB'>2048576</memory> #内存的最大值,内存的变化,最大不能超过最大值;
修改完成之后,需要重启虚拟机;
[root@linux-node3 ~]# virsh qemu-monitor-command --help NAME qemu-monitor-command - QEMU 监控程序命令 SYNOPSIS qemu-monitor-command <domain> [--hmp] [--pretty] {[--cmd] <string>}... DESCRIPTION QEMU 监控程序命令 OPTIONS [--domain] <string> 域名,id 或 uuid --hmp 采用认同监控协议的命令 --pretty 以美化格式输出任意 qemu 监视器协议输出结果 [--cmd] <string> 命令 [root@linux-node3 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info info balloon -- show balloon information info block -- show the block devices info block-jobs -- show progress of ongoing block device operations info blockstats -- show block device statistics info capture -- show capture information info chardev -- show the character devices info cpus -- show infos for each CPU info history -- show the command line history info irq -- show the interrupts statistics (if available) info jit -- show dynamic compiler info info kvm -- show KVM information info mem -- show the active virtual memory mappings info mice -- show which guest mouse is receiving events info migrate -- show migration status info migrate_cache_size -- show current migration xbzrle cache size info migrate_capabilities -- show current migration capabilities info mtree -- show memory tree info name -- show the current VM name info network -- show the network state info numa -- show NUMA information info pci -- show PCI info info pcmcia -- show guest PCMCIA status info pic -- show i8259 (PIC) state info profile -- show profiling information info qdm -- show qdev device model list info qtree -- show device tree info registers -- show the cpu registers info roms -- show roms info snapshots -- show the currently saved VM snapshots info spice -- show the spice server status info status -- show the current VM status (running|paused) info tlb -- show virtual to physical memory mappings info tpm -- show the TPM device info trace-events -- show available trace-events & their state info usb -- show guest USB devices info usbhost -- show host USB devices info usernet -- show user network stack connection states info uuid -- show the current VM UUID info version -- show the version of QEMU info vnc -- show the vnc server status
设置虚拟机内存的大小,内存可大可小
[root@linux-node3 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon 600 #内存设置为600M [root@linux-node3 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon balloon: actual=600 [root@linux-node3 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon 2000 #设为2G [root@linux-node3 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon balloon: actual=2000
5、硬盘
全镜像模式 稀疏模式 raw qcow2(openstack首选)
查看硬盘的信息
[root@linux-node3 opt]# ll 总用量 14763012 -rw-r--r--. 1 qemu qemu 4379901952 2月 12 00:03 CentOS-7.1.iso -rw-------. 1 qemu qemu 10737418240 2月 12 15:06 CentOS-7.1-x86_64 drwxr-xr-x. 2 root root 6 3月 26 2015 rh [root@linux-node3 opt]# qemu-img info CentOS-7.1-x86_64 image: CentOS-7.1-x86_64 file format: raw virtual size: 10G (10737418240 bytes) disk size: 10G
6、网络
默认是nat
如何将nat该为桥接模式?
查看网桥
[root@linux-node3 ~]# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.5254003ca721 yes virbr0-nic vnet0 vnet1
添加网桥,并将eth0关联进去
[root@linux-node3 ~]# brctl addbr br0 #添加一个网桥 [root@linux-node3 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000000000000 no virbr0 8000.5254003ca721 yes virbr0-nic vnet0 [root@linux-node3 ~]# brctl addif br0 eth0 #将eth0加进去(网断了)
删除eth0的ip地址,加入到br0中
,就可以重启连接了
[root@linux-node3 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29385f8a no eth0 virbr0 8000.5254003ca721 yes virbr0-nic vnet0 vnet1
这样,网卡就实现桥接了
[root@linux-node3 ~]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.74.22 netmask 255.255.255.0 broadcast 192.168.74.255 inet6 fe80::20c:29ff:fe38:5f8a prefixlen 64 scopeid 0x20<link> ether 00:0c:29:38:5f:8a txqueuelen 1000 (Ethernet) RX packets 105 bytes 15245 (14.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 80 bytes 11974 (11.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::38c2:5066:2880:ac5f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:38:5f:8a txqueuelen 1000 (Ethernet) RX packets 323111 bytes 35975466 (34.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 304017 bytes 436428151 (416.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 130 bytes 13769 (13.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 130 bytes 13769 (13.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:3c:a7:21 txqueuelen 1000 (Ethernet) RX packets 538 bytes 36160 (35.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 411 bytes 35200 (34.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::fc54:ff:feae:278 prefixlen 64 scopeid 0x20<link> ether fe:54:00:ae:02:78 txqueuelen 1000 (Ethernet) RX packets 523 bytes 41742 (40.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8501 bytes 456432 (445.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::fc54:ff:feaa:3c07 prefixlen 64 scopeid 0x20<link> ether fe:54:00:aa:3c:07 txqueuelen 1000 (Ethernet) RX packets 15 bytes 1950 (1.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 819 bytes 43640 (42.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
7、删除虚拟机
virsh undefine CentOS-7.1-x86_64 #删除就找不到了,可以先将xml备份 [root@linux-node3 ~]# virsh suspend CentOS-7.1-x86_64 #挂起 域 CentOS-7.1-x86_64 被挂起 [root@linux-node3 ~]# virsh list Id 名称 状态 ---------------------------------------------------- 13 CentOS-7.1-x86_64 暂停 [root@linux-node3 ~]# virsh resume CentOS-7.1-x86_64 #恢复 域 CentOS-7.1-x86_64 被重新恢复 [root@linux-node3 ~]# virsh list Id 名称 状态 ---------------------------------------------------- 13 CentOS-7.1-x86_64 running
三、kvm性能优化
1、CPU优化
cpu是qume模拟的;
x86有四个运行级别:rang0~ring3
ring0是内核态(可以使用硬件),ring3是用户态(不可以使用硬件);
如果进程需要使用硬件,进程需要切换到ring0上,这样的切换称之为上下文切换;
只实现了ring0和ring3;
vt-x:上下文切换技术实现;
查看CPU状态
[root@linux-node3 /]# lscpu #查看cpu状态 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 座: 1 NUMA 节点: 1 厂商 ID: GenuineIntel CPU 系列: 6 型号: 78 型号名称: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz 步进: 3 CPU MHz: 2400.000 BogoMIPS: 4800.01 虚拟化: VT-x 超管理器厂商: VMware 虚拟化类型: 完全 L1d 缓存: 32K #一级数据缓存 L1i 缓存: 32K #一级指令缓存 L2 缓存: 256K L3 缓存: 3072K NUMA 节点0 CPU: 0
减少Cache Miss
xml taskset:将某一个进程绑定到某一个CPU上;
内存优化
内存寻址:EPT 内存合并:KSM 大页内存:khugepaged 把连续的4k内存合并为2M; 1、宿主机虚拟内存-->宿主机物理内存 影子页表: 虚拟机的虚拟内存->虚拟机的物理内存 [root@linux-node3 /]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
I/O
一般内核优化很少做,内核裁剪可以做;
Virtio(虚拟化的队列接口) virtio-net virtio-blk 半虚拟化 io半虚拟化
linux的IO调度算法:
cfq:完全公平的io调度算法; fifo:用于SSD;
查看IO调度算法
[root@linux-node3 /]# dmesg |grep -i scheduler [ 1.264325] io scheduler noop registered [ 1.264327] io scheduler deadline registered (default) [ 1.264344] io scheduler cfq registered
修改IO调度算法
[root@linux-node3 /]# cat /sys/block/sda/queue/scheduler noop [deadline] cfq [root@linux-node3 /]# echo cfq >/sys/block/sda/queue/scheduler #修改IO调度算法,如果要永久生效,需要修改内核参数 [root@linux-node3 /]# cat /sys/block/sda/queue/scheduler noop deadline [cfq]
elevator=noop #修改内核参数
四、ovirt(RHEV的开源版本)和总结:
1.镜像制作: 分区的时候,只分一个/分区 不建议使用交换分区 2.删除虚拟机网卡的UUID MAC 3.安装基础软件包 net-tools lrzsz screen tree vim wget
KVM管理平台:
openstack cloudstack cloud.com公司-->Ctrix -->Apache基金会-->Java openNebula oVirt:RHEV的开源版本;
ovirt:管理端+客户端组成
oVirt Egine oVirt主机/节点 Vcenter Exsi
开源的邮箱:
iRedmail extmail Zimbra(开源版本) 现在:腾讯企业邮箱; zstack SEU:搜索引擎优化;
作业:
1.ovirt体验 2.openstack环境准备 CentOS7.1系统两台。每台2G内存 linux-node1.oldboy.com linux-node2.oldboy.com 3.硬盘50G 4.Tightvnc view vnc客户端 5.SOA 消息队列 RestAPI 分布式存储和对象存储
Dubbo:阿里开源的SOA框架,目前京东,当当都在使用,是基于RPC,zookeeper做注册中心;
总结:
服务器虚拟化 桌面虚拟化 应用虚拟化 硬件虚拟化:Intel vt-x/EPT AMD AMD-v/PVI