func sentinel(cmd *cobra.Command, args []string) { capnslog.SetGlobalLogLevel(capnslog.INFO) if cfg.debug { capnslog.SetGlobalLogLevel(capnslog.DEBUG) } if cfg.clusterName == "" { log.Fatalf("cluster name required") } if kubernetes.OnKubernetes() { if cfg.keeperKubeLabelSelector == "" { log.Fatalf("keeper-kube-label-selector must be define under kubernetes") } } u := uuid.NewV4() id := fmt.Sprintf("%x", u[:4]) log.Infof("id: %s", id) stop := make(chan bool, 0) end := make(chan bool, 0) sigs := make(chan os.Signal, 1) signal.Notify(sigs, os.Interrupt, os.Kill) go sigHandler(sigs, stop) s, err := NewSentinel(id, cfg, stop, end) if err != nil { log.Fatalf("cannot create sentinel: %v", err) } go s.Start() <-end }
func (p *PostgresKeeper) publish() error { if kubernetes.OnKubernetes() { log.Infof("running under kubernetes. Not using store discovery") return nil } discoveryInfo := &cluster.KeeperDiscoveryInfo{ ListenAddress: p.listenAddress, Port: p.port, } log.Debugf(spew.Sprintf("discoveryInfo: %#v", discoveryInfo)) if err := p.e.SetKeeperDiscoveryInfo(p.id, discoveryInfo); err != nil { return err } return nil }
func (p *PostgresKeeper) publish() error { if kubernetes.OnKubernetes() { log.Infof("running under kubernetes. Not publishing ourself to etcd") return nil } discoveryInfo := &cluster.MemberDiscoveryInfo{ Host: p.listenAddress, Port: p.port, } log.Debugf(spew.Sprintf("discoveryInfo: %#v", discoveryInfo)) if _, err := p.e.SetMemberDiscoveryInfo(p.id, discoveryInfo); err != nil { return err } return nil }
func (s *Sentinel) discover(ctx context.Context) (cluster.KeepersDiscoveryInfo, error) { if kubernetes.OnKubernetes() { ksdi := cluster.KeepersDiscoveryInfo{} log.Debugf("running inside kubernetes") podsIPs, err := s.getKubernetesPodsIPs(ctx) if err != nil { return nil, fmt.Errorf("failed to get running pods ips: %v", err) } for _, podIP := range podsIPs { ksdi = append(ksdi, &cluster.KeeperDiscoveryInfo{ListenAddress: podIP, Port: cfg.keeperPort}) } return ksdi, nil } return s.discoverEtcd(ctx) }