main.go 758 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "net/http"
  6. etcdserver "github.com/coreos/etcd/etcdserver2"
  7. "github.com/coreos/etcd/etcdserver2/etcdhttp"
  8. "github.com/coreos/etcd/raft"
  9. "github.com/coreos/etcd/raft/raftpb"
  10. )
  11. var (
  12. id = flag.String("id", "default", "The id of this server")
  13. )
  14. func main() {
  15. const V2Prefix = "/v2"
  16. peers := etcdhttp.Discover(V2Prefix, peerips)
  17. n := raft.Start(*id, peers.Ids())
  18. s := &etcdserver.Server{
  19. Node: n,
  20. Save: func(st raftpb.State, ents []raftpb.Entry) {}, // TODO: use wal
  21. Send: etcdhttp.Sender(V2Prefix),
  22. }
  23. etcdserver.Start(s)
  24. h := &etcdhttp.Handler{
  25. Timeout: timeout,
  26. Server: s,
  27. Peers: peers,
  28. }
  29. http.Handle(V2Prefix, http.StripPrefix(V2Prefix, h))
  30. log.Fatal(http.ListenAndServe(*laddr, nil))
  31. }