node registration on startup (#17003)

This commit is contained in:
Jan Heise
2023-10-20 12:15:09 +02:00
committed by GitHub
parent 2a8139135e
commit 746ed51e69
4 changed files with 18 additions and 18 deletions

View File

@@ -120,7 +120,7 @@ public class Configuration extends BaseConfiguration {
private List<String> opensearchDiscoverySeedHosts = Collections.emptyList();
@Parameter(value = "opensearch_network_host")
private String opensearchNetworkHostHost = null;
private String opensearchNetworkHost = null;
@Parameter(value = "transport_certificate")
private String datanodeTransportCertificate = null;
@@ -345,8 +345,8 @@ public class Configuration extends BaseConfiguration {
return datanodeHttpCertificatePassword;
}
public Optional<String> getOpensearchNetworkHostHost() {
return Optional.ofNullable(opensearchNetworkHostHost);
public Optional<String> getOpensearchNetworkHost() {
return Optional.ofNullable(opensearchNetworkHost);
}
public String getBindAddress() {

View File

@@ -198,6 +198,8 @@ public abstract class ServerBootstrap extends CmdLineTool {
LOG.info("OS: {}", os.getPlatformName());
LOG.info("Arch: {}", os.getArch());
startNodeRegistration(injector);
final ActivityWriter activityWriter;
final ServiceManager serviceManager;
try {

View File

@@ -34,10 +34,13 @@ import org.graylog.datanode.rest.RestBindings;
import org.graylog.datanode.shutdown.GracefulShutdown;
import org.graylog2.bindings.MongoDBModule;
import org.graylog2.bindings.PasswordAlgorithmBindings;
import org.graylog2.cluster.NodeService;
import org.graylog2.cluster.preflight.DataNodeProvisioningBindings;
import org.graylog2.configuration.MongoDbConfiguration;
import org.graylog2.configuration.TLSProtocolsConfiguration;
import org.graylog2.featureflag.FeatureFlags;
import org.graylog2.plugin.Tools;
import org.graylog2.plugin.system.NodeId;
import org.graylog2.shared.UI;
import org.graylog2.shared.bindings.ObjectMapperModule;
import org.graylog2.shared.system.activities.Activity;
@@ -57,8 +60,6 @@ public class Server extends ServerBootstrap {
protected static final Configuration configuration = new Configuration();
private final MongoDbConfiguration mongoDbConfiguration = new MongoDbConfiguration();
// private final VersionCheckConfiguration versionCheckConfiguration = new VersionCheckConfiguration();
// private final NettyTransportConfiguration nettyTransportConfiguration = new NettyTransportConfiguration();
private final TLSProtocolsConfiguration tlsConfiguration = new TLSProtocolsConfiguration();
public Server() {
@@ -80,16 +81,13 @@ public class Server extends ServerBootstrap {
protected List<Module> getCommandBindings(FeatureFlags featureFlags) {
final ImmutableList.Builder<Module> modules = ImmutableList.builder();
modules.add(
// new VersionAwareStorageModule(),
new ConfigurationModule(configuration),
new MongoDBModule(),
new ServerBindings(configuration, isMigrationCommand()),
new RestBindings(),
new DataNodeProvisioningBindings(),
new PeriodicalBindings(),
// new InitializerBindings(),
new ObjectMapperModule(chainingClassLoader),
// new RestApiBindings(),
new PasswordAlgorithmBindings()
);
return modules.build();
@@ -99,8 +97,6 @@ public class Server extends ServerBootstrap {
protected List<Object> getCommandConfigurationBeans() {
return Arrays.asList(configuration,
mongoDbConfiguration,
/// versionCheckConfiguration,
// nettyTransportConfiguration,
tlsConfiguration);
}
@@ -108,17 +104,14 @@ public class Server extends ServerBootstrap {
private final ActivityWriter activityWriter;
private final ServiceManager serviceManager;
private final GracefulShutdown gracefulShutdown;
// private final Service leaderElectionService;
@Inject
public ShutdownHook(ActivityWriter activityWriter,
ServiceManager serviceManager,
GracefulShutdown gracefulShutdown) {
// @Named("LeaderElectionService") Service leaderElectionService) {
this.activityWriter = activityWriter;
this.serviceManager = serviceManager;
this.gracefulShutdown = gracefulShutdown;
// this.leaderElectionService = leaderElectionService;
}
@Override
@@ -129,14 +122,18 @@ public class Server extends ServerBootstrap {
gracefulShutdown.runWithoutExit();
serviceManager.stopAsync().awaitStopped();
// leaderElectionService.stopAsync().awaitTerminated();
}
}
@Override
protected void startNodeRegistration(Injector injector) {
// not needed, the datanode registers itself via the NodePingPeriodical task.
final NodeService nodeService = injector.getInstance(NodeService.class);
final NodeId nodeId = injector.getInstance(NodeId.class);
// always set leader to "false" on startup and let the NodePingPeriodical take care of it later
nodeService.registerServer(nodeId.getNodeId(),
false,
configuration.getHttpPublishUri(),
Tools.getLocalCanonicalHostname());
}
@Override

View File

@@ -40,6 +40,7 @@ import java.nio.file.Path;
import java.security.GeneralSecurityException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Singleton
public class OpensearchConfigurationProvider implements Provider<OpensearchConfiguration> {
@@ -99,7 +100,7 @@ public class OpensearchConfigurationProvider implements Provider<OpensearchConfi
if(localConfiguration.getInitialManagerNodes() != null && !localConfiguration.getInitialManagerNodes().isBlank()) {
opensearchProperties.put("cluster.initial_master_nodes", localConfiguration.getInitialManagerNodes());
} else if(isPreflight()) {
final var nodeList = String.join(",", nodeService.allActive(Node.Type.DATANODE).values().stream().map(Node::getHostname).toList());
final var nodeList = String.join(",", nodeService.allActive(Node.Type.DATANODE).values().stream().map(Node::getHostname).collect(Collectors.toSet()));
opensearchProperties.put("cluster.initial_master_nodes", nodeList);
}
opensearchProperties.putAll(commonOpensearchConfig(localConfiguration));
@@ -133,7 +134,7 @@ public class OpensearchConfigurationProvider implements Provider<OpensearchConfi
private ImmutableMap<String, String> commonOpensearchConfig(final Configuration localConfiguration) {
final ImmutableMap.Builder<String, String> config = ImmutableMap.builder();
localConfiguration.getOpensearchNetworkHostHost().ifPresent(
localConfiguration.getOpensearchNetworkHost().ifPresent(
networkHost -> config.put("network.host", networkHost));
config.put("path.data", datanodeConfiguration.datanodeDirectories().getDataTargetDir().toString());
config.put("path.logs", datanodeConfiguration.datanodeDirectories().getLogsTargetDir().toString());