main.go 1000 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "log"
  4. "os"
  5. "igit.com/xbase/raft"
  6. )
  7. func main() {
  8. // 1. 配置初始化
  9. config := raft.DefaultConfig()
  10. config.NodeID = "node2"
  11. config.ListenAddr = "127.0.0.1:9002"
  12. config.HTTPAddr = ":8002" // Enable HTTP API
  13. config.DataDir = "data/node2"
  14. config.Logger = &raft.DefaultLogger{Prefix: "node2"}
  15. // Node 2 starts empty and joins later, or can be part of cluster if we update config
  16. // Here we let it join later via CLI or pre-configure it empty
  17. // To make it easy to test clustered auth, let's just join manually via CLI from node1
  18. // Ensure data directory exists
  19. os.MkdirAll(config.DataDir, 0755)
  20. // 2. 创建 KV Server
  21. server, err := raft.NewKVServer(config)
  22. if err != nil {
  23. log.Fatalf("Failed to create server: %v", err)
  24. }
  25. // 3. 启动服务
  26. if err := server.Start(); err != nil {
  27. log.Fatalf("Failed to start server: %v", err)
  28. }
  29. defer server.Stop()
  30. log.Println("Node2 started on 127.0.0.1:9002 (HTTP :8002)")
  31. // Block forever
  32. select {}
  33. }