2020-06-03 17:20
前言
VMware 已经于2020 年4 ⽉2 ⽇发布了全新设计的vSphere 7 系统。针对vSphere 6 当前存在的问题,在本文中统⼀总结⼀下,⽅便客户更好地使⽤vSphere 6,以及评估将vSphere 6 升级到6.7 的必要性和⽅法,以及未来升级到7 的可⾏性。
另⼀⽅⾯,根据KB#Checking Expiration of STS Certificate on vCenter Server (79248),从vCenter 6.5 Update2 (GA Date : 2018 年5 ⽉3 号) 及后⾯的版本,透过VC ⾃带的VMCA 签发的证书,有效期均为2 年。
受影响的版本包括:
2年 |
10年 |
|
6.5 |
全新安装 6.5U2 及之后的版本 |
从 6.5U2 之前版本升级上来 |
6.7 |
*全新安装 6.7U3g 及之后的版本 *从 6.5U2 及之后的版本升级上来 |
*全新安装 6.7 – 6.7U3g 之间的版本 *从 6.5U2 之前版本升级上来 |
我们⽤⼀张思维导图,把本⽂要涉及的内容概括如下:
1. 可能面临的问题
1.1. 6.5~6.7 版本遇到两年证书有效期的问题近期遇到比较多的问题,是客户部署的 vCenter 6.5 系统突然无法登录了。
可能的症状 1:
上图中,并不报⽤户或密码错误,⽽是明明输入了⽤户名和密码,却仍然要求输入⽤户名和密码。
可能的症状 2:
浏览器页⾯报服务器错,无法连接组件管理器。
这时候,可能就是遇到了证书已过有效期的问题。vCenter 的证书在安装部署时,⼀般是默认10 年的,vCenter 6.5 以后的部分版本存在证书只有 2 年有效期的问题。
1.2. 6.7U1 之前版本 Flash 即将停止支持的问题
vSphere Web Client 使⽤了 Adobe Flash,⽽ Adobe Flash 即将于 2020 年 12 ⽉停⽌⽀持
(EOL)。VMware vSphere 6.5 和 6.7 受此影响,也将于 2021 年 11 ⽉停⽌⽀持。
1.3. 6.7 以后不再支持 Windows Server 版的 vCenter 的问题
从6.7开始,vCenter Server不再提供基于Windows Server的版本,仅提供基于
Appliance的版本。
1.4. vSphere 各版本生命周期的问题
产品及版本 |
发布日期 |
停止支持日期 |
ESXi 5.5 |
2013-09-19 |
2018-09-19 |
vCenter Server 5.5 |
2013-09-19 |
2018-09-19 |
ESXi 6.0 |
2015-03-12 |
2020-03-12 |
vCenter Server 6.0 |
2015-03-12 |
2020-03-12 |
ESXi 6.5 |
2016-11-15 |
2021-11-15 |
ESXi 6.7 |
2018-04-17 |
2021-11-15 |
vCenter Server 6.5 and 6.7 |
2016/11/15 |
2021-11-15 |
ESXi 7.0 |
2020-04-02 |
2025-04-02 |
vCenter Server 7.0 |
2020-04-02 |
2025-04-02 |
目前,客户正在使⽤的版本,大多数是6.0和6.5,也有少量的5.5及以下版本,少量的6.7版本。7.0版本刚刚开始部署。由于5.5和6.0已经停止支持,而6.5和6.7也将于2021年11月15日停止支持。在已经停止支持的版本上运行关键业务,会面临潜在的风险,遇到问题时无法开Case,从而使关键业务系统面临不可知的风险。
2. 解决的方法
2.1. 6.5~6.7 版本遇到两年证书有效期的问题
2.1.1. vCenter 可以登录时验证证书有效期查看证书的页面:
HTML5界面(无法查看STS证书):主页 – 系统管理 – 证书 – 证书管理
Flash界面:主页 – 系统管理 – Single Sign-on – 配置 – 证书 – STS证书
点击每个证书,就可以看到证书的有效期了。
2.1.2. vCenter 可用时重新生成和更换证书
6.5 及以下的操作方法是:https://vc-ip-address/psc,然后选择:证书 - 证书管理– 选择证书 – 续订
6.7的操作方法是:主页 – 系统管理 – 证书 – 证书管理 – 选择证书 – 操作 – 续订
2.1.3. vCenter 不可用时验证证书有效期特征:
当部署了vCenter 6.5U2及以上版本时,安全令牌服务(STS)签发的证书可能只有 2年有效期。具体情况因部署vCenter的时期可能会有不同,这会导致出现证书过
期现象。当证书已经过期时,vCenter就无法正常启动了(失去了证书的互信关系)。这时需要登录到vCenter Server的Shell中去查看。
目标:
后果:当STS证书过期时,不会再有告警。2年时间一到,会立即导致vCenter不可用。
3、解决办法:
3.1. 6.5~6.7 版本遇到两年证书有效期的问题
3.1.1. vCenter 可以登录时验证证书有效期查看证书的页面:
HTML5界面(无法查看STS证书):主页 – 系统管理 – 证书 – 证书管理
Flash界面:主页 – 系统管理 – Single Sign-on – 配置 – 证书 – STS证书
点击每个证书,就可以看到证书的有效期了。
3.1.2. vCenter 可用时重新生成和更换证书
6.5 及以下的操作方法是:https://vc-ip-address/psc,然后选择:证书 - 证书管理– 选择证书 – 续订
6.7的操作方法是:主页 – 系统管理 – 证书 – 证书管理 – 选择证书 – 操作 – 续订
3.1.3. vCenter 不可用时验证证书有效期特征:
当部署了vCenter 6.5U2及以上版本时,安全令牌服务(STS)签发的证书可能只有 2年有效期。具体情况因部署vCenter的时期可能会有不同,这会导致出现证书过
期现象。当证书已经过期时,vCenter就无法正常启动了(失去了证书的互信关系)。这时需要登录到vCenter Server的Shell中去查看。
目标:
后果:当STS证书过期时,不会再有告警。2年时间一到,会立即导致vCenter不可用。
解决方法:
1)从 KB79248的网页下载一个Python的小程序checksts.py
2)上传到vCenter Server或外部的PSC。上传到VCSA的/tmp目录,或者Windows Server的%TEMP%目录。
3)进到/tmp目录:cd /tmp 4)运行 python checksts.py
在Windows Server里,在命令行运行 %VMWARE_PYTHON_BIN% checksts.py
Appliance的输出:
Windows Server的输出:
这样可以看到证书的有效期。
注意:
无法从告警信息中看到STS证书是否过期,建议部署vCenter以后,检查STS证书有效期,并在日历中设置告警, 在到期前6个月内更换证书。
3.1.4. vCenter 不可用时重新生成和更换证书特征:
l vCenter/PSC 的服务由于证书过期而无法启动时,可以看到以下报错:路径:/var/log/vmware/vpxd-svcs/vpxd-svcs.log
ERROR com.vmware.vim.sso.client.impl.SecurityTokenServiceImpl$RequestResponseProcessor o pId=] Server rejected the provided time range. Cause:ns0:InvalidTimeRange: The token authority rejected an issue request for TimePeriod [startTime=Thu Jan 02 09:22:13 EST 2020, endTime=Fri Jan 03 09:22:13 EST 2020] :: Signing certificate is not valid at Thu Jan 02 09:22:13 EST 2020, cert validity: TimePeriod [startTime=Wed
Jan 06 20:44:39 EST 2010, endTime=Wed Jan 01 20:54:23 EST 2020] 注意:证书过期时,endTime应该是某个过去的时间。
l 登录时遇到以下报错
HTTP Status 400 – Bad Request Message BadRequest, Signing certificate is not valid 目标:重新产生证书并替换已过期的证书。
后果:证书过期后,内部服务和解决方案用户无法获取有效的令牌,无法正常工作。
影响和风险:警告:这个脚本将影响VMDIR数据库。
这个脚本只能运行一次,在运行脚本之前,需要把vCenter Server和PSC Server 做离线快照。
解决办法:注意:在进行下列操作之前,将vCenter的虚拟机做备份并打快照。
1)从KB76719的网页下载脚本fixsts.sh。
2)将这个脚本上传到vCenter/PSC Server上的临时目录/tmp下。
3)进入目录:cd /tmp
4)将脚本改为可执行模式:chmod +x fixsts.sh
5)运行脚本:./fixsts.sh
6)可以看到脚本运行成功的提示:
7)重启vCenter/PSC Server。
9)用以下命令检查证书的过期情况
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done
10) 这时,vCenter就可以正常登录了。注意:你可能会收到如下错误信息:
bash: ./recreate_machine.sh: /bin/bash^M: bad interpreter: No such file or directory
这是因为当你用一个Windows的编辑器编辑过脚本文件后,DOS的回车转制会填加到脚本文件中。
可以用下述命令解决这个问题:
sed -i -e 's/r$//' fixsts.sh
3.2. 6.7U1 之前版本 Flash 即将停止支持的问题
从6.0到6.7,vSphere Web Client使用了Adobe Flash,而由于Adobe Flash宣布从2020.12停止支持,vSphere Web Client中的Flash也无法继续使用了。
从6.5开始,vSphere Web Client中开始增加了HTML5的界面,但直到6.7U1,HTML5的界面才具
备了全功能。
因此,我们建议客户将所有从6.0到6.7的vCenter都升级到6.7U3G版本。3.3. 6.7 以后不再支持 Windows Server 版的 vCenter 的问题从6.7开始,VMware不再提供基于Windows Server版本的vCenter了,仅提供基于Appliance版
的vCenter(vCenter Server Appliance,VCSA)。
3.4. vSphere 各版本生命周期的问题
3.4.1. ESXi 升级路径
3.4.2. ESXi 升级方法
1) 查阅上述升级路径,多数情况下,从“源”版本到“目标”版本的升级可以一次完成,但某些情况下,无法直接完成,需要多次升级。
2) 建议使用 Update Manager 完成 ESXi 的升级。基本过程如下:
a) 下载新的 ESXi 版本的安装包,并上传到存储库或内容库;
b) 对要升级的集群建立新的基准,以新版本做为基准;
c) Update Manager 根据新基准对集群进行扫描,发现当前版本和目标版本不一致时,触发升级;
d) 可以设置对集群里的多少台主机同时进行升级,一般可以设置为 1 台;
e) 升级前,系统会自动将升级主机上的虚拟机自动疏散到集群内其他可用主机上去,确保虚拟机不中断;
f) 如果集群上部署了 VSAN 时,需要将数据迁出,这可能会导致很长时间的数据迁出过程。
g) 虚拟机和数据迁出后,主机会自动升级,升级完成后,会自动退出维护模式,然后寻找下一台主机升级。
3.4.3. vCenter 升级路径
4.1. Checking Expiration of STS Certificate on vCenter Server (79248) https://kb.vmware.com/s/article/79248?lang=en_US&queryTerm=79248
4.2. "Signing certificate is not valid" - Regenerating and replacing expired STS certificate using shell on vCenter Server Appliance 6.5/6.7 (76719)
https://kb.vmware.com/s/article/76719?lang=en_US&queryTerm=76719
4.4. vSphere Web (Flash) Client Supportability and End of Life (78589) https://kb.vmware.com/s/article/78589
4.5. End of General Support for vSphere 6.0 (66977) https://kb.vmware.com/s/article/66977