mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
master: remove hard coded filer settings in master.toml
fix https://github.com/chrislusf/seaweedfs/issues/2529
This commit is contained in:
parent
cd1ad88f30
commit
826a7b307e
|
@ -19,9 +19,6 @@ scripts = """
|
||||||
"""
|
"""
|
||||||
sleep_minutes = 17 # sleep minutes between each script execution
|
sleep_minutes = 17 # sleep minutes between each script execution
|
||||||
|
|
||||||
[master.filer]
|
|
||||||
default = "localhost:8888" # used by maintenance scripts if the scripts needs to use fs related commands
|
|
||||||
|
|
||||||
|
|
||||||
[master.sequencer]
|
[master.sequencer]
|
||||||
type = "raft" # Choose [raft|snowflake] type for storing the file id sequence
|
type = "raft" # Choose [raft|snowflake] type for storing the file id sequence
|
||||||
|
|
|
@ -2,7 +2,10 @@ package weed_server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/cluster"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
|
"math/rand"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.ListClusterNodesRequest) (*master_pb.ListClusterNodesResponse, error) {
|
func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.ListClusterNodesRequest) (*master_pb.ListClusterNodesResponse, error) {
|
||||||
|
@ -12,10 +15,26 @@ func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.Lis
|
||||||
|
|
||||||
for _, node := range clusterNodes {
|
for _, node := range clusterNodes {
|
||||||
resp.ClusterNodes = append(resp.ClusterNodes, &master_pb.ListClusterNodesResponse_ClusterNode{
|
resp.ClusterNodes = append(resp.ClusterNodes, &master_pb.ListClusterNodesResponse_ClusterNode{
|
||||||
Address: string(node.Address),
|
Address: string(node.Address),
|
||||||
Version: node.Version,
|
Version: node.Version,
|
||||||
IsLeader: ms.Cluster.IsOneLeader(node.Address),
|
IsLeader: ms.Cluster.IsOneLeader(node.Address),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ms *MasterServer) GetOneFiler() pb.ServerAddress {
|
||||||
|
|
||||||
|
clusterNodes := ms.Cluster.ListClusterNode(cluster.FilerType)
|
||||||
|
|
||||||
|
var filers []pb.ServerAddress
|
||||||
|
for _, node := range clusterNodes {
|
||||||
|
if ms.Cluster.IsOneLeader(node.Address) {
|
||||||
|
filers = append(filers, node.Address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(filers) > 0 {
|
||||||
|
return filers[rand.Intn(len(filers))]
|
||||||
|
}
|
||||||
|
return "localhost:8888"
|
||||||
|
}
|
||||||
|
|
|
@ -208,7 +208,6 @@ func (ms *MasterServer) proxyToLeader(f http.HandlerFunc) http.HandlerFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MasterServer) startAdminScripts() {
|
func (ms *MasterServer) startAdminScripts() {
|
||||||
var err error
|
|
||||||
|
|
||||||
v := util.GetViper()
|
v := util.GetViper()
|
||||||
adminScripts := v.GetString("master.maintenance.scripts")
|
adminScripts := v.GetString("master.maintenance.scripts")
|
||||||
|
@ -220,9 +219,6 @@ func (ms *MasterServer) startAdminScripts() {
|
||||||
v.SetDefault("master.maintenance.sleep_minutes", 17)
|
v.SetDefault("master.maintenance.sleep_minutes", 17)
|
||||||
sleepMinutes := v.GetInt("master.maintenance.sleep_minutes")
|
sleepMinutes := v.GetInt("master.maintenance.sleep_minutes")
|
||||||
|
|
||||||
v.SetDefault("master.filer.default", "localhost:8888")
|
|
||||||
filerHostPort := v.GetString("master.filer.default")
|
|
||||||
|
|
||||||
scriptLines := strings.Split(adminScripts, "\n")
|
scriptLines := strings.Split(adminScripts, "\n")
|
||||||
if !strings.Contains(adminScripts, "lock") {
|
if !strings.Contains(adminScripts, "lock") {
|
||||||
scriptLines = append(append([]string{}, "lock"), scriptLines...)
|
scriptLines = append(append([]string{}, "lock"), scriptLines...)
|
||||||
|
@ -235,14 +231,9 @@ func (ms *MasterServer) startAdminScripts() {
|
||||||
shellOptions.GrpcDialOption = security.LoadClientTLS(v, "grpc.master")
|
shellOptions.GrpcDialOption = security.LoadClientTLS(v, "grpc.master")
|
||||||
shellOptions.Masters = &masterAddress
|
shellOptions.Masters = &masterAddress
|
||||||
|
|
||||||
shellOptions.FilerAddress = pb.ServerAddress(filerHostPort)
|
|
||||||
shellOptions.Directory = "/"
|
shellOptions.Directory = "/"
|
||||||
if err != nil {
|
|
||||||
glog.V(0).Infof("failed to parse master.filer.default = %s : %v\n", filerHostPort, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
commandEnv := shell.NewCommandEnv(shellOptions)
|
commandEnv := shell.NewCommandEnv(&shellOptions)
|
||||||
|
|
||||||
reg, _ := regexp.Compile(`'.*?'|".*?"|\S+`)
|
reg, _ := regexp.Compile(`'.*?'|".*?"|\S+`)
|
||||||
|
|
||||||
|
@ -254,6 +245,10 @@ func (ms *MasterServer) startAdminScripts() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(time.Duration(sleepMinutes) * time.Minute)
|
time.Sleep(time.Duration(sleepMinutes) * time.Minute)
|
||||||
if ms.Topo.IsLeader() {
|
if ms.Topo.IsLeader() {
|
||||||
|
shellOptions.FilerAddress = ms.GetOneFiler()
|
||||||
|
if shellOptions.FilerAddress == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
for _, line := range scriptLines {
|
for _, line := range scriptLines {
|
||||||
for _, c := range strings.Split(line, ";") {
|
for _, c := range strings.Split(line, ";") {
|
||||||
processEachCmd(reg, c, commandEnv)
|
processEachCmd(reg, c, commandEnv)
|
||||||
|
|
|
@ -29,7 +29,7 @@ type ShellOptions struct {
|
||||||
type CommandEnv struct {
|
type CommandEnv struct {
|
||||||
env map[string]string
|
env map[string]string
|
||||||
MasterClient *wdclient.MasterClient
|
MasterClient *wdclient.MasterClient
|
||||||
option ShellOptions
|
option *ShellOptions
|
||||||
locker *exclusive_locks.ExclusiveLocker
|
locker *exclusive_locks.ExclusiveLocker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ var (
|
||||||
Commands = []command{}
|
Commands = []command{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCommandEnv(options ShellOptions) *CommandEnv {
|
func NewCommandEnv(options *ShellOptions) *CommandEnv {
|
||||||
ce := &CommandEnv{
|
ce := &CommandEnv{
|
||||||
env: make(map[string]string),
|
env: make(map[string]string),
|
||||||
MasterClient: wdclient.NewMasterClient(options.GrpcDialOption, pb.AdminShellClient, "", "", pb.ServerAddresses(*options.Masters).ToAddresses()),
|
MasterClient: wdclient.NewMasterClient(options.GrpcDialOption, pb.AdminShellClient, "", "", pb.ServerAddresses(*options.Masters).ToAddresses()),
|
||||||
|
|
Loading…
Reference in a new issue