我在多台计算机(代理)中运行一系列API(服务),并且这些服务具有某种运行状况检查。我想实现一个每次服务状态发生变化时都会触发通知的手表。 阅读Consul文档后,它应该是这样的:
consul watch -type=checks -service=myservice handler_script.ps1
我的问题在于处理程序。我编写了一个小型PowerShell脚本,每次发生更改时都会向脚本输出JSON。但是当我运行脚本时,会打开一个带有PowerShell脚本内容的记事本窗口。 我的问题是:
作为奖励问题:我可以通过编程方式执行此操作吗?例如,在服务注册时。
感谢。
答案 0 :(得分:1)
我的猜测是,consul不知道如何运行.ps1文件。请改为cmd /c powershell.exe handler_script.ps1
。
答案 1 :(得分:0)
与Marks回答:
# add `/webapp` to the backend:
location / {
proxy_pass http://localhost:8080/webapp$request_uri;
}
如果您尝试使用配置文件,对于1.0之前的consul版本,我使用了:
consul watch -type=service -service=myservice "cmd /c powershell.exe -ExecutionPolicy ByPass -NoProilfe -File C:\\Workspace\\consul\\handler_script.ps1"
对于1.0以上的领事版本,我使用了:
{
"watches":
[
{
"type": "service",
"service": "myservice",
"handler": "cmd /c powershell.exe -ExecutionPolicy ByPass -NoProilfe -File C:\\Workspace\\consul\\handler_script.ps1"
}
]
}
注意:将{
"watches":
[
{
"type": "checks",
"handler_type": "script",
"args": ["cmd", "/c", "powershell -ExecutionPolicy ByPass -NoProfile -File C:\\Workspace\\consul\\handler_script.ps1"]
}
]
}
更改为-type=checks
,也可以转义绝对路径,即-type=service