9 Commits

Author SHA1 Message Date
c5bb70cf52 set serverkeepalives is false 2018-12-18 02:53:09 +08:00
1918bc3328 test2 2018-12-18 01:57:06 +08:00
e25b10d931 test requests 2018-12-18 01:53:36 +08:00
ad881c1338 解决句柄泄漏问题 2018-12-18 00:59:13 +08:00
d66bfc0ee9 test cmd 2018-12-18 00:42:59 +08:00
huangsimin
e498b1adc5 添加济南 2018-12-17 15:12:40 +08:00
huangsimin
6cd7c96230 test open too many files 2018-12-17 14:51:43 +08:00
huangsimin
3c32236374 modify: Waitor wait time 12s 2018-12-17 11:11:49 +08:00
huangsimin
0490f5124b fix: case1: GResponse is nil
change: actives.yaml restart to 65s
2018-12-17 11:07:30 +08:00
3 changed files with 20 additions and 8 deletions

View File

@@ -17,7 +17,10 @@ switch:
192.168.6.100:8088:
group: ["10.10.10.86", "10.10.10.87"] # 海口
city: "4601"
192.168.6.100:8090:
group: ["10.10.10.90", "10.10.10.91"] # 济南
city: "3701"
192.168.6.100:8091:
group: ["10.10.10.92", "10.10.10.93"] # 三亚
city: "4602"
restart: 50
restart: 65

4
dip.go
View File

@@ -74,12 +74,10 @@ func (group *DIPGroup) Choose(addr string) {
SetAddrForward(group.IPTableNum, addr, ip)
} else {
restartAddr := "http://" + group.Current.Host + ":8800/pppoe/restart"
if resp, err := requests.NewSession().Get(restartAddr).Execute(); err != nil {
if _, err := requests.NewSession().Get(restartAddr).Execute(); err != nil {
log.Println(err)
group.Current.ActiveTime += 12
defer resp.GResponse.Body.Close()
} else {
defer resp.GResponse.Body.Close()
group.Current = dhost
group.Current.ActiveTime = now
// log.Println("new set addr:", group.Current.Host, "restartAddr:", restartAddr, "resp", resp.Content())

View File

@@ -26,7 +26,7 @@ type Switch struct {
func SetAddrForward(num, addr, ip string) {
port := strings.Split(addr, ":")[1]
cmd := exec.Command("/bin/sh", "-c", "sudo iptables -t nat -R IPSWITCH "+num+" -p tcp --dport "+port+" -j DNAT --to "+ip+":8885")
err := cmd.Run()
_, err := cmd.Output()
if err != nil {
panic(err)
}
@@ -55,9 +55,15 @@ func (swi *Switch) Run(addr string, ipregion string) {
cmd := exec.Command("/bin/sh", "-c", "sudo iptables -t nat -N IPSWITCH")
cmd.Run()
if err := cmd.Process.Release(); err != nil {
panic(err)
}
cmd = exec.Command("/bin/sh", "-c", "sudo iptables -t nat -F IPSWITCH")
cmd.Run()
if err := cmd.Process.Release(); err != nil {
panic(err)
}
for range swi.Worker.ForLoop {
cmd := exec.Command("/bin/sh", "-c", "sudo iptables -t nat -A IPSWITCH -p icmp -s 1.1.1.1 -j DNAT --to 1.1.1.1:8885")
@@ -65,10 +71,15 @@ func (swi *Switch) Run(addr string, ipregion string) {
if err != nil {
panic(err)
}
if err := cmd.Process.Release(); err != nil {
panic(err)
}
}
http.ListenAndServe(addr, nil)
server := &http.Server{Addr: addr, Handler: nil}
server.SetKeepAlivesEnabled(false)
server.ListenAndServe()
}
// timeToSwitch 计算是否到切换时间
@@ -93,7 +104,7 @@ func (swi *Switch) checkInReady(ip string, now int64) {
dipg.Group[ip].ActiveTime = now
if dh, ok := dipg.Waitor[ip]; ok {
if dh.OverTime(now, 30) > 0 {
if dh.OverTime(now, 20) > 0 {
delete(dipg.Waitor, ip)
} else {
return