Spring Cloud之Eureka Admin 管控平台搭建
搭建Eureka Admin服务可以手动进行服务上线,下线操作,避免使用接口方式。直观管理服务列表。
源码github地址:https://github.com/SpringCloud/eureka-admin如下图:
拉取代码,修改eureka-admin-starter-server配置文件bootstrap.yml,注册地址写入自己的eureka-server服务.
启动服务访问http://localhost:9090/eurekaindex.html,可以看到:
实现服务手动上下线
实现服务手动上下线,刚拉去下的代码,进行Disable禁用或者UP启用时会报操作错误,实现不了服务的暂停启用。需要更改代码。
eureka server 的REST API 列表
如下图:
根据列表所示:
暂停服务
PUT/eureka/apps/{appId}/{instanceId}/status?value=OUT_OF_SERVICE
恢复服务
DELETE/eureka/apps/{appId}/{instanceId}/status?value=UP
修改操作:
1.查看
EurekaClientController
类。
这里我们自定义实现方法接口,修改为:
@Autowired
private RestTemplate restTemplate;
/**
* @description 界面请求转到第三方服务进行状态变更
* OUT_OF_SERVICE 禁用
* UP 启用
* 暂停 http://localhost:8761/eureka/apps/{appId}/{instanceId}/status?value=OUT_OF_SERVICE
* 恢复 http://localhost:8761/eureka/apps/{appId}/{instanceId}/status?value=UP
*/
@RequestMapping(value = "status/{appName}", method = RequestMethod.POST)
public ResultMap status(@PathVariable String appName, String instanceId, String status){
System.out.println("appName"+appName+"---instanceId="+instanceId+"----status="+status);
if(status.equals("OUT_OF_SERVICE")) { //暂停服务实例
String url = "http://eureka-server"+ "/eureka/apps/" + appName + "/" + instanceId + "/status?value=OUT_OF_SERVICE"; //eureka-server 是你注册中心的服务名
restTemplate.put(url, String.class);
}else if(status.equals("UP")){ //恢复服务实例
String url = "http://eureka-server"+"/eureka/apps/" + appName + "/" + instanceId + "/status"; //eureka-server 是你注册中心的服务名
restTemplate.delete(url);
}
return ResultMap.buildSuccess();
}
错误地方:
1.启动项目时候报restTemplate bean问题:
可以手动配置RestTemplate Bean:
@Configuration
public class Config {
@Bean
@LoadBalanced
public RestTemplate craet(){
return new RestTemplate();
}
}
2. 进行Disable禁用或者UP启用操作时出现异常:
解决方法:
1)查看代码中url的eureka-server应该与注册中心的服务名保持一致。
2)注册中心的配置查看,这两个参数设为true,保证注册中心服务也注册到注册列表,在eureka集群中是不会存在这个问题。
查看完整操作:
对CONFIG-SERVE进行Disable操作:
进行CONFIG-SERVER服务恢复操作:
结束!!!