2 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是因?yàn)楫?dāng)您在 Go 中運(yùn)行 serf 時(shí)serf.Create(我假設(shè)您將上述配置傳遞給),它只會啟動與配置中提到的端口的連接,而不會啟動 RPC 服務(wù)。
但是,當(dāng)serf agent它運(yùn)行時(shí),它還會在端口 7373 上生成一個(gè)偵聽器。
這是我假設(shè)您正在為代理運(yùn)行的程序:
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 端口已綁定,則與此輸出對比:
#running serf agent
$ nc localhost 7373 -v
Connection to localhost port 7373 [tcp/*] succeeded!

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
我終于明白我做錯(cuò)了什么。
我的目標(biāo)是擁有一個(gè) Serf 集群并使節(jié)點(diǎn)相互通信。為此,我必須像我一樣啟動 serf 服務(wù),但不需要客戶端,節(jié)點(diǎn)在加入集群后相互通信。
我將按照我嘗試的方式使用 Serf 客戶端,前提是我通過 Serf cli 啟動 Serf 代理。
- 2 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)