Merge pull request #2137 from fgiannetti/3.0.0

Add natMap for Sentinel configuration
pull/2152/head
Nikita Koksharov 6 years ago committed by GitHub
commit 059423d9c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -17,7 +17,11 @@ package org.redisson.config;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.redisson.misc.URIBuilder;
/**
@ -28,6 +32,8 @@ import org.redisson.misc.URIBuilder;
public class SentinelServersConfig extends BaseMasterSlaveServersConfig<SentinelServersConfig> {
private List<URI> sentinelAddresses = new ArrayList<URI>();
private Map<String, String> natMap = Collections.emptyMap();
private String masterName;
@ -50,6 +56,7 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
setMasterName(config.getMasterName());
setDatabase(config.getDatabase());
setScanInterval(config.getScanInterval());
setNatMap(new HashMap<>(config.getNatMap()));
}
/**
@ -114,4 +121,19 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
return this;
}
public Map<String, String> getNatMap() {
return natMap;
}
/**
* Defines NAT mapping. Address as a map key is replaced with mapped address as value.
*
* @param natMap - nat mapping
* @return config
*/
public SentinelServersConfig setNatMap(Map<String, String> natMap) {
this.natMap = natMap;
return this;
}
}

@ -79,6 +79,8 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
private final Set<URI> disconnectedSlaves = new HashSet<>();
private ScheduledFuture<?> monitorFuture;
private AddressResolver<InetSocketAddress> sentinelResolver;
private final Map<String, String> natMap;
private boolean usePassword = false;
@ -95,6 +97,8 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
this.config = create(cfg);
initTimer(this.config);
this.natMap=cfg.getNatMap();
this.sentinelResolver = resolverGroup.getResolver(getGroup().next());
for (URI addr : cfg.getSentinelAddresses()) {
@ -469,8 +473,14 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
}
private String createAddress(String host, Object port) {
if (host.contains(":") && !host.startsWith("[")) {
host = "[" + host + "]";
if (host.contains(":")){
String pureHost = host.replaceAll("[\\[\\]]","");
host = applyNatMap(pureHost);
if(host.contains(":")){
host = "[" + host + "]";
}
}else {
host=applyNatMap(host);
}
return "redis://" + host + ":" + port;
}
@ -607,5 +617,13 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
super.shutdown();
}
private String applyNatMap(String ip) {
String mappedAddress = natMap.get(ip);
if (mappedAddress != null) {
return mappedAddress;
}
return ip;
}
}

Loading…
Cancel
Save