背景

之前云桌面使用的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