背景
之前云桌面使用的Maxta超融合,后面换成了思科超融合,这两套就移交过来坐业务测试了。我把这些主机添加到我业务这边的VC并配置好,测试了虚拟机创建都正常就没管了。
问题描述
因为maxta集群出现部分虚拟机报没有空间写入的问题,要排除下这个问题想要登陆控制台查看,发觉控制台无法登陆。 解决了登陆问题后又出现页面一直刷新不出来的问题。
问题解决
登陆失败问题解决
Maxta是和Vcenter强融合的,它的控制台是使用其绑定的Vcenter的账号密码登陆,一般都是使用默认的administrator@vsphere.local这个账号来登陆。
因为这套Maxta更改过Vcenter,所以需要更改绑定先。
通过ssh登陆Maxta的cvm(就是控制台的IP,是一个VIP)。先查看当前的配置信息:
mxcli.sh
mxcli> mgmtConfig
mgmtIpAddr : 10.1.18.180
mgmtNetMask : 255.255.255.0
ctrlType : 0
hvType : 0
ctrlServer : 10.1.110.90
clusterId : domain-c608274
vcExtKey : hyperconverged.extension.domain-c608274
nfsHost : 366c5247-e91b-4142-8d17-f87beb26f7ff
nfsPath : /hyperconverged
datastoreId : datastore-608280
datastoreName : ArcherOS-VDI-Cluster-D
defaultGateway : 10.1.18.1
.......
我们要关注的是下面几个:
mgmtIpAddr: 控制台的IP
ctrlServer: Vcenter的IP
clusterId: Vcenter的集群ID
发现Vcenter的IP和我们现在使用的VC不一样,我们先修改绑定。用下面的命令修改:
mxConfig -c VDI-Cluster-E -m 10.1.18.180 -u "administrator@vsphere.local" -p "xxxxxxx" -v 10.1.10.88
-c Vcenter上maxta的集群名称
-m Maxta控制台的IP
-u Vcenter账号
-p Vcenter密码
-v Vcenter的IP
修改后,发现能登陆了,但是页面一直刷新不出来。
页面刷新问题解决
通过浏览器追踪,发现是无法获取到集群信息, https://10.1.18.180/api/w3/maxta/clusterConfig 这个URL返回了500的错误。
ssh登陆CVM,查到是tomcat提供的服务,查看tomcat的mms.log日志,发现有以下报错:
2024-09-04 12:51:51.729 [http-nio-8443-exec-4] INFO c.m.vcclient.security.VcConnection - isConnected serviceInstance:ServiceInstance:ServiceInstance @ https://sdkTunnel:8089/sdk
2024-09-04 12:51:51.731 [http-nio-8443-exec-4] INFO c.m.vcclient.security.VcConnection - isConnected serviceInstance.currentTime:java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+00:00",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=8,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=12,MINUTE=51,SECOND=51,MILLISECOND=725,ZONE_OFFSET=0,DST_OFFSET=0]
2024-09-04 12:51:51.738 [http-nio-8443-exec-4] WARN com.maxta.vcclient.VMHelper - Failed to get cluster
java.lang.RuntimeException: java.rmi.RemoteException: VI SDK invoke exception: null; nested exception is:
com.vmware.vim25.ManagedObjectNotFound
at com.vmware.vim25.mo.ManagedObject.retrieve
提示找不到集群。这是之前埋的坑。我把机器移到这边的VC的时候,集群名称做了修改,要把这个集群名称改回去先。直接VC上修改(不知道Maxta里怎么修改这个cluster名称,没找到相关文档)。
但是这样还不行,因为clusterId这个字段的值还是不对的,得修改。这个值如何获取呢?在Vcenter上,选中Maxta集群的名称(就是鼠标左键点击集群名),然后查看URL,类似这样的:
https://10.1.10.88/ui/#?extensionId=vsphere.core.cluster.relatedDatastoresTab&objectId=urn:vmomi:ClusterComputeResource:domain-c103:c72034c9-a489-4b85-ab2f-723caae4bb84&navigator=vsphere.core.viTree.hostsAndClustersView
从URL中可以得到clusterId的值,就是domain-c103,然后去修改Maxta的配置:
mxcli.sh
mxcli> mgmtConfig clusterId domain-c103
修改完成后,需要重启tomcat才能生效。注意,这里有个坑,如果是通过控制台的VIP ssh登陆上去的,重启tomcat后发现会断开,然后测试还是不行。
原因就是这个tomcat服务存在所有的CVM节点,当你重启VIP所在节点的tomcat时,这个VIP会漂移到其它CVM上,而上面的tomcat没重启所以还是不生效。
所以我们要先ssh登陆到所有的非VIP所在的CVM,把tomcat都重启一次,最后再重启VIP所在cvm的tomcat服务。
重启tomcat服务建议使用其自带的命令: mxTomcatKill.sh
这样重启完成后,页面就能正常刷新出来了
总结
Maxta 这个东西真的太小众了,网上根本查不到相关资料。还好之前交接的文档里有给了几个命令的介绍,不然都不知道如何下手。这里贴上,以作备忘。
命令参考
MxBrandVM
最低要求的用户级别:控制台
语法: MxBrandVM [options]
用法: 用于修改安超集群或虚拟机。
参数: 说明:
[-a] 指定品牌名被添加到或者移除自所有的控制器虚拟机、集群和网络。此参数只能使用-n、-d和-c选项发出。
[-c <cluster_name>] 指定要修改的集群的名称。
[-d <dvPortGroup>] 指定要修改的分布式虚拟端口组的名称。
[-i <shortID>] 指定虚拟机的短ID。
[-m <management_IP_address>] 指定管理服务器的IP地址。如果从安超控制器虚拟机的外部来执行mxBrandVM命令,则此参数是必需的。
[-n <network>] 指定要修改的存储网络。
[-p <password>] 指定vCenter密码。如果未指定,系统将提示您输入密码。
[-r ] 指定从虚拟机或集群中删除安超。
-s<vCenter_Server>_IP|FQDN> 指定vCenter IP地址或完全合格的域名。如果从安超控制器虚拟机的外部执行mxBrandVM命令,则此参数是必需的。这个参数是必需的。
[-t ] 指定该虚拟机未被标记为EAM代理。
-u <username> 指定vCenter用户名。这个参数是必需的。
[-v <VM_name>] 指定要修改的虚拟机的名称。
示例:在以下示例中,安超从集群testcluster中删除。
$mxBrandVM -c testcluster -r -u admin -p abc123
mxcli.sh
注意:此命令在mxcli shell中运行。命令由子命令发出。
最低要求的用户级别: 控制台
语法: mxcli.sh [options] subcommand
用法: 管理安超管理服务器配置
子命令 说明
[-h] 显示命令帮助。
[--help] 显示命令帮助。
mgmtConfig 显示所有的安超管理服务器属性。
通过使用以下语法发出带有属性名称和新属性值的mgmtConfig subcommand,可以更改任何属性:
mgmtConfig <attribute> <attribute_value>
例如: mgmtConfig maintenance True
示例 1: 在以下示例中,将显示所有属性。
# mxcli.sh
mxcli> mgmtConfig
mgmtIpAddr : 196.1.8.80
mgmtNetMask : 255.255.255.0
ctrlType : 0
hvType : 0
ctrlServer : 196.1.10.9
clusterId : domain-c608274
vcExtKey : hyperconverged.extension.domain-c608274
nfsHost : 366c5247-e91b-4142-8d17-f87beb26f7ff
nfsPath : /hyperconverged
datastoreId : datastore-608280
datastoreName : ArcherOS-Cluster-D
defaultGateway : 196.1.8.1
maintenance : False
dns1 : 196.1.10.10
dns2 : 196.1.10.24
NetVlan : 301
storageNetPrefix : 169.254.2.0
storageNetMask : 255.255.255.0
dataCompression : True
dataDeduplication : False
FlashDiskOption : Hybrid
LfsConfigs : metadevEnabled=true|partialHddUsage=false|ssdMirrored=false|pageSize=4k| rackId=
mgmtNtIf : eth0
ctrlIds : 16 19 4 13 7
mxilSize : 200
compressionAlgorithm : lz4
vendorName : ArcherOS Reserved
productName : ArInsight
zkDesiredQuorumSize : 5
hvAdminUser :
hvAdminPasswd :
示例 2: 在以下示例中,集群ID从domain-c608274(如上例所示)修改为domain-c103
mxcli.sh
mxcli> mgmtConfig clusterId domain-c103
mxClusterShutdown
注意: 在正常情况下,建议使用引导提示来运行此命令。这可以通过发出没有选项的命令来实现。
最低要求的用户级别: 控制台
语法: mxClusterShutdown [options]
用法: 执行干净的集群关闭。
参数: 说明:
[-h] 显示命令帮助。
[--help] 显示命令帮助。
[-noninteractive] 指定在没有用户交互的情况下运行此命令。
[-nopoweroff] 指定在关机后此集群不关闭。
[-nochecks] 指定忽略在集群关闭开始之前检测到的任何错误。
[-startupdelay<delay_time>] 指定启动时节点的等待时间(<delay_time>)(以秒为单位)。
mxConfig
最低要求的用户级别: 控制台
语法: mxConfig -c <cluster_name> -m <management_IP_address|FQDN> -u <username> -p <password> -v <vCenter_IP_address|FQDN> [options]
用法: 用于更改管理IP地址,更改vCenter服务器,以及更改管理网关和网络。
参数 说明
-c <cluster_name> 指定在其上执行mxConfig操作的集群。这个参数是必需的。
[-d <DNS>] 指定主DNS。
[-e] 指定仅注册vCenter扩展。
[-g <gateway_address>] 指定网关。
-m <management_IP_address|FQDN> 指定管理服务器的IP地址或完全合格的域名。这个参数是必需的。
[-p <password>] 指定vCenter密码。如果未指定,系统将提示您输入密码。
[-s <subnetmask>] 指定子网掩码。
-u <username> 指定vCenter用户名。这个参数是必需的。
-v <vCenter_IP_address>|<FQDN> 指定vCenter IP地址或完全合格的域名。这个参数是必需的。
示例 1: 在以下示例中,更改了管理IP的地址。
$mxConfig -v 10.2.3.150 -u foo -p abc123 -c maxtacluster -m 10.3.1.140
示例 2: 在以下示例中,更新了vCenter扩展。
$mxConfig -v 10.2.3.150 -u foo -p abc123 -c maxtacluster -d 10.1.8.2 -e
示例 3: 在以下示例中,更改了管理网关。
$mxConfig -v 10.2.3.150 -u foo -p abc123 -c maxtacluster -g 10.6.6.12
mxServices
最低要求的用户级别: 控制台
语法: mxServices [options]
用法: 用于添加、删除和替换节点及磁盘,以及修改意图(intent)日志、缓存和元数据。
参数: 说明:
[-h] | [--help] 显示命令帮助。
[-l] | [--list_nodes] 显示集群中的所有节点。
[-L] | [--list_disks] 列出集群中的所有磁盘ID。如果与 –n 选项一起使用,则列出指定节点的磁盘ID。
[-n <node_ID>] | [--node <node_ID>] 指定在其上执行mxServices操作的节点。<node_ID>应当以短节点ID格式指定;例如01, 02, 09等。当此选项与 --list_disks选项一起使用时,则仅显示属于指定节点的磁盘。
[-d <disk_ID>] | [--disk <disk_ID>] 指定在其上执行mxServices操作的磁盘。此选项仅用于磁盘更换和删除操作。
[-o addResource|replaceResource] | [--op addResource|replaceResource] 指定将要执行添加或替换操作。此选项可以与 --disk选项一起使用。在添加或更换磁盘使用此选项,用于增加AxIL空间。
注意:替换(replace)操作仅对SSD替换有效。
[-o addStorage|replaceStorage] | [--op addStorage|replaceStorage] 指定将要执行添加或替换操作。此选项可以与 --disk选项一起使用。在添加或更换磁盘时使用此选项,用于增加空间。
注意:替换(replace)操作仅对SSD替换有效。
[-s <size>G|M|K] 按指定的大小删除SSD上的读缓存(以便释放空间)。
目标大小可以用GB(G)、MB(M)、KB(K)或字节(没有后缀)来指定。此选项只能与free操作一起使用。
[-f] | [--force_add] 强制执行磁盘添加操作并忽略任何控制台输入或警告。此选项仅在与--op add参数一起使用时有效。
[-D <new_disk_ID>] | [--new_disk <new_disk_ID>] 标识要添加的或删除的新的未注册磁盘。此选项仅在与--op add、 --op replace或--op remove 参数一起使用时有效。
[-g <intentlog_size>] | [--extlog <intentlog_size>] 根据为<intentlog_size>参数输入的值来扩展意图(intent)日志。
指定的值以MB为单位。此参数只能用于添加SSD。
[-F] | [--force] 在没有控制台输入的情况下运行此命令。此参数仅适用于root用户。
示例 1: 在以下示例中,mxServices被命令用于从节点01中删除磁盘01。
#mxServices --node 01 --disk 01 --op remove
omEjectNode
最低要求的用户级别: 控制台
语法: omEjectNode -n <shortnodeID> -s [options]
用法: 启动节点清理过程并完成从安超集群中删除节点的过程。
参数: 说明:
[-h] | [--help] 显示命令帮助。
-n <shortnodeID> | --node <shortnodeID> 标识在其上执行操作的节点,该节点由<node_ID>指定。应输入短节点ID;例如01、02、09等。
-s | --set 为指定的节点设置位图,并指示在进行数据重定位和清理后,节点将从安超集群中弹出。
[-c] | [--clear] 清除指定节点的位图。
[-f] | [--force] 强制指定的节点进入FAILED(故障)状态,并开始数据重定位。仅当节点处于MISSING(丢失)状态时才能使用此选项。
[--show] 显示被弹出的节点的位图。
示例: 在以下示例中,节点2发生故障,因此发出omEjectNode命令,以便在从故障节点中完成数据重定位后启动节点清理过程
$ omEjectNode -n 2 -s
op_status
最低要求的用户级别: 控制台
语法: op_status [options]
用法: 报告正在进行的添加和替换操作的状态。
参数: 说明:
[-h] | [--help] 显示命令帮助。
[-i <operation_ID>] | [--id =<operation_ID>] 显示<operation_ID>所指定的特定任务的进度详细信息。操作ID必须表示为op_<number>。
[-n <node_ID>] | [--node=<node_ID>] 标识在其上执行操作的节点,该节点由<node_ID>指定。应输入短节点ID;例如01、02、09等。
[-u <refresh_rate>] | [--update=<refresh_rate>] 指定使用输入的<refresh_rate>值所规定的频率来刷新所显示的任务的进度详细信息。<refresh_rate>值以秒为单位。仅当指定了 -i选项时,才能使用此选项。
示例 1: 在以下示例中,显示出任务 op_011 的进度详细信息。
$ op_status --id=op_011
示例 2: 在以下示例中,任务 op_011 的进度详细信息被设置为每5秒刷新一次。
$ op_status --id=op_011 --update=5
...