use of net.azisaba.kuvel.loadbalancer.LoadBalancer in project Kuvel by AzisabaNetwork.
the class SimpleLoadBalancerDiscovery method registerOrIgnore.
private void registerOrIgnore(ReplicaSet replicaSet) {
String uid = replicaSet.getMetadata().getUid();
if (kuvelServiceHandler.getReplicaSetUidAndServerNameMap().getServerNameFromUid(uid) != null) {
return;
}
String serverName = replicaSet.getMetadata().getLabels().get(LabelKeys.SERVER_NAME.getKey());
if (plugin.getProxy().getServer(serverName).isPresent()) {
plugin.getLogger().info("Failed to add load balancer. Server name already occupied: " + serverName);
return;
}
RegisteredServer server = plugin.getProxy().registerServer(new ServerInfo(serverName, new InetSocketAddress("0.0.0.0", 0)));
LoadBalancer loadBalancer = new LoadBalancer(plugin.getProxy(), server, new RoundRobinLoadBalancingStrategy(), uid);
kuvelServiceHandler.registerLoadBalancer(loadBalancer);
}
use of net.azisaba.kuvel.loadbalancer.LoadBalancer in project Kuvel by AzisabaNetwork.
the class KuvelServiceHandler method unregisterPod.
public void unregisterPod(String podUid) {
if (podUidAndServerNameMap.getServerNameFromUid(podUid) == null) {
return;
}
String serverName = podUidAndServerNameMap.unregister(podUid);
plugin.getProxy().getServer(serverName).ifPresent(server -> plugin.getProxy().unregisterServer(server.getServerInfo()));
for (LoadBalancer loadBalancer : loadBalancerServerMap.values()) {
if (loadBalancer.getEndpointServers().contains(serverName)) {
loadBalancer.removeEndpoint(serverName);
}
}
plugin.getLogger().info("Unregistered server: " + serverName + " (" + podUid + ")");
}
use of net.azisaba.kuvel.loadbalancer.LoadBalancer in project Kuvel by AzisabaNetwork.
the class RedisLoadBalancerDiscovery method registerOrIgnore.
private void registerOrIgnore(ReplicaSet replicaSet, boolean isFetchedFromRedis) {
String uid = replicaSet.getMetadata().getUid();
if (kuvelServiceHandler.getReplicaSetUidAndServerNameMap().getServerNameFromUid(uid) != null) {
return;
}
String serverName = replicaSet.getMetadata().getLabels().getOrDefault(LabelKeys.SERVER_NAME.getKey(), null);
if (serverName == null) {
return;
}
try (Jedis jedis = jedisPool.getResource()) {
if (!isFetchedFromRedis) {
Collection<String> loadBalancerNames = jedis.hgetAll(RedisKeys.LOAD_BALANCERS_PREFIX.getKey() + groupName).values();
if (loadBalancerNames.contains(serverName) || plugin.getProxy().getServer(serverName).isPresent()) {
plugin.getLogger().info("Failed to add load balancer. Server name already occupied: " + serverName);
return;
}
}
kuvelServiceHandler.getReplicaSetUidAndServerNameMap().register(uid, serverName);
jedis.hset(RedisKeys.LOAD_BALANCERS_PREFIX.getKey() + groupName, uid, serverName);
redisConnectionLeader.publishNewLoadBalancer(uid, serverName);
RegisteredServer server = plugin.getProxy().registerServer(new ServerInfo(serverName, new InetSocketAddress("0.0.0.0", 0)));
kuvelServiceHandler.registerLoadBalancer(new LoadBalancer(plugin.getProxy(), server, new RoundRobinLoadBalancingStrategy(), uid));
}
}
use of net.azisaba.kuvel.loadbalancer.LoadBalancer in project Kuvel by AzisabaNetwork.
the class KuvelServiceHandler method unregisterLoadBalancer.
public void unregisterLoadBalancer(String replicaSetUid) {
String serverName = replicaSetUidAndServerNameMap.getServerNameFromUid(replicaSetUid);
if (serverName == null) {
return;
}
LoadBalancer loadBalancer = loadBalancerServerMap.get(serverName);
if (loadBalancer != null) {
unregisterLoadBalancer(loadBalancer);
}
}
use of net.azisaba.kuvel.loadbalancer.LoadBalancer in project Kuvel by AzisabaNetwork.
the class KuvelServiceHandler method setAndRunServerDiscovery.
public void setAndRunServerDiscovery(@Nullable ServerDiscovery newServerDiscovery) {
if (serverDiscovery != null) {
serverDiscovery.shutdown();
}
serverDiscovery = newServerDiscovery;
if (serverDiscovery != null) {
HashMap<String, Pod> servers = serverDiscovery.getServersForStartup();
for (Entry<String, Pod> entry : servers.entrySet()) {
Pod pod = entry.getValue();
InetSocketAddress address = new InetSocketAddress(pod.getStatus().getPodIP(), 25565);
plugin.getProxy().registerServer(new ServerInfo(entry.getKey(), address));
for (LoadBalancer loadBalancer : loadBalancerServerMap.values()) {
if (pod.hasOwnerReferenceFor(loadBalancer.getReplicaSetUid())) {
loadBalancer.addEndpoint(entry.getKey());
}
}
}
serverDiscovery.start();
}
}
Aggregations