生产环境配置framework的受权信息,没有受权的framework是没法接入到集群的。服务器
最近在玩elastic-job-cloud,在启动scheduler的时候,报错,is not authenticated。ui
可是2.1.5版本的elastic-job-cloud-scheduler又没有相关的配置信息。ip
通过查看elastic-job-cloud-scheduler的源码,发现能够修改一点代码便可。ci
一、修改elastic-job-cloud-scheduler.properties,添加以下内容get
# mesos framework authentication and authorization
mesos_framework_principal=wss-framework-user
mesos_framework_secret=wss-framework-password源码
二、修改com.dangdang.ddframe.job.cloud.scheduler.env.BootstrapEnvironmentio
在com.dangdang.ddframe.job.cloud.scheduler.env.BootstrapEnvironment.EnvironmentArgument添加两个枚举:编译
MESOS_FRAMEWORK_PRINCIPAL("mesos_framework_principal", "", false),
MESOS_FRAMEWORK_SECRET("mesos_framework_secret", "", false)ast
在BootstrapEnvironment中加两个get方法集群
public Optional<String> getMesosFrameworkPrincipal(){
String value = getValue(EnvironmentArgument.MESOS_FRAMEWORK_PRINCIPAL);
if (Strings.isNullOrEmpty(value)) {
return Optional.absent();
}
return Optional.of(value);
}
public Optional<String> getMesosFrameworkSecret(){
String value = getValue(EnvironmentArgument.MESOS_FRAMEWORK_SECRET);
if (Strings.isNullOrEmpty(value)) {
return Optional.absent();
}
return Optional.of(value);
}
三、在方法的最后添加代码,修改com.dangdang.ddframe.job.cloud.scheduler.mesos.SchedulerService.getSchedulerDriver(TaskScheduler, JobEventBus, FrameworkIDService)
// 新添加的代码
Optional<String> principal = env.getMesosFrameworkPrincipal();
Optional<String> secret = env.getMesosFrameworkSecret();
if(principal.isPresent() && secret.isPresent()){
Protos.Credential credential = Protos.Credential.newBuilder().setPrincipal(principal.get())
.setSecret(secret.get())
.build();
return new MesosSchedulerDriver(new SchedulerEngine(taskScheduler, facadeService, jobEventBus, frameworkIDService, statisticManager), frameworkInfo,
mesosConfig.getUrl(), credential);
} else {
// 原来的代码,构造器少了最后一个参数credential:即没有受权信息
return new MesosSchedulerDriver(new SchedulerEngine(taskScheduler, facadeService, jobEventBus, frameworkIDService, statisticManager), frameworkInfo,
mesosConfig.getUrl());
}
四、编译打包,把压缩包丢到服务器上运行便可
mvn clean install