由浅入深分布式(5)dubbo提供者用内网地址注册provider以及 spring boot admin client用主机名注册spring boot admin server

原创 2017年02月23日 14:57:49

之前遇到过dubbo提供者用内网地址注册provider的问题 当时改了host文件成功了 但是没有想为什么会有这个问题

现在使用spring boot admin 来监控spring boot项目出现了如下问题, 如果是client和server端 分离,而且不在一台机器上,client会将主机名作为地址注册导致注册失败

要注意服务器之间是可以根据各自的主机名来访问的哦,如果不能访问也应该可以在hosts里设置。。

但是现在遇到了windows下spring boot admin的client注册到linux的server 失败的问题

下面的图显式的是linux的client的注册,道理一样。


直接查spring boot admin clientd 的源代码

/**
 * Scheduler that checks the registration of the application at the spring-boot-admin.
 */
public class SpringBootAdminRegistratorTask implements Runnable {

	private static final Logger LOGGER = LoggerFactory.getLogger(SpringBootAdminRegistratorTask.class);

	@Autowired
	private Environment env;

	@PostConstruct
	public void check() {
		Assert.notNull(env.getProperty("spring.boot.admin.url"),
				"The URL of the spring-boot-admin application is mandatory");
		Assert.notNull(env.getProperty("server.port"), "The server port of the application is mandatory");
		Assert.notNull(env.getProperty("info.id"), "The id of the application is mandatory");
	}

	/**
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {
		try {
			String id = env.getProperty("info.id");
			int port = env.getProperty("server.port", Integer.class);
			String adminUrl = env.getProperty("spring.boot.admin.url");
			RestTemplate template = new RestTemplate();
			template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
			ApplicationList list = template.getForObject(adminUrl + "/api/applications", ApplicationList.class);
			for (Application app : list) {
				if (id.equals(app.getId())) {
					// the application is already registered at the admin tool
					LOGGER.debug("Application already registered with ID '{}'", id);
					return;
				}
			}
			// register the application with the used URL and port
			String url = new URL("http", InetAddress.getLocalHost().getCanonicalHostName(), port, "").toString();
			Application app = new Application();
			app.setId(id);
			app.setUrl(url);
			template.postForObject(adminUrl + "/api/applications", app, String.class);
			LOGGER.info("Application registered itself at the admin application with ID '{}' and URL '{}'", id, url);
		} catch (Exception e) {
			LOGGER.warn("Failed to register application at spring-boot-admin, message={}", e.getMessage());
		}
	}

	private static class ApplicationList extends ArrayList<Application> {
		private static final long serialVersionUID = 1L;
	}

}

InetAddress.getLocalHost().getCanonicalHostName() 这行代码有问题,获得的是主机名或者内网ip

修改hosts文件没有用


最后修改注册表

PS C:\Users\BAO> hostname
210.82.98.38

OK

版权声明:本文为博主原创文章,未经博主允许不得转载。

由浅入深写java分布式(3) dubbo admin监控dubbo 以及外网consumer找不到provider的问题

将dubbo-admin-2.8.4.war 放到tomcat的webapps中 启动解压后修改 D:\apache-tomcat-7.0.63\webapps\dubbo-admin-2.8.4\W...
  • kkgbn
  • kkgbn
  • 2017年02月17日 14:18
  • 1295

dubbo(分布式架构)+zookeeper(注册中心)+spring(provider和consumer) 基本使用

1.前言 看到网上各种dubbo的教程,应该基本上都是从一个地方贴过来的,一看到千篇一律的provider中main方法中的system.in.read()就头疼了,随便找找都是一个样,估计都没自己...

spring-boot 之 使用Admin监控应用

Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量、当前应用的并发数、延迟以及其他度量信息。下面我...

Spring Boot Admin 的使用 2

http://blog.csdn.net/kinginblue/article/details/52132113 ******************************************...

spring-boot 之 使用Admin监控应用

https://yq.aliyun.com/articles/2322 ************************************* 摘要: Spring Boot提供的监控接口...

spring-boot 之 使用Admin监控应用

Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量、当前应用的并发数、延迟以及其他度量信息。下面我...

spring-boot 之 使用Admin监控应用

摘要: Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量、当前应用的并发数、延迟以及其他度量信息...

Spring Boot Admin UI 分布式微服务监控中心

完整的微服务解决方案应该包含了微服务所涉及的方方面面,从服务的集中式配置,注册中心,断路器,负载均衡,监控 等模块之后面临的一个问题是如何直观的将微服务集群中的各个服务的状态显示给对"CODE"没有感...

Spring Boot Admin的使用

http://www.jianshu.com/p/e20a5f42a395 ******************************************** 上一篇文章中了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由浅入深分布式(5)dubbo提供者用内网地址注册provider以及 spring boot admin client用主机名注册spring boot admin server
举报原因:
原因补充:

(最多只允许输入30个字)