DSC注册Agent失败- InternalServerError
问题
有大概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的更多相关文章
- Google Play开发者账号注册与失败申诉攻略
Google Play开发者账号注册与失败申诉攻略 这篇文章我在网上找了好久,是在Google play进行开发者账号注册方法,介绍的很详细.现在分享一下.[原文地址] 为了方便开发者们注册谷歌的官方 ...
- 注册OCX失败
今天注册某个OCX时,Windows报告以下错误: 模块“XXX.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80040200. 这是Windows权限引起的 ...
- 同一个dll 不同路径下注册 一个失败 一个成功
一个路径下用regsvr32注册成功,一个注册失败,提示平台不兼容. 最后用depends查看依赖的dll,发现依赖的dll有问题,从注册成功的路径下复制一个过来,重新注册就成功了
- 注册OCX失败/ 找不到指定的模块
错误信息:模块“*.OCX”加载失败,请确定二进制保存在指定的路径中,或者调试它以检查该二进制或相关的.dll文件是否有问题 对于电脑新手,关于OCX或DLL缺失是一件令人十分头疼的事,如果不幸遇到此 ...
- 注册dll失败
注册DLL的时候一出现错误: win8下: (右键弹出) 如果再不行, 64位系统下,把DLL移动到C:\Windows\SysWOW64下 更改路径
- SDE注册版本失败,仅支持一个空间列
如果直接编辑SDE要素类与要素可以不需要版本,使用默认版本,如果要让用户通过界面编辑,即使用开启编辑.保存编辑和停止编辑,就需要注册为版本,而在注册版本弹出如下错误: 正如错误所说,一个要素类或shp ...
- 在Windows 7 64位下注册ActiveX失败的解决办法
copy Chart10W.dll %SystemRoot%\SysWOW64\ copy cellweb5.inf %SystemRoot%\SysWOW64\ copy hado.dll %S ...
- 关于64位操作系统使用C#访问注册表失败的问题
通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...
- arcgis连接oracle发布服务,提示数据未注册到服务器,手动注册服务器失败
arcgis连接oracle数据库发布服务时候,分析之后提示:数据未注册到服务器上. 手动注册之后提示:数据客户端没有正确配置.实际上数据库客户端已经安装完成也可以使用. 设置 PATH 环境变量(仅 ...
随机推荐
- ps 2020 下载
一款极具实用价值的作图软件--ps,由于正版价格昂贵,所以这里分享破解版的资源.b话少说,下面是下载链接和安装步骤: 下载链接: 百度网盘链接:https://pan.baidu.com/s/1XPf ...
- qmake奇淫技巧之字符串宏定义
阅读本文大概需要3.3分钟 我们平时在软件开发过程中需要定义一些宏,以便在代码中调用,这样每次不需要修改代码,只需要修改外部编译命令就可以得到想要的参数,非常方便 比如我们想在软件介绍中显示软件版本, ...
- 卷积神经网络学习笔记——SENet
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和SE ...
- RESTful风格、异常处理、Spring框架
1.RESTful风格 什么是RESTful风格? REST是REpressentational State Transfer的缩写,中文翻译为表述性状态转移,REST是一种体系结构,而HTTP是一种 ...
- Java基础复习3
循环的嵌套 public class demo8 { public static void main(String[] args) { /* 输出######## ...
- jvm源码解析java对象头
认真学习过java的同学应该都知道,java对象由三个部分组成:对象头,实例数据,对齐填充,这三大部分扛起了java的大旗对象,实例数据其实就是我们对象中的数据,对齐填充是由于为了规则分配内存空间,j ...
- ubuntu更新下载软件卡住0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::23)]
一台ubuntu系统,查看硬件和配置环境的时候发现下载卡住了 根据提示就是有ipv6地址,系统也是配置了ipv6地址的.海外机器,而且可以ping通域名 最佳解决方案 我想出了如何让apt-get再次 ...
- autocommit 隔离级别 next lock gap lock 事务隔离级别和锁
autocommit 隔离级别 https://www.ibm.com/developerworks/cn/opensource/os-mysql-transaction-isolation-leve ...
- (hive)hive优化(转载)
1. 概述 1.1 hive的特征: 可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析: 它可以使已经存储的数据结构化: 可以直接访问存储在Apac ...
- udp 连接
在今天的内容里,我对 UDP 套接字调用 connect 方法进行了深入的分析.之所以对 UDP 使用 connect,绑定本地地址和端口,是为了让我们的程序可以快速获取异步错误信息的通知,同时也可以 ...