使用 consul 注册多个节点
Register multiple nodes with consul
问题是,如何在同一ID下向consul注册多个节点。我在 docker 中 运行 设置一个领事服务器,在我的 machine 本地主机中我 运行 两个相同的进程 HelloWorld
我的 mac.
上的 nodejs 应用程序
问题:3000
进程 运行ning 的条目被 [=15= 进程 运行ning 替换] 因此我最终只得到一个节点。
问题 2 我从哪里下载这个 GUI 客户端(不是 Web UI),如屏幕截图所示 Mac .
节点 1 端口 3000 的负载
{
HTTP: 'http://My-Mac-Pro.local:3000/health',
Interval: '15s',
Name: 'My-Mac-Pro.local',
ID: 'user1'
}
节点 2 端口 3001 的负载
{
HTTP: 'http://My-Mac-Pro.local:3001/health',
Interval: '15s',
Name: 'My-Mac-Pro.local',
ID: 'user2'
}
nodeJS代码
let http = require("http");
http.request({
method: "PUT",
hostname: env.CONSUL_HOST,
port: 8500,
path: "/v1/agent/check/register",
headers: {
"content-type": "application/json; charset=utf-8"
}
}, function(response){
if (response.statusCode == 200) {
resolve();
}
}).on("error", reject).end(JSON.stringify(body));
期望:看到web
下的多个节点
当您注册服务时,每个服务都应该注册唯一的服务ID
。
它可以是:${serviceName}-${hostname}-{ip}-${port}-${process.pid()}-${uuid.v4()}
或它们的任意组合,以确保您的服务 ID 是唯一的。注册负载中的不同 ID
是将 consul 设置为相同 app/serviceIdentity 运行 的不同实例的原因,它们不会 "override" 彼此
注册负载示例:
const id = `${ip}-${hostname}-${serviceIdentity}-${port}`;
const registrationDetails ={
Name: serviceIdentity,
ID: id,
Address: ip,
Port: parseInt(port),
Check: {
CheckID: `http-${id}`,
Name: `http-${id}`,
TLSSkipVerify: true,
HTTP: `http://${host}:${port}/health`,
Interval: '10s',
Notes: `Service http health`,
DeregisterCriticalServiceAfter: '60s',
},
};
问题是,如何在同一ID下向consul注册多个节点。我在 docker 中 运行 设置一个领事服务器,在我的 machine 本地主机中我 运行 两个相同的进程 HelloWorld
我的 mac.
问题:3000
进程 运行ning 的条目被 [=15= 进程 运行ning 替换] 因此我最终只得到一个节点。
问题 2 我从哪里下载这个 GUI 客户端(不是 Web UI),如屏幕截图所示 Mac .
节点 1 端口 3000 的负载
{
HTTP: 'http://My-Mac-Pro.local:3000/health',
Interval: '15s',
Name: 'My-Mac-Pro.local',
ID: 'user1'
}
节点 2 端口 3001 的负载
{
HTTP: 'http://My-Mac-Pro.local:3001/health',
Interval: '15s',
Name: 'My-Mac-Pro.local',
ID: 'user2'
}
nodeJS代码
let http = require("http");
http.request({
method: "PUT",
hostname: env.CONSUL_HOST,
port: 8500,
path: "/v1/agent/check/register",
headers: {
"content-type": "application/json; charset=utf-8"
}
}, function(response){
if (response.statusCode == 200) {
resolve();
}
}).on("error", reject).end(JSON.stringify(body));
期望:看到web
当您注册服务时,每个服务都应该注册唯一的服务ID
。
它可以是:${serviceName}-${hostname}-{ip}-${port}-${process.pid()}-${uuid.v4()}
或它们的任意组合,以确保您的服务 ID 是唯一的。注册负载中的不同 ID
是将 consul 设置为相同 app/serviceIdentity 运行 的不同实例的原因,它们不会 "override" 彼此
注册负载示例:
const id = `${ip}-${hostname}-${serviceIdentity}-${port}`;
const registrationDetails ={
Name: serviceIdentity,
ID: id,
Address: ip,
Port: parseInt(port),
Check: {
CheckID: `http-${id}`,
Name: `http-${id}`,
TLSSkipVerify: true,
HTTP: `http://${host}:${port}/health`,
Interval: '10s',
Notes: `Service http health`,
DeregisterCriticalServiceAfter: '60s',
},
};