安装VMware View

在vcenter上先配置sql和odbc,再安装view composer
全新安装win2008r2,再安装View Connection Server
配置vcenter和composer账号
在View Administrator中添加vcenter和composer,编辑connection server配置
创建ViewEvents数据库,并在View Administrator中添加
导入证书
keytool -genkeypair -keyalg “RSA” -keysize 2048 -keystore keys.jks -storepass secret  //生成key
keytool -certreq -file certificate.csr -keystore keys.jks -storepass secret  //生成csr
keytool -importcert -keystore keys.jks -storepass secret -alias rootCA -file rootCA.p7  //导入CA证书
keytool -importcert -keystore keys.jks -storepass secret -keyalg “RSA” -trustcacerts -file certificate.p7  //导入证书
copy keys.jks C:\Program Files\VMware\VMware View\Server\sslgateway\conf\
vi C:\Program Files\VMware\VMware View\Server\sslgateway\conf\locked.properties
keyfile=keys.jks
keypass=secret
storetype=jks
重启

安装桌面系统并按照文档要求优化,安装View Agent
创建Pools并指定权限

vSphere4升级到vSphere5

先运行vCenter Host Agent Pre-Upgrade Checker检查所有ESXi可以升级
运行vCenter安装程序,升级vCenter到5
安装vSphere Web Client,因为服务器没有装Flash,使用命令行注册
C:\Program Files\VMware\Infrastructure\vSphere Web Client\scripts\admin-cmd register https://vcenter.local:9443/vsphere-client/ https://vcenter.local administrator@local password

Update Manager导入ESXi5的iso,创建基准组,附加基准组,扫描修复

建议迁移原有数据,重建vmfs系统,而非从vmfs3升级到vmfs5;如果这样做不太现实就将vmfs3升级到vmfs5

设置一个syslog服务器用来收集esxi的日志
主机-配置-安全配置文件-防火墙 属性-勾选syslog
主机-配置-高级设置-syslog.global,tcp://172.16.1.2:514

FreeBSD 打开文件数限制

samba报错smbd’s max open files = 16384
一般是系统的open flies限制

查看系统限制:
[root@storage ~]# sysctl -a | grep maxfiles
kern.maxfiles: 12328
kern.maxfilesperproc: 11095
kern.openfiles: 8760
FreeBSD 8.2,默认系统打开文件数12328,每进程打开文件数11095,kern.openfiles是系统当前打开文件数。

设置新的系统限制:
[root@storage ~]# sysctl kern.maxfiles=65536
[root@storage ~]# sysctl kern.maxfilesperproc=32768

查看某个进程的系统限制,nofile就是这个进程打开文件数的限制
24443是某个smbd的pid
[root@storage ~]# mount -t procfs proc /proc
[root@storage ~]# cd /proc/24443
[root@storage /proc/24443]# ls -l
total 0
-r–r–r–  1 root  wheel  0 Nov  7 20:15 cmdline
———-  1 root  wheel  0 Nov  7 20:15 ctl
———-  1 root  wheel  0 Nov  7 20:15 dbregs
-r–r–r–  1 root  wheel  0 Nov  7 20:15 etype
lr–r–r–  1 root  wheel  0 Nov  7 20:15 file -> /usr/local/sbin/smbd
———-  1 root  wheel  0 Nov  7 20:15 fpregs
-r–r–r–  1 root  wheel  0 Nov  7 20:15 map
———-  1 root  wheel  0 Nov  7 20:15 mem
———-  1 root  wheel  0 Nov  7 20:15 note
———-  1 root  wheel  0 Nov  7 20:15 notepg
———-  1 root  wheel  0 Nov  7 20:15 osrel
———-  1 root  wheel  0 Nov  7 20:15 regs
-r–r–r–  1 root  wheel  0 Nov  7 20:15 rlimit
-r–r–r–  1 root  wheel  0 Nov  7 20:15 status
[root@storage /proc/24443]# cat rlimit
cpu -1 -1
fsize -1 -1
data 34359738368 34359738368
stack 536870912 536870912
core -1 -1
rss -1 -1
memlock -1 -1
nproc 5547 5547
nofile 32768 32768
sbsize -1 -1
vmem -1 -1
npts -1 -1
swap -1 -1

/etc/login.conf可以配置某个用户的系统资源限制,默认是无限制的,就是受限于系统内核限制

/etc/sysctl.conf里面配置对开机启动的服务无效

/boot/loader.conf里面配置对开机启动的服务有效

Apache 配置SSL

SSLEngine on
SSLProtocol all -SSLv2 //只允许SSLv3和TLSv1,SSLv2有缺陷禁止掉
SSLCipherSuite RSA:DH:DSS:!EXP:!NULL:!ADH:!EDH:!LOW:!RC4:!MD5:HIGH:MEDIUM //最终的结果就是Key Exchange=RSA/DH,Authentication=RSA/DSS,Cipher Encoding=AES(128/256)/3DES(168),MAC Digest=SHA1
SSLCertificateFile /etc/ssl/certs/nnlm.cer //CA颁发的证书
SSLCertificateKeyFile /etc/ssl/private/nnlm.key //证书的私钥
SSLCertificateChainFile /etc/ssl/certs/chain.cer //证书链,所有的证书链全部写到一个文件里面

Debian 安装 VMware Tools 之前的准备

debian 6.0.0 安装的时候只选了Standard system utilities,虽然在安装过程中不认识vmxnet3网卡,但是安装完成后即使没有安装VMware Tools,debian也是可以识别vmxnet3网卡的。

编辑/etc/apt/sources.list,把原来的都注释了,加入下面的内容
deb http://ftp.cn.debian.org/debian squeeze main
deb-src http://ftp.cn.debian.org/debian squeeze main
deb http://ftp.cn.debian.org/debian squeeze-updates main
deb-src http://ftp.cn.debian.org/debian squeeze-updates main
deb http://mirrors.ustc.edu.cn/debian-security/ squeeze/updates main
deb-src http://mirrors.ustc.edu.cn/debian-security/ squeeze/updates main

在安装VMware Tools之前还需要执行 aptitude install make linux-headers-2.6-amd64 来安装gcc make linux-headers等,可喜的是这些都在CD1上就有。
安装mysql的不要忘记运行一下mysql_secure_installation

Cisco MARS 55 硬盘使用情况

原配500GB硬盘,全新安装MARS的默认磁盘使用情况:
[pnadmin]$ diskusage
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2             857M  543M  271M  67% /
/dev/hda1             125M   16M  103M  14% /boot
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda5             9.9G  1.2G  8.3G  12% /opt
/dev/sda6              20G  71M   19G   1% /log
/dev/sda7              74G   41M   71G  1% /pnarchive
/dev/sda8             9.9G   30M  9.4G   1% /tmp
/dev/sda9             9.9G  1.8G  7.6G  19% /u01
/dev/sda11            312G  13G  284G  5% /u02
/dev/sda10            9.9G  8.1G  1.3G  87% /u03

升级到1TB硬盘,MARS运行较长时间后,磁盘使用情况基本稳定:
[pnadmin]$ diskusage
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2             857M  538M  276M  67% /
/dev/hda1             125M   16M  103M  14% /boot
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda5             9.9G  1.3G  8.2G  14% /opt
/dev/sda6              20G  179M   19G   1% /log
/dev/sda7              74G   13G   58G  18% /pnarchive
/dev/sda8             9.9G   90M  9.3G   1% /tmp
/dev/sda9             9.9G  2.4G  7.0G  26% /u01
/dev/sda11            770G  171G  561G  24% /u02
/dev/sda10            9.9G  8.1G  1.3G  87% /u03

理解 VMware 内存资源管理

在虚拟化应用中,内存是最为宝贵的资源。同CPU和存储资源管理相比,虚拟化的内存资源管理更为复杂。

一、内存回收:

VMware ESX hypervisor(管理程序)能够截获虚拟机第一次访问某内存,将物理内存填零后分配给虚拟机,但是hypervisor无法得知虚拟机中哪些内存是空闲的。hypervisor不断的将内存分配给虚拟机,当在内存超配(memory overcommitment)的情况下主机物理内存将可能耗尽,因此hypervisor需要从虚拟机中回收(reclaim)内存,ESX hypervisor使用以下机制回收内存:

  1. 透明页共享(Transparent Page Sharing):当多个虚拟机在一个主机上运行时,可能有些内存页是一样的,比如一样的Guest OS。hypervisor通过周期性的扫描内存页生成hash值在内存hash总表中查找,一旦hash匹配就会进行完整比较,确认内存页完全一样后hypervisor会删除冗余内存页以指针代之,类似于存储中的重复数据删除功能。当某虚拟机对共享内存页试图写时,hypervisor会复制一个这个虚拟机的专有页来修改,保证共享页不被破坏。这种内存回收的速度取决于扫描的速度,在ESX(i)的高级设置中可以设置扫描速度和时间间隔。所以最好将相同或者相近的OS部署在一台host上面,以便更好的使用TPS节省内存。
  2. 气球膨胀(Ballooning):由于hypervisor无法得知虚拟机中哪些内存是空闲的,因此依靠VMware Tools在Guest OS中的气球驱动(balloon driver)来回收内存。当需要从该虚拟机回收内存时,气球膨胀从Guest OS中请求内存,分配给气球驱动的内存可被hypervisor安全的回收,Guest OS自行决定将哪些内存swapping交换到硬盘上以保证分配给气球驱动内存。显然需要安装VMware Tools才能实现气球回收内存,通过这种方式回收内存较慢,依赖于Guest OS内存分配的速度。
  3. 内存交换(Hypervisor Swapping):当虚拟机启动时就会创建一个内存swap文件,文件大小为最大内存交换量(虚拟机配置内存-内存预留)。当上面两种回收方式不能满足需求时,hypervisor会进行swapping将虚拟机的物理内存交换到硬盘上。hypervisor并不知道将哪些内存交换好,Guest OS也不知道哪些内存被交换了,这将极大的影响虚拟机的性能,当出现这种情况时说明需要加内存了。
  4. 内存压缩(Memory Compression):这是4.1的新功能,对内存的交换的优化。如果swapping的内存页是可压缩的,则将其压缩后存储在压缩缓存区中,这样再次访问这个被swapping的内存时仅需要解压缩,而不是从硬盘读取,这将快的多。不能压缩或压缩缓冲区满则会与硬盘进行真正的swapping。在ESX(i)的高级设置中可以设置压缩缓存的大小等。
  • 当主机可用内存高于等于6%时,hypervisor仅使用透明页共享回收内存(当没有设置虚拟机内存限制时)。如果虚拟机设定了内存限制,则hypervisor使用ballooning甚至swapping回收内存直到低于限定值。
  • 当主机可用内存接近4%时,hypervisor使用ballooning回收内存,一般情况下可以及时的回收内存,让可用内存保持在4%以上。
  • 如果ballooning不足以回收内存,主机可用内存接近2%时,hypervisor在ballooning回收内存的基础上增加使用swapping(并激活内存压缩)加速内存回收,让可用内存保持在4%以上。
  • 罕见的当主机可用内存只有1%时,hypervisor除了继续使用ballooning和swapping回收内存,还禁止所有虚拟机申请更多内存。

二、虚拟机内存分配

VMware ESX(i)提供了三个参数来控制虚拟机的内存分配(虚拟机设置-资源-内存)

  1. “限制(Limit)”限定了分配给虚拟机物理内存的上限,如果虚拟机使用的内存超过该限定值则hypervisor强制回收内存,默认是无限制,即已虚拟机内存大小为限。虚拟机硬件设置中的内存对于大多数Guest OS是不能热添加的,有的能热添加但是要使用添加的内存还要重启Guest OS,只有少数Guest OS能热添加并使用的,因为这个需要Guest OS识别,因此对Guest OS要求高。但是内存限制可以在虚拟机运行时随意的调整,Guest OS无需感知是透明的。
  2. “预留(Reservation)”是保证分配给虚拟机最低物理内存的下限,即hypervisor至多从虚拟机回收内存到预留值为止,不再继续回收,保证一个基本的内存可避免性能降低到无法忍受。
  3. “份额(Shares)”是当主机内存过量使用时,虚拟机可获得的物理内存是通过一个公式计算得到的,份额是其中一项。默认份额=虚拟机内存*10。
  • 公式:ρ=份额/(活动内存+k*空闲内存),ρ就是该虚拟机可获得物理内存比例的分子,分母是所有虚拟的ρ的和。
    k是惩罚因子,k=1/(1-IMT),IMT为空闲内存税(Idle Memory Tax),默认IMT=75%,即k=4,IMT值可以在ESX(i)的高级设置中修改。
    显然份额越大,活动内存比例越高则ρ越大,可获得的物理内存越多。hypervisor从ρ最小的虚拟机开始回收内存。

参考文献:
Understanding Memory Resource Management in VMware ESX 4.1

空闲内存税的算法

vMA 配置 FastPass

  使用vMA管理ESX/ESXi的时候每条命令都需要输入–server 192.168.1.101 –usarname root,很是麻烦。其实可以使用vifp让vMA记住这些服务器的用户名密码。

使用下面的命令添加服务器,并输入root的密码。
vifp addserver 192.168.1.101 --username root
vifp addserver 192.168.1.102 --username root

使用vifp listservers可以显示在FastPass中的所有服务器:
[vi-admin@localhost ~]$ vifp listservers
192.168.1.101 ESXi
192.168.1.102 ESXi

使用vifptarget -s设置需要操作的主机,设置后所有的操作都针对此主机,使用完后可-s一个新的主机,或者-c退出。
[vi-admin@localhost ~]$ vifptarget -s 192.168.1.101
[vi-admin@localhost ~][192.168.1.101]$ esxcfg-ntp -l
Configured NTP servers:
192.168.1.1
[vi-admin@localhost ~][192.168.1.101]$ vifptarget -s 192.168.1.102
[vi-admin@localhost ~][192.168.1.102]$ esxcfg-ntp -l
No NTP servers configured.
[vi-admin@localhost ~][192.168.1.102]$ esxcfg-ntp -a 172.16.170.1
Configuring 172.16.170.1 as NTP server.
[vi-admin@localhost ~][192.168.1.102]$ esxcfg-ntp -l
Configured NTP servers:
192.168.1.1
[vi-admin@localhost ~][192.168.1.102]$ esxcfg-ntp -s
Stopped NTP service on host.
[vi-admin@localhost ~][192.168.1.102]$ esxcfg-ntp -r
Started NTP service on host.
[vi-admin@localhost ~][192.168.1.102]$ vifptarget -c
[vi-admin@localhost ~]$

VMware 网卡故障转移和负载均衡

  默认配置下只要vSwitch中有一个以上的网卡,则可进行故障转移,如果有一个以上的网卡设为活动则可进行负载均衡。但是基于源端口和源MAC hash负载均衡是不完善的,对于出站流量基于源端口(虚拟机的网络端口)进行负载均衡,即每个虚拟机的网络端口对应一个Host的物理端口,出站是这个端口显然入站也是。如果一个Host的主要网络流量均由一个虚拟机的一个网络端口产生,且虚拟机的虚拟网卡很多都是10G而Host的网卡很多都是1G,那么这样的负载均衡基本没有意义了,虚拟机一个网络端口的速度不可能大于Host的一个物理端口的速度。

  为了实现更佳的负载均衡,修改vSwitch的负载均衡为基于IP hash,这样出站流量将根据源和目标IP选择链路,同时需要在Host的物理端口连接的交换机端口上配置Etherchannel以便负载均衡入站流量,只有这样才可能使虚拟机一个网络端口的速度大于Host的一个物理端口的速度,虚拟机的万兆虚拟网卡才更有意义。