canal-admin完善 (#2121)

* admin端口调整完成

* server端适配调整

* 调整部分功能

* 单机/集群admin调试完成

* 重新发布前端页面
This commit is contained in:
rewerma
2019-08-30 18:09:22 +08:00
committed by agapple
parent e8dba41216
commit 89055f7405
60 changed files with 1882 additions and 382 deletions

View File

@@ -2,6 +2,8 @@ package com.alibaba.otter.canal.instance.manager.plain;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
@@ -19,7 +21,7 @@ import com.alibaba.otter.canal.protocol.SecurityUtil;
/**
* 远程配置获取
*
*
* @author rewerma 2019-01-25 下午05:20:16
* @author agapple 2019年8月26日 下午7:52:06
* @since 1.1.4
@@ -31,8 +33,10 @@ public class PlainCanalConfigClient extends AbstractCanalLifeCycle implements Ca
private String user;
private String passwd;
private HttpHelper httpHelper;
private String localIp;
private int adminPort;
public PlainCanalConfigClient(String configURL, String user, String passwd){
public PlainCanalConfigClient(String configURL, String user, String passwd, String localIp, int adminPort){
this.configURL = configURL;
if (!StringUtils.startsWithIgnoreCase(configURL, "http")) {
this.configURL = "http://" + configURL;
@@ -42,6 +46,16 @@ public class PlainCanalConfigClient extends AbstractCanalLifeCycle implements Ca
this.user = user;
this.passwd = passwd;
this.httpHelper = new HttpHelper();
if (StringUtils.isNotEmpty(localIp)) {
this.localIp = localIp;
} else {
try {
this.localIp = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
this.adminPort = adminPort;
}
/**
@@ -53,7 +67,7 @@ public class PlainCanalConfigClient extends AbstractCanalLifeCycle implements Ca
if (StringUtils.isEmpty(md5)) {
md5 = "";
}
String url = configURL + "/api/v1/config/server_polling?md5=" + md5;
String url = configURL + "/api/v1/config/server_polling?ip=" + localIp + "&port=" + adminPort + "&md5=" + md5;
return queryConfig(url);
}
@@ -71,11 +85,12 @@ public class PlainCanalConfigClient extends AbstractCanalLifeCycle implements Ca
/**
* 返回需要运行的instance列表
*/
public String findInstances(String ip, String port, String md5) {
public String findInstances(String md5) {
if (StringUtils.isEmpty(md5)) {
md5 = "";
}
String url = configURL + "/api/v1/config/instances_polling?md5=" + md5 + "&ip=" + ip + "&port=" + port;
String url = configURL + "/api/v1/config/instances_polling?md5=" + md5 + "&ip=" + localIp + "&port="
+ adminPort;
ResponseModel<CanalConfig> config = doQuery(url);
if (config.data != null) {
return config.data.content;

View File

@@ -1,18 +1,22 @@
package com.alibaba.otter.canal.instance.manager;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.util.Assert;
import com.alibaba.otter.canal.instance.manager.plain.PlainCanal;
import com.alibaba.otter.canal.instance.manager.plain.PlainCanalConfigClient;
@Ignore
public class PlainCanalConfigClientIntegration {
@Test
public void testSimple() {
PlainCanalConfigClient client = new PlainCanalConfigClient("http://127.0.0.1:8089",
"admin",
"4ACFE3202A5FF5CF467898FC58AAB1D615029441");
"4ACFE3202A5FF5CF467898FC58AAB1D615029441",
"127.0.0.1",
11110);
PlainCanal plain = client.findServer(null);
Assert.notNull(plain);
@@ -20,8 +24,11 @@ public class PlainCanalConfigClientIntegration {
plain = client.findServer(plain.getMd5());
Assert.isNull(plain);
plain = client.findInstance("example", null);
Assert.notNull(plain);
String instances = client.findInstances(null);
Assert.notNull(instances);
plain = client.findInstance("example", null);
Assert.notNull(plain);
plain = client.findInstance("example", plain.getMd5());
Assert.isNull(plain);