Browse Source

Merge pull request #3385 from Woellchen/feature/cluster-status-return-healthy

Add healthy indicator for raft status
pull/3387/head
Chris Lu 2 years ago
committed by GitHub
parent
commit
0bb3ba17ae
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      weed/command/master.go
  2. 9
      weed/server/raft_server_handlers.go

7
weed/command/master.go

@ -2,19 +2,21 @@ package command
import ( import (
"fmt" "fmt"
"golang.org/x/exp/slices"
"net/http" "net/http"
"os" "os"
"path" "path"
"strings" "strings"
"time" "time"
"golang.org/x/exp/slices"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/seaweedfs/raft/protobuf" "github.com/seaweedfs/raft/protobuf"
stats_collect "github.com/seaweedfs/seaweedfs/weed/stats"
"github.com/spf13/viper" "github.com/spf13/viper"
"google.golang.org/grpc/reflection" "google.golang.org/grpc/reflection"
stats_collect "github.com/seaweedfs/seaweedfs/weed/stats"
"github.com/seaweedfs/seaweedfs/weed/util/grace" "github.com/seaweedfs/seaweedfs/weed/util/grace"
"github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/glog"
@ -179,6 +181,7 @@ func startMaster(masterOption MasterOptions, masterWhiteList []string) {
} }
ms.SetRaftServer(raftServer) ms.SetRaftServer(raftServer)
r.HandleFunc("/cluster/status", raftServer.StatusHandler).Methods("GET") r.HandleFunc("/cluster/status", raftServer.StatusHandler).Methods("GET")
r.HandleFunc("/cluster/healthz", raftServer.HealthzHandler).Methods("GET", "HEAD")
if *m.raftHashicorp { if *m.raftHashicorp {
r.HandleFunc("/raft/stats", raftServer.StatsRaftHandler).Methods("GET") r.HandleFunc("/raft/stats", raftServer.StatsRaftHandler).Methods("GET")
} }

9
weed/server/raft_server_handlers.go

@ -26,6 +26,15 @@ func (s *RaftServer) StatusHandler(w http.ResponseWriter, r *http.Request) {
writeJsonQuiet(w, r, http.StatusOK, ret) writeJsonQuiet(w, r, http.StatusOK, ret)
} }
func (s *RaftServer) HealthzHandler(w http.ResponseWriter, r *http.Request) {
_, err := s.topo.Leader()
if err != nil {
w.WriteHeader(http.StatusServiceUnavailable)
} else {
w.WriteHeader(http.StatusOK)
}
}
func (s *RaftServer) StatsRaftHandler(w http.ResponseWriter, r *http.Request) { func (s *RaftServer) StatsRaftHandler(w http.ResponseWriter, r *http.Request) {
if s.RaftHashicorp == nil { if s.RaftHashicorp == nil {
writeJsonQuiet(w, r, http.StatusNotFound, nil) writeJsonQuiet(w, r, http.StatusNotFound, nil)

Loading…
Cancel
Save