DataNode: using hostname as node name default (#17025)

* using the hostname as the default node-name, if none was specified explicitly

* using the hostname as the default node-name, if none was specified explicitly

* using the hostname as the default node-name, if none was specified explicitly

* nodeName is either set explicitly in the conf file or will be the result of the hostname setting otherwise

* small refactoring
This commit is contained in:
Jan Heise
2023-10-24 11:01:20 +02:00
committed by GitHub
parent ebc0e8dc24
commit d709ae84da
7 changed files with 12 additions and 19 deletions

View File

@@ -310,7 +310,7 @@ public class Configuration extends BaseConfiguration {
}
public String getDatanodeNodeName() {
return datanodeNodeName;
return datanodeNodeName != null && !datanodeNodeName.isBlank() ? datanodeNodeName : getHostname();
}
public String getInitialManagerNodes() {

View File

@@ -26,7 +26,6 @@ import org.graylog2.security.IndexerJwtAuthTokenProvider;
public record DatanodeConfiguration(
OpensearchDistributionProvider opensearchDistributionProvider,
DatanodeDirectories datanodeDirectories,
String nodeName,
int processLogsBufferSize,
IndexerJwtAuthTokenProvider indexerJwtAuthTokenProvider
) {

View File

@@ -39,17 +39,11 @@ public class DatanodeConfigurationProvider implements Provider<DatanodeConfigura
datanodeConfiguration = new DatanodeConfiguration(
opensearchDistributionProvider,
DatanodeDirectories.fromConfiguration(localConfiguration, nodeId),
getNodesFromConfig(localConfiguration.getDatanodeNodeName()),
localConfiguration.getProcessLogsBufferSize(),
jwtTokenProvider
);
}
public static String getNodesFromConfig(final String configProperty) {
if (configProperty != null) return configProperty;
return Tools.getLocalCanonicalHostname();
}
@Override
public DatanodeConfiguration get() {
return datanodeConfiguration;

View File

@@ -50,7 +50,6 @@ public class OpensearchConfigurationProvider implements Provider<OpensearchConfi
private final InSecureConfiguration inSecureConfiguration;
private final DatanodeConfiguration datanodeConfiguration;
private final byte[] signingKey;
private final String nodeName;
private final NodeService nodeService;
private final PreflightConfigService preflightConfigService;
@@ -71,7 +70,6 @@ public class OpensearchConfigurationProvider implements Provider<OpensearchConfi
this.signingKey = passwordSecret.getBytes(StandardCharsets.UTF_8);
this.nodeService = nodeService;
this.preflightConfigService = preflightConfigService;
this.nodeName = DatanodeConfigurationProvider.getNodesFromConfig(localConfiguration.getDatanodeNodeName());
}
private boolean isPreflight() {
@@ -121,7 +119,7 @@ public class OpensearchConfigurationProvider implements Provider<OpensearchConfi
localConfiguration.getOpensearchHttpPort(),
localConfiguration.getOpensearchTransportPort(),
"datanode-cluster",
nodeName,
localConfiguration.getDatanodeNodeName(),
List.of(),
localConfiguration.getOpensearchDiscoverySeedHosts(),
securityConfiguration,

View File

@@ -107,7 +107,7 @@ class OpensearchProcessImpl implements OpensearchProcess, ProcessListener {
}
public OpensearchInfo processInfo() {
return new OpensearchInfo(datanodeConfiguration.nodeName(), processState.getState(), isLeaderNode, getOpensearchBaseUrl().toString(), commandLineProcess != null ? commandLineProcess.processInfo() : ProcessInformation.empty());
return new OpensearchInfo(configuration.getDatanodeNodeName(), processState.getState(), isLeaderNode, getOpensearchBaseUrl().toString(), commandLineProcess != null ? commandLineProcess.processInfo() : ProcessInformation.empty());
}
@Override
@@ -123,8 +123,7 @@ class OpensearchProcessImpl implements OpensearchProcess, ProcessListener {
@Override
public String getOpensearchClusterUrl() {
final var hostname = DatanodeConfigurationProvider.getNodesFromConfig(configuration.getDatanodeNodeName());
return hostname + ":" + configuration.getOpensearchTransportPort();
return configuration.getDatanodeNodeName() + ":" + configuration.getOpensearchTransportPort();
}
public void onEvent(ProcessEvent event) {

View File

@@ -17,6 +17,7 @@
package org.graylog.datanode.periodicals;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.graylog.datanode.Configuration;
import org.graylog.datanode.configuration.DatanodeConfiguration;
import org.graylog.datanode.management.OpensearchProcess;
import org.graylog.datanode.process.ProcessState;
@@ -39,12 +40,14 @@ public class ClusterManagerDiscovery extends Periodical {
private final DatanodeConfiguration datanodeConfiguration;
private final OpensearchProcess managedOpenSearch;
private final ObjectMapper objectMapper;
private final Configuration configuration;
@Inject
public ClusterManagerDiscovery(DatanodeConfiguration datanodeConfiguration, OpensearchProcess managedOpenSearch, ObjectMapper objectMapper) {
public ClusterManagerDiscovery(DatanodeConfiguration datanodeConfiguration, OpensearchProcess managedOpenSearch, ObjectMapper objectMapper, Configuration configuration) {
this.datanodeConfiguration = datanodeConfiguration;
this.managedOpenSearch = managedOpenSearch;
this.objectMapper = objectMapper;
this.configuration = configuration;
}
@Override
@@ -53,7 +56,7 @@ public class ClusterManagerDiscovery extends Periodical {
if (managedOpenSearch.isInState(ProcessState.AVAILABLE)) {
final Boolean isManagerNode = getClusterStateResponse(managedOpenSearch)
.map(r -> r.nodes().get(r.clusterManagerNode()))
.map(managerNode -> datanodeConfiguration.nodeName().equals(managerNode.name()))
.map(managerNode -> configuration.getDatanodeNodeName().equals(managerNode.name()))
.orElse(false);
managedOpenSearch.setLeaderNode(isManagerNode);
}

View File

@@ -59,9 +59,9 @@ public record OpensearchConfiguration(
if (clusterName != null && !clusterName.isBlank()) {
config.put("cluster.name", clusterName);
}
if (nodeName != null && !nodeName.isBlank()) {
config.put("node.name", nodeName);
}
config.put("node.name", nodeName);
if (nodeRoles != null && !nodeRoles.isEmpty()) {
config.put("node.roles", toValuesList(nodeRoles));
}