KLALB大更新

新负载均衡算法
This commit is contained in:
Administrator
2023-07-02 13:20:11 +08:00
parent f743b23e53
commit 585b7c5fe6
59 changed files with 1681 additions and 553 deletions
@@ -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();
}
}