KLALB大更新
新负载均衡算法
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
package org.kne.cloud.network.klalb;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
import org.kne.cloud.network.klalb.LineManager.LineEntry;
|
||||
import org.kne.cloud.network.mport.MultipurposeSocketAddress;
|
||||
import org.kne.cloud.network.mport.ProxyProfileAnalyser;
|
||||
import org.kne.cloud.network.mport.ProxyProfileExecutor;
|
||||
import org.kne.cloud.network.mport.TCPListener;
|
||||
|
||||
public class KLALBMain {
|
||||
public static TCPListener tcpl;
|
||||
public static ServerPropties sp;
|
||||
public static KLALBController kc;
|
||||
|
||||
public static ProxyProfileExecutor pfa;
|
||||
public static File f=new File("lines.cfg");
|
||||
public static void main(String[] args) throws IOException {
|
||||
|
||||
System.out.println("KLALB负载均衡V2.0");
|
||||
sp=new ServerPropties();
|
||||
|
||||
System.out.println("虚拟地址:"+sp.getVirtualIP().getHostAddress());
|
||||
kc=new KLALBController(sp.getVirtualIP());
|
||||
kc.registerToProxyTypeAs("KLALB");
|
||||
|
||||
|
||||
|
||||
|
||||
pfa=new ProxyProfileExecutor();
|
||||
pfa.load(f);
|
||||
|
||||
Scanner scn=new Scanner(System.in);
|
||||
while(true) {
|
||||
String s=scn.next();
|
||||
String[]sc=s.split(" ");
|
||||
switch(sc[0]) {
|
||||
case "help":
|
||||
System.out.print("state:查看线路状态");
|
||||
System.out.println("reload:重新加载线路配置");
|
||||
break;
|
||||
case "reloadlines":
|
||||
pfa.load(f);
|
||||
System.out.println("重新加载线路配置成功");
|
||||
break;
|
||||
case "state":
|
||||
LineManager le=kc.getLineManager();
|
||||
for (Iterator<java.util.Map.Entry<MultipurposeSocketAddress, LineEntry>> iterator = le.entrySet().iterator(); iterator.hasNext();) {
|
||||
java.util.Map.Entry<MultipurposeSocketAddress, LineEntry> hostPort = iterator.next();
|
||||
System.out.println(hostPort.getValue() .toString());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
System.out.println("未知命令,请输入help以查询指令说明");
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void openPort(int port) throws IOException {
|
||||
if(tcpl!=null)
|
||||
tcpl.close();
|
||||
tcpl=new TCPListener(new MultipurposeSocketAddress("0.0.0.0", port));
|
||||
tcpl.setCon((soc)->{
|
||||
KLALBRemoteSocket krs=new KLALBRemoteSocket(soc);
|
||||
kc.addRemoteSocket(krs);
|
||||
});
|
||||
tcpl.open();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user