Skip to content

Commit 51e1809

Browse files
authored
Fix when virtual server config be removed. (#33)
* Fix when virtual server config be removed. Signed-off-by: huaiyou <huaiyou.cyz@alibaba-inc.com> * If target ip is nil, skip sync route. Signed-off-by: huaiyou <huaiyou.cyz@alibaba-inc.com>
1 parent 40c1385 commit 51e1809

4 files changed

Lines changed: 18 additions & 5 deletions

File tree

care/care.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ func (care *LvsCare) VsAndRsCare() {
3636
for {
3737
select {
3838
case <-t.C:
39+
// in some cases, virtual server maybe removed
40+
isAvailable := care.lvs.IsVirtualServerAvailable(care.VirtualServer)
41+
if !isAvailable {
42+
err := care.lvs.CreateVirtualServer(care.VirtualServer, true)
43+
//virtual server is exists
44+
if err != nil {
45+
glog.Errorf("failed to create virtual server: %v", err)
46+
47+
return
48+
}
49+
}
3950
//check real server
4051
lvs.CheckRealServers(care.HealthPath, care.HealthSchem)
4152
case signa := <-sig:
@@ -75,8 +86,6 @@ func SetTargetIP() error {
7586
if LVS.TargetIP == nil {
7687
LVS.TargetIP = net.ParseIP(os.Getenv("LVSCARE_NODE_IP"))
7788
}
78-
if LVS.TargetIP == nil {
79-
return errors.New("target ip can't empty")
80-
}
89+
8190
return nil
8291
}

cmd/care.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ var careCmd = &cobra.Command{
3232
if err := care.SetTargetIP(); err != nil {
3333
return err
3434
}
35+
// if target ip is empty, skip sync router
36+
if care.LVS.TargetIP == nil {
37+
return nil
38+
}
3539
return care.LVS.SyncRouter()
3640
},
3741
}

service/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func (l *lvscare) CheckRealServers(path, schem string) {
158158
//add it back
159159
ip := realServer.IP
160160
port := strconv.Itoa(int(realServer.Port))
161-
err := l.CreateRealServer(ip+":"+port, false)
161+
err := l.CreateRealServer(net.JoinHostPort(ip, port), false)
162162
if err != nil {
163163
glog.Warningf("CheckRealServers error[add real server failed]: %s; %d; %v ", realServer.IP, realServer.Port, err)
164164
}

utils/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func SplitServer(server string) (string, uint16) {
3333
//IsHTTPAPIHealth is check http error
3434
func IsHTTPAPIHealth(ip, port, path, schem string) bool {
3535
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
36-
url := fmt.Sprintf("%s://%s:%s%s", schem, ip, port, path)
36+
url := fmt.Sprintf("%s://%s%s", schem, net.JoinHostPort(ip, port), path)
3737
resp, err := http.Get(url)
3838
if err != nil {
3939
glog.V(8).Infof("IsHTTPAPIHealth error: %v", err)

0 commit comments

Comments
 (0)