|
@@ -101,14 +101,6 @@ func (sb *sandbox) populateLoadbalancers(ep *endpoint) {
|
|
for _, ip := range lb.backEnds {
|
|
for _, ip := range lb.backEnds {
|
|
sb.addLBBackend(ip, lb.vip, lb.fwMark, lb.service.ingressPorts,
|
|
sb.addLBBackend(ip, lb.vip, lb.fwMark, lb.service.ingressPorts,
|
|
eIP, gwIP, addService, n.ingress)
|
|
eIP, gwIP, addService, n.ingress)
|
|
- // For a new service program the vip as an alias on the task's sandbox interface
|
|
|
|
- // connected to this network.
|
|
|
|
- if !addService {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- if err := ep.setAliasIP(sb, lb.vip, true); err != nil {
|
|
|
|
- logrus.Errorf("Adding Service VIP %v to ep %v(%v) failed: %v", lb.vip, ep.ID(), ep.Name(), err)
|
|
|
|
- }
|
|
|
|
addService = false
|
|
addService = false
|
|
}
|
|
}
|
|
lb.service.Unlock()
|
|
lb.service.Unlock()
|
|
@@ -132,16 +124,8 @@ func (n *network) addLBBackend(ip, vip net.IP, fwMark uint32, ingressPorts []*Po
|
|
}
|
|
}
|
|
|
|
|
|
sb.addLBBackend(ip, vip, fwMark, ingressPorts, ep.Iface().Address(), gwIP, addService, n.ingress)
|
|
sb.addLBBackend(ip, vip, fwMark, ingressPorts, ep.Iface().Address(), gwIP, addService, n.ingress)
|
|
-
|
|
|
|
- // For a new service program the vip as an alias on the task's sandbox interface
|
|
|
|
- // connected to this network.
|
|
|
|
- if !addService {
|
|
|
|
- return false
|
|
|
|
- }
|
|
|
|
- if err := ep.setAliasIP(sb, vip, true); err != nil {
|
|
|
|
- logrus.Errorf("Adding Service VIP %v to ep %v(%v) failed: %v", vip, ep.ID(), ep.Name(), err)
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
return false
|
|
return false
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -163,16 +147,8 @@ func (n *network) rmLBBackend(ip, vip net.IP, fwMark uint32, ingressPorts []*Por
|
|
}
|
|
}
|
|
|
|
|
|
sb.rmLBBackend(ip, vip, fwMark, ingressPorts, ep.Iface().Address(), gwIP, rmService, n.ingress)
|
|
sb.rmLBBackend(ip, vip, fwMark, ingressPorts, ep.Iface().Address(), gwIP, rmService, n.ingress)
|
|
-
|
|
|
|
- // If the service is being remove its vip alias on on the task's sandbox interface
|
|
|
|
- // has to be removed as well.
|
|
|
|
- if !rmService {
|
|
|
|
- return false
|
|
|
|
- }
|
|
|
|
- if err := ep.setAliasIP(sb, vip, false); err != nil {
|
|
|
|
- logrus.Errorf("Removing Service VIP %v from ep %v(%v) failed: %v", vip, ep.ID(), ep.Name(), err)
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
return false
|
|
return false
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -678,6 +654,9 @@ func fwMarker() {
|
|
rule := strings.Fields(fmt.Sprintf("-t mangle %s OUTPUT -d %s/32 -j MARK --set-mark %d", addDelOpt, vip, fwMark))
|
|
rule := strings.Fields(fmt.Sprintf("-t mangle %s OUTPUT -d %s/32 -j MARK --set-mark %d", addDelOpt, vip, fwMark))
|
|
rules = append(rules, rule)
|
|
rules = append(rules, rule)
|
|
|
|
|
|
|
|
+ rule = strings.Fields(fmt.Sprintf("-t nat %s OUTPUT -p icmp --icmp echo-request -d %s -j DNAT --to 127.0.0.1", addDelOpt, vip))
|
|
|
|
+ rules = append(rules, rule)
|
|
|
|
+
|
|
for _, rule := range rules {
|
|
for _, rule := range rules {
|
|
if err := iptables.RawCombinedOutputNative(rule...); err != nil {
|
|
if err := iptables.RawCombinedOutputNative(rule...); err != nil {
|
|
logrus.Errorf("setting up rule failed, %v: %v", rule, err)
|
|
logrus.Errorf("setting up rule failed, %v: %v", rule, err)
|