gpt4 book ai didi

go - Serf 客户端无法连接到本地运行的 RPC 客户端

转载 作者:行者123 更新时间:2023-12-01 22:06:02 25 4
gpt4 key购买 nike

我正在像这样初始化我的代理:

    conf := serf.DefaultConfig()
conf.NodeName = "node-a"
conf.MemberlistConfig.BindAddr = "127.0.0.1"
conf.MemberlistConfig.BindPort = 6666
conf.MemberlistConfig.AdvertiseAddr = "127.0.0.1"
conf.MemberlistConfig.AdvertisePort = 6666

我还有一个客户端代码试图连接到 RPC 客户端:
    c, err := client.NewRPCClient("127.0.0.1:7373")
if err != nil {
fmt.Println("error creating RCP Client:", err)
return
}

我启动我的代理,我看到了这个输出:
2020/05/06 07:15:18 [INFO] serf: EventMemberJoin: node-a 127.0.0.1
[{node-a 127.0.0.1 6666 map[] alive 1 5 2 2 5 4}]

当我启动我的客户时,我得到了这个:
error creating RCP Client: dial tcp 127.0.0.1:7373: connect: connection refused

如果我使用 CLI 启动代理,如下所示: serf agent -bind=0.0.0.0:6667 -advertise=0.0.0.0:6667 -join=0.0.0.0:6666 -node=agent-2 -log-level=debug并运行我的客户端代码,它连接到 RPC 客户端。

我确信我的代码或我对 Serf 工作原理的理解存在错误。

最佳答案

这是因为当你通过 serf.Create 在 Go 中运行 serf 时(我假设您将上述配置传递给)它只启动到配置中提到的端口的连接,而不启动 RPC 服务。

然而,当 serf agent也运行它spawns a listener在 7373 端口上。

这是我假设您正在为代理运行的程序:

package main

import (
"fmt"
"github.com/hashicorp/serf/serf"
"os"
"os/signal"
"syscall"
"time"
)

func main() {
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
fmt.Println("\r- Ctrl+C pressed")
os.Exit(0)
}()

conf := serf.DefaultConfig()
conf.NodeName = "node-a"
conf.MemberlistConfig.BindAddr = "127.0.0.1"
conf.MemberlistConfig.BindPort = 6666
conf.MemberlistConfig.AdvertiseAddr = "127.0.0.1"
conf.MemberlistConfig.AdvertisePort = 6666
serf.Create(conf)
for {
fmt.Println("- Sleeping")
time.Sleep(10 * time.Second)
}
}

使用netcat,你可以看到是这样的:
#running my go program
$ nc localhost 7373 -v
nc: connectx to localhost port 7373 (tcp) failed: Connection refused
nc: connectx to localhost port 7373 (tcp) failed: Connection refused

如果该 TCP 端口已绑定(bind),则与此输出对比:
#running serf agent
$ nc localhost 7373 -v
Connection to localhost port 7373 [tcp/*] succeeded!

关于go - Serf 客户端无法连接到本地运行的 RPC 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61633062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com