use of org.apache.flink.runtime.highavailability.zookeeper.ZooKeeperClientHAServices in project Taier by DTStack.
the class HighAvailabilityServicesUtils method createClientHAService.
public static ClientHighAvailabilityServices createClientHAService(Configuration configuration) throws Exception {
HighAvailabilityMode highAvailabilityMode = HighAvailabilityMode.fromConfig(configuration);
switch(highAvailabilityMode) {
case NONE:
final String webMonitorAddress = getWebMonitorAddress(configuration, AddressResolution.TRY_ADDRESS_RESOLUTION);
return new StandaloneClientHAServices(webMonitorAddress);
case ZOOKEEPER:
boolean appendJaasEnable = configuration.getBoolean(ConfigConstrant.ZOOKEEPER_CLIENT_APPEND_JAAS_ENABLE, false);
if (appendJaasEnable) {
String zookeeperContestName = configuration.get(SecurityOptions.ZOOKEEPER_SASL_LOGIN_CONTEXT_NAME);
String keytabPath = configuration.get(SecurityOptions.KERBEROS_LOGIN_KEYTAB);
String principal = configuration.get(SecurityOptions.KERBEROS_LOGIN_PRINCIPAL);
synchronized (lock) {
javax.security.auth.login.Configuration priorConfig = javax.security.auth.login.Configuration.getConfiguration();
// construct a dynamic JAAS configuration
DynamicConfiguration currentConfig = new DynamicConfiguration(priorConfig);
// wire up the configured JAAS login contexts to use the krb5 entries
AppConfigurationEntry krb5Entry = KerberosUtils.keytabEntry(keytabPath, principal);
currentConfig.addAppConfigurationEntry(zookeeperContestName, krb5Entry);
javax.security.auth.login.Configuration.setConfiguration(currentConfig);
}
}
final CuratorFramework client = ZooKeeperUtils.startCuratorFramework(configuration);
return new ZooKeeperClientHAServices(client, configuration);
case FACTORY_CLASS:
return createCustomClientHAServices(configuration);
default:
throw new Exception("Recovery mode " + highAvailabilityMode + " is not supported.");
}
}
Aggregations