问题

有大概5台Agent Server,注册的时候,发现2台可以成功,其他的不成功。

注册失败的错误日志如下:

初步尝试

首先,Pull Server已经平稳的运行了几年了,此次注册还有部分Agent能成功,所以,首先排除Pull Server的问题。包括网络问题和代码逻辑问题。

明显是失败的Agent存在某些问题,检索关键词可以找到官方文档:

简单来说是证书的CN name存在问题,但我们从Agent上发其他请求是可以的,所以可以排除该问题。

我们使用curl命令进行请求测试,如下图:

其他尝试

既然有注册成功的Server,我们可以和注册失败的Server进行一些其他方面的对比,看是否是系统配置问题(展示命令为主,非实际操作)

对比操作系统

对比PowerShell版本

对比NET 版本

对比WinRM设置

对比网络设置

结果发现,2台Server除了操作系统版本不一样以外,其他的配置完全一样。

其他尝试

这个时候,就没有思路了,Pull Server不可能针对某些Server进行设置,况且就是在Agent应用LCM 配置的时候出错了,查下数据库,确保它确实没有注册成功(写入数据)。

根据AgentId查询,果然是没有写入数据。

理论上,即使有数据,重复注册也是可以的。

到此,实在没有好办法了。(其实就在此处错过了)

后来

总要给客户一个交代的,找不出来原因,我们可以通过人工手动向数据库插入数据进行注册。

我们写了insert的SQL脚本,运行,提示:已经有相同的Node Name了!

柳暗花明!

怎么会有Node Name了呢,刚明明使用AgentId查询还没有呢?

使用Node Name查询,确实查到了一条,但是AgentId却不是现在Server的。

也就是说,该Agent Server在之前某个时候注册过(通过Get-DSCLocalcongurtionManager命令也可以看出来),但后来AgentId变化了,所以新注册的时候,由于已经存在该Node Name,导致数据库插入数据失败。

删除该脏数据后,重新注册,一切好了。

AgentId为什么会改变呢?我们通过systeminfo命令看到,该系统一个月前重装了,所以产生了新的guid给LCM,也就是新的AgentId。

吐槽

  • DSC这块由微软打包提供,出现问题,错误抛出的比较笼统,不好明确的定位出问题
  • 其实一开始就发现该Server已经注册过,应该查询数据库,并且思维缜密些,使用Node Name + AgentId+ ip等分别查询,确保数据的问题。
  • 该问题出现的场景实在特殊,也增加了排查的难度。
  • DSC相关的资料实在太少,而且不够详细。

总结

总之,该问题出现的原因就是DSC数据库中已经存在相同的Node Name,删除旧数据即可解决。

DSC注册Agent失败- InternalServerError的更多相关文章

  1. Google Play开发者账号注册与失败申诉攻略

    Google Play开发者账号注册与失败申诉攻略 这篇文章我在网上找了好久,是在Google play进行开发者账号注册方法,介绍的很详细.现在分享一下.[原文地址] 为了方便开发者们注册谷歌的官方 ...

  2. 注册OCX失败

    今天注册某个OCX时,Windows报告以下错误: 模块“XXX.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80040200. 这是Windows权限引起的 ...

  3. 同一个dll 不同路径下注册 一个失败 一个成功

    一个路径下用regsvr32注册成功,一个注册失败,提示平台不兼容. 最后用depends查看依赖的dll,发现依赖的dll有问题,从注册成功的路径下复制一个过来,重新注册就成功了

  4. 注册OCX失败/ 找不到指定的模块

    错误信息:模块“*.OCX”加载失败,请确定二进制保存在指定的路径中,或者调试它以检查该二进制或相关的.dll文件是否有问题 对于电脑新手,关于OCX或DLL缺失是一件令人十分头疼的事,如果不幸遇到此 ...

  5. 注册dll失败

    注册DLL的时候一出现错误:   win8下: (右键弹出)     如果再不行,   64位系统下,把DLL移动到C:\Windows\SysWOW64下 更改路径

  6. SDE注册版本失败,仅支持一个空间列

    如果直接编辑SDE要素类与要素可以不需要版本,使用默认版本,如果要让用户通过界面编辑,即使用开启编辑.保存编辑和停止编辑,就需要注册为版本,而在注册版本弹出如下错误: 正如错误所说,一个要素类或shp ...

  7. 在Windows 7 64位下注册ActiveX失败的解决办法

    copy Chart10W.dll  %SystemRoot%\SysWOW64\ copy cellweb5.inf  %SystemRoot%\SysWOW64\ copy hado.dll %S ...

  8. 关于64位操作系统使用C#访问注册表失败的问题

    通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...

  9. arcgis连接oracle发布服务,提示数据未注册到服务器,手动注册服务器失败

    arcgis连接oracle数据库发布服务时候,分析之后提示:数据未注册到服务器上. 手动注册之后提示:数据客户端没有正确配置.实际上数据库客户端已经安装完成也可以使用. 设置 PATH 环境变量(仅 ...

随机推荐

  1. (十九)hashlib模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 注意:md5和sha25 ...

  2. 【Oracle】静默安装oracle 11.2.0.4 超详细

    安装oracle 1.执行脚本完成初始化oracle环境 2.解压缩oracle的压缩包,单实例1个,rac是2两个压缩包 3.修改response下的db_install.rsp 修改内容如下: - ...

  3. 萌新入门之python基础语法

    首先我们先了解一些python最最基础的入门 1.标识符 定义:我们写代码的时候自己取得名字比如项目名,包名,模块名这些: 规范:1.数字/字母/下划线组成,不能以数字开头 2.起名字要见名知意 3. ...

  4. windows上传ipa到苹果开发者中(app store)的方法

    假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...

  5. PCB导线长宽与电源压降

    为了计算PCB中电源线走线后的压降,需要知道PCB中使用的铜的电阻率, PCB板中的铜是直接贴上去的铜箔,因此可以当成纯铜(我问了PCB打样的厂家他们的铜的电阻率,但是他们给我说不知道,所以干脆就当成 ...

  6. Spark底层原理详细解析(深度好文,建议收藏)

    Spark简介 Apache Spark是用于大规模数据处理的统一分析引擎,基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量硬件之上, ...

  7. scrapy-redis非多网址采集的使用

    问题描述 默认RedisSpider在启动时,首先会读取redis中的spidername:start_urls,如果有值则根据url构建request对象. 现在的要求是,根据特定关键词采集. 例如 ...

  8. Hash Join: Basic Steps

    Joins https://docs.oracle.com/database/121/TGSQL/tgsql_join.htm#TGSQL242 tidb/index_lookup_hash_join ...

  9. JAVA中关于基本数据和引用数据参数传递过程

    基本数据和引用数据参数传递过程 案例1:判断程序的输出结果 class Demo{ public static void main(String[] atgs){ int x =4; show(x); ...

  10. get_or_create update_or_create

    django/query.py at master · django/django https://github.com/django/django/blob/master/django/db/mod ...