问题

有大概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. 【Problems】端口被占用 查看是被谁占用并关闭它

    文章目录 Windows Linux 经常在Windows.Linux环境下运行JavaWeb项目,Tomcat的端口被占用了. 端口被占用就查看是被谁占用关闭它就行. Windows 在Window ...

  2. JavaScript入门-对象

    js对象 本篇主要介绍js里如何创建对象,以及for循环访问对象的成员... 什么是对象? 对象,并不是中文里有男女朋友意思,它是从英文里翻译来的,英文叫[Object],目标,物体,物品的意思. 在 ...

  3. [mysql]ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

    转载自:http://www.cnblogs.com/joeblackzqq/p/4526589.html From: http://m.blog.csdn.net/blog/langkeziju/1 ...

  4. 【Oracle】instr()函数详解

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...

  5. ctfhub技能树—文件上传—双写后缀

    双写后缀绕过 用于只将文件后缀名,例如"php"字符串过滤的场合: 例如:上传时将Burpsuite截获的数据包中文件名[evil.php]改为[evil.pphphp],那么过滤 ...

  6. 使用modify修改内表

    modify修改内表,有这样一种方式,MODIFY TABLE itab FROM wa [TRANSPORTING ..]. 然后这里的内表itab是有条件的,这个itab必须要有table key ...

  7. RocketMq消息 demo

    参考 https://blog.csdn.net/asdf08442a/article/details/54882769 整理出来的测试 demo 1.produce 生产者 1 package co ...

  8. 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出

    18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...

  9. numpy模块(详解)

    重点 索引和切片 级联 聚合操作 统计操作 矩阵 什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 数据分析是用适当的方法对收集来的大量数据进行分析,帮助 ...

  10. Flink的状态与容错

    本文主要运行到Flink以下内容 检查点机制(CheckPoint) 状态管理器(StateBackend) 状态周期(StateTtlConfig) 关系 首先要将state和checkpoint概 ...