Skip to content

Commit 22c1338

Browse files
committed
Merge pull request #801 from jschoiRR/diplo-2026
[Mold VR] 가상라우터의 client, connect, server 타임아웃을 글로벌설정 세팅값으로 반영되도록 기능 개발
1 parent 9f314cf commit 22c1338

8 files changed

Lines changed: 46 additions & 5 deletions

File tree

core/src/main/java/com/cloud/agent/api/routing/LoadBalancerConfigCommand.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ public class LoadBalancerConfigCommand extends NetworkElementCommand {
3636
public String lbStatsAuth = "admin1:AdMiN123";
3737
public String lbStatsUri = "/admin?stats";
3838
public String maxconn = "";
39+
public String lbConnectTimeout = "5000";
40+
public String lbClientTimeout = "50000";
41+
public String lbServerTimeout = "50000";
3942
public String lbProtocol;
4043
public boolean keepAliveEnabled = false;
4144
NicTO nic;

core/src/main/java/com/cloud/network/HAProxyConfigurator.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public class HAProxyConfigurator implements LoadBalancerConfigurator {
4646

4747
protected Logger logger = LogManager.getLogger(getClass());
4848
private static final String blankLine = "\t ";
49+
private static final String defaultConnectTimeout = "5000";
50+
private static final String defaultClientTimeout = "50000";
51+
private static final String defaultServerTimeout = "50000";
4952
private static String[] globalSection = {"global", "\tlog 127.0.0.1:3914 local0 warning", "\tmaxconn 4096", "\tmaxpipes 1024", "\tchroot /var/lib/haproxy",
5053
"\tuser haproxy", "\tgroup haproxy", "\tstats socket /run/haproxy/admin.sock", "\tdaemon"};
5154

@@ -82,7 +85,7 @@ public String[] generateConfiguration(final List<PortForwardingRuleTO> fwRules)
8285

8386
result.addAll(Arrays.asList(globalSection));
8487
result.add(blankLine);
85-
result.addAll(Arrays.asList(defaultsSection));
88+
result.addAll(getDefaultsSection(defaultConnectTimeout, defaultClientTimeout, defaultServerTimeout, false));
8689
result.add(blankLine);
8790

8891
if (pools.isEmpty()) {
@@ -631,10 +634,7 @@ public String[] generateConfiguration(final LoadBalancerConfigCommand lbCmd) {
631634
result.addAll(gSection);
632635

633636
result.add(blankLine);
634-
final List<String> dSection = Arrays.asList(defaultsSection);
635-
if (lbCmd.keepAliveEnabled) {
636-
dSection.set(7, "\tno option httpclose");
637-
}
637+
final List<String> dSection = getDefaultsSection(lbCmd.lbConnectTimeout, lbCmd.lbClientTimeout, lbCmd.lbServerTimeout, lbCmd.keepAliveEnabled);
638638

639639
if (logger.isDebugEnabled()) {
640640
for (final String s : dSection) {
@@ -751,4 +751,18 @@ private void addSslCertEntry(Set<SslCertEntry> sslCertEntries, LoadBalancerTO lb
751751
final SslCertEntry sslCertEntry = new SslCertEntry(name, cert.getCert(), cert.getKey(), cert.getChain(), cert.getPassword());
752752
sslCertEntries.add(sslCertEntry);
753753
}
754+
755+
private List<String> getDefaultsSection(final String connectTimeout, final String clientTimeout, final String serverTimeout, final boolean keepAliveEnabled) {
756+
final List<String> dSection = new ArrayList<>(Arrays.asList(defaultsSection));
757+
final String effectiveConnectTimeout = StringUtils.isBlank(connectTimeout) ? defaultConnectTimeout : connectTimeout;
758+
final String effectiveClientTimeout = StringUtils.isBlank(clientTimeout) ? defaultClientTimeout : clientTimeout;
759+
final String effectiveServerTimeout = StringUtils.isBlank(serverTimeout) ? defaultServerTimeout : serverTimeout;
760+
dSection.set(8, "\ttimeout connect " + effectiveConnectTimeout);
761+
dSection.set(9, "\ttimeout client " + effectiveClientTimeout);
762+
dSection.set(10, "\ttimeout server " + effectiveServerTimeout);
763+
if (keepAliveEnabled) {
764+
dSection.set(7, "\tno option httpclose");
765+
}
766+
return dSection;
767+
}
754768
}

plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import com.cloud.network.lb.LoadBalancingRule.LbSslCert;
7777
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
7878
import com.cloud.network.lb.dao.ElasticLbVmMapDao;
79+
import com.cloud.network.router.VirtualNetworkApplianceManager;
7980
import com.cloud.network.router.VirtualRouter;
8081
import com.cloud.network.rules.FirewallRule;
8182
import com.cloud.network.rules.LoadBalancer;
@@ -223,6 +224,9 @@ private void createApplyLoadBalancingRulesCommands(List<LoadBalancingRule> rules
223224
cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
224225
cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
225226
cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
227+
cmd.lbConnectTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyConnectTimeout.value().toString();
228+
cmd.lbClientTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyClientTimeout.value().toString();
229+
cmd.lbServerTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyServerTimeout.value().toString();
226230

227231
cmds.addCommand(cmd);
228232

plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,9 @@ private void createApplyLoadBalancingRulesCommands(final List<LoadBalancingRule>
519519
cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
520520
cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
521521
cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
522+
cmd.lbConnectTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyConnectTimeout.value().toString();
523+
cmd.lbClientTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyClientTimeout.value().toString();
524+
cmd.lbServerTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyServerTimeout.value().toString();
522525

523526
cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getInternalLbControlIp(internalLbVm.getId()));
524527
cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, guestNic.getIPv4Address());

server/src/main/java/com/cloud/network/router/CommandSetupHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,9 @@ public void createApplyLoadBalancingRulesCommands(final List<LoadBalancingRule>
404404
cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
405405
cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
406406
cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
407+
cmd.lbConnectTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyConnectTimeout.value().toString();
408+
cmd.lbClientTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyClientTimeout.value().toString();
409+
cmd.lbServerTimeout = VirtualNetworkApplianceManager.NetworkLBHaproxyServerTimeout.value().toString();
407410

408411
cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
409412
cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));

server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA
4545
String SetServiceMonitorCK = "network.router.EnableServiceMonitoring";
4646
String RouterAlertsCheckIntervalCK = "router.alerts.check.interval";
4747
String VirtualRouterServiceOfferingCK = "router.service.offering";
48+
String NetworkLBHaproxyConnectTimeoutCK = "network.loadbalancer.haproxy.connect.timeout";
49+
String NetworkLBHaproxyClientTimeoutCK = "network.loadbalancer.haproxy.client.timeout";
50+
String NetworkLBHaproxyServerTimeoutCK = "network.loadbalancer.haproxy.server.timeout";
4851

4952
String RouterHealthChecksConfigRefreshIntervalCK = "router.health.checks.config.refresh.interval";
5053
String RouterHealthChecksResultFetchIntervalCK = "router.health.checks.results.fetch.interval";
@@ -84,6 +87,12 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA
8487

8588
ConfigKey<String> VirtualRouterServiceOffering = new ConfigKey<>(String.class, VirtualRouterServiceOfferingCK, "Advanced", "",
8689
"Uuid of the service offering used by virtual routers; if NULL - system offering will be used", true, ConfigKey.Scope.Account, null);
90+
ConfigKey<Integer> NetworkLBHaproxyConnectTimeout = new ConfigKey<>(Integer.class, NetworkLBHaproxyConnectTimeoutCK, "Network", "5000",
91+
"Load Balancer(haproxy) connect timeout in milliseconds.", true, ConfigKey.Scope.Global, null);
92+
ConfigKey<Integer> NetworkLBHaproxyClientTimeout = new ConfigKey<>(Integer.class, NetworkLBHaproxyClientTimeoutCK, "Network", "50000",
93+
"Load Balancer(haproxy) client timeout in milliseconds.", true, ConfigKey.Scope.Global, null);
94+
ConfigKey<Integer> NetworkLBHaproxyServerTimeout = new ConfigKey<>(Integer.class, NetworkLBHaproxyServerTimeoutCK, "Network", "50000",
95+
"Load Balancer(haproxy) server timeout in milliseconds.", true, ConfigKey.Scope.Global, null);
8796

8897
// Health checks
8998
ConfigKey<Boolean> RouterHealthChecksEnabled = new ConfigKey<>(Boolean.class, "router.health.checks.enabled", "Advanced", "true",

server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3360,6 +3360,9 @@ public ConfigKey<?>[] getConfigKeys() {
33603360
RouterVersionCheckEnabled,
33613361
SetServiceMonitor,
33623362
VirtualRouterServiceOffering,
3363+
NetworkLBHaproxyConnectTimeout,
3364+
NetworkLBHaproxyClientTimeout,
3365+
NetworkLBHaproxyServerTimeout,
33633366
RouterAlertsCheckInterval,
33643367
RouterHealthChecksEnabled,
33653368
RouterHealthChecksBasicInterval,

server/src/main/java/com/cloud/server/ManagementServerImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6540,9 +6540,11 @@ public List<Class<?>> getCommands() {
65406540
cmdList.add(UpdateHostPasswordCmd.class);
65416541
cmdList.add(AddNetworkDeviceCmd.class);
65426542
cmdList.add(AddNetworkServiceProviderCmd.class);
6543+
cmdList.add(CreateManagementNetworkIpRangeCmd.class);
65436544
cmdList.add(CreateNetworkOfferingCmd.class);
65446545
cmdList.add(CreatePhysicalNetworkCmd.class);
65456546
cmdList.add(CreateStorageNetworkIpRangeCmd.class);
6547+
cmdList.add(DeleteManagementNetworkIpRangeCmd.class);
65466548
cmdList.add(DeleteNetworkDeviceCmd.class);
65476549
cmdList.add(DeleteNetworkOfferingCmd.class);
65486550
cmdList.add(DeleteNetworkServiceProviderCmd.class);

0 commit comments

Comments
 (0)