VMware vCenter提供了一个备份/还原功能,以便在当vCenter本身出现故障且无法恢复的情况下,使用该功能可以将出故障的vCenter配置文件还原到一个新的vCenter上,这样就无需再重新配置即可立即恢复服务。这个备份文件除了包含配置文件以外,还可以选择备份历史数据,如统计信息、事件和任务等,以便能更完整的恢复到之前的状态。
现在平台出现了严重告警:“备份作用状态”,这是用于监控备份作业状态的警报。环境是vCenter 6.7,下面记录一下故障处理过程。
1.登录VAMI管理后台(https://vCenter IP/FQDN:5480),查看备份情况,发现备份调度任务在当天未能成功运行,之前备份状态是正常的。
2.点击手动备份,直接使用来自备份调度任务的配置信息,输入远端备份服务器的密码,点击确认后出现“FTP位置不可用(FTP location is invalid.)”错误。
3.备份调度任务是每天进行一次备份,使用的备份协议是FTP,这个FTP服务器环境是一台Windows 2008 R2虚拟机。
4.检查FTP服务器状态一切正常,FTP目录访问一切正常(读写/完全控制),vCenter与FTP服务器之间的网络连接正常,端口访问正常。
vmkping xx.xx.xx.xx //vCenter上检查与FTP服务器网络连接是否正常
nc -nvz xx.xx.xx.xx 21 //vCenter上检查与FTP服务器的21端口是否正常
5.在vCenter上使用tcpdump抓包工具抓一下网卡流量,并导出成.cap文件,以方便在wireshark工具上查看,发现在提交备份任务后,网卡上并没有和FTP服务器通信的流量,根本就没有发起连接,也就是说问题应该在vCenter本身。
6.查看vCenter备份日志,一般是以下几个日志,文件目录在/storage/log/vmware/applmgmt:
backup.log
applmgmt.log
backupScheduler.log
backupSchedulerCron.log
backupRestoreProgress.log
7.通过查看backupScheduler.log日志,可以看到之前调度任务备份失败的原因:“Failed to connect to the remote FTP location.”,连接FTP失败,但是我们测试了FTP服务器端是正常的。
2023-07-06T15:59:03.144 [MainProcess:PID-24791] ERROR: Failed to issue the Schedules.run request. Exception: {data : None, messages : [LocalizableMessage(id='com.vmware.applmgmt.err_fail_conn_remote_loc', args=['FTP'], default_message='Failed to connect to the remote FTP location.')]}
Traceback (most recent call last):
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/Scheduler.py", line 127, in ExecScheduleRun
status = svc_handle.run(scheduleId, comment='SCHEDULED')
File "/usr/lib/applmgmt/pyclient/applmgmt_client-1.0-py2.7.egg/com/vmware/appliance/recovery/backup_client.py", line 1134, in run
'comment': comment,
File "/usr/lib/vmware-vapi/lib/python/vapi_runtime-2.100.0-py2.py3-none-any.whl/vmware/vapi/bindings/stub.py", line 317, in _invoke
return self._api_interface.native_invoke(ctx, _method_name, kwargs)
File "/usr/lib/vmware-vapi/lib/python/vapi_runtime-2.100.0-py2.py3-none-any.whl/vmware/vapi/bindings/stub.py", line 275, in native_invoke
self._rest_converter_mode)
com.vmware.vapi.std.errors_client.Error: {data : None, messages : [LocalizableMessage(id='com.vmware.applmgmt.err_fail_conn_remote_loc', args=['FTP'], default_message='Failed to connect to the remote FTP location.')]}
8.查看backup.log备份日志以及applmgmt.log管理日志,并没有发现vCenter无法连接FTP的直接原因。
9.通过查阅网上资料,发现有文章说,如果开启了VCSA的网络代理,会出现FTP不可用的情况,但是我这里代理设置并没有开启。
10.经过查阅网上大量资料,判断这个问题应该是由VCSA备份服务自生的原因造成的,如果把这个备份服务重启一下看是否正常,如果不行,那只有重启vCenter。备份服务是受VAMI管的,重启VAMI管理服务也就顺应把备份服务给重启了,这个服务叫VMware Appliance Management Service,对应shell里的服务名字叫applmgmt,重启管理服务不会影响到虚拟机业务运行,如果你出现VAMI无法登录的问题,可能也是该服务造成的。
vCenter shell里运行:
service-control --status //查看vCenter服务的状态
service-control --restart applmgmt //重启管理服务
vCenter api命令运行:
service-control --status //查看vCenter服务的状态
service-control --restart applmgmt //重启管理服务
11.服务重启后, FTP连接正常,手动备份正常,备份调度任务肯定也没有问题了,管理平台的告警也消失。
12.但是,在发起备份任务窗口里发现有一个问题,在备份设置的数据栏,“统计信息、事件和任务”后面显示的空间为0 MB,看来并没有完全正常。
13.根据之前查看的backup.log日志,发现有以下ERROR信息,经过网上查阅资料后找到了原因,这是由于计算表大小导致的,在进行备份的时候会对行计数执行 SQL 查询,因为默认使用int而不是bigint,这意味着如果行计数高于某个值,数字转换将会失败,最后终止查询,也就为什么统计信息那一栏大小显示为0MB的原因了。
2023-07-27T06:15:12.174 [MainProcess:PID-41265] INFO: Sample table size record: vc|vpx_proc_log|1.90838e+06|224329728|78.7779407957193406
2023-07-27T06:15:12.175 [MainProcess:PID-41265] INFO: Sample table: name="vc.vpx_proc_log",
Rows count: 1.90838e+06
size="224329728",
percent="78.7779407957193406%".
2023-07-27T06:15:12.175 [MainProcess:PID-41265] ERROR: Failed to calculate VCDB size.
Traceback (most recent call last):
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/components/VCDB.py", line 398, in VCDBSize
original_size = _estimate_size_partial_vcdb(db_name='VCDB')
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/components/VCDB.py", line 301, in _estimate_size_partial_vcdb
int(reltuples),
ValueError: invalid literal for int() with base 10: '1.90838e+06'
2023-07-27T06:16:35.851 [MainProcess:PID-41268] INFO: Calculate size for components
2023-07-27T06:16:36.6 [MainProcess:PID-41268] INFO: Archive size for component rbd: 1090994
14.针对此问题,可以通过修改配置文件来解决,主要是在reltuples后面增加“::bigint”项,修改方式如下:
cd /usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/components/ //进入vCenter目录
cp VCDB.py VCDB.py.bak //对文件做一个备份
vim VCDB.py //修改配置文件
sql = ('SELECT nspname, relname, reltuples AS row_count, ... //未修改之前
sql = ('SELECT nspname, relname, reltuples::bigint AS row_count, '... //修改之后的
修改后如下图所示:
15.修改后,再次到备份任务窗口可以看到数据栏,“统计信息、事件和任务”后面的空间大小正常显示了,通过tail -f /var/log/vmware/applmgmt/backup.log查看vCenter备份日志,可以发现之前那个错误信息也没有了。
至此,vCenter无法备份的问题处理完毕!
vCenter对我们来说至关重要,对它采取一定备份措施是很有必要的。当然除了使用上面官方的一种备份方式以外,其实还有很种方式,比如第三方备份软件,Veeam等。
同时,建议在日常运维维护中,将vCenter vPostgres数据库也纳入到备份当中,具体怎么备份可以参考VMware KB 2091961文档中的教程和方法。
注意,请至少使用一种方式来备份vCenter,以确保当你的环境出现故障后,可以进行恢复。
参考文档:
vCenter Server Appliance 6.7 U2 backup via SMB fails with error: "SMB location is invalid" (70646)
VCSA backup to FTP/NFS/SMB fails
VMware vCSA 6.5 Scheduled Backup
Linux系统 tcpdump 抓包命令使用教程
vCenter Server Appliance Shell 中的 API 命令
VMware VCSA 5480 后台登录提示失败
vCenter Server Appliance Backup Process
Error "Failed to calculate VCDB size" during backup in vCenter Server Appliance 6.0/6.5 (76134)
Accessing the VAMI returns error "Update installation in progress" after recovering from a failed update (67179)
备份和还原 vCenter Server Appliance/vCenter Server 6.x vPostgres 数据库 (2091961)
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!