summaryrefslogtreecommitdiffstats
path: root/etc/inc/vslb.inc
diff options
context:
space:
mode:
Diffstat (limited to 'etc/inc/vslb.inc')
-rw-r--r--etc/inc/vslb.inc63
1 files changed, 34 insertions, 29 deletions
diff --git a/etc/inc/vslb.inc b/etc/inc/vslb.inc
index aa7cc10..5bb1bbe 100644
--- a/etc/inc/vslb.inc
+++ b/etc/inc/vslb.inc
@@ -2,7 +2,7 @@
/* $Id$ */
/*
vslb.inc
- Copyright (C) 2005-2006 Bill Marquette
+ Copyright (C) 2005 Bill Marquette
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -56,11 +56,12 @@ function slbd_configure() {
$slbdconf .= "\t:vip={$vsent['ipaddr']}:\\\n";
/* virtual port */
$slbdconf .= "\t:vip-port={$vsent['port']}:\\\n";
- /* fallback IP */
- $slbdconf .= "\t:sitedown={$vsent['sitedown']}:\\\n";
- /* fallback port */
- $slbdconf .= "\t:sitedown-port={$vsent['port']}:\\\n";
-
+ if($vsent['port'] <> "" and $vsent['sitedown'] <> "") {
+ /* fallback IP */
+ $slbdconf .= "\t:sitedown={$vsent['sitedown']}:\\\n";
+ /* fallback port */
+ $slbdconf .= "\t:sitedown-port={$vsent['port']}:\\\n";
+ }
for ($i = 0; isset($config['load_balancer']['lbpool'][$i]); $i++) {
if ($config['load_balancer']['lbpool'][$i]['name'] == $vsent['pool']) {
$svrcnt = 0;
@@ -81,43 +82,47 @@ function slbd_configure() {
$should_start=1;
}
}
-
- /* handle pool entries */
if(is_array($a_pool)) {
- foreach ($a_pool as $lbpool) {
- if($lbpool['type'] <> "gateway")
- continue;
-
- if ($lbpool['desc'] == "")
- $slbdconf .= "{$lbpool['name']}:\\\n";
+ foreach ($a_pool as $vspool) {
+ if ($vspool['desc'] == "")
+ $slbdconf .= "{$vspool['name']}:\\\n";
else
- $slbdconf .= "{$lbpool['name']}|{$lbpool['desc']}:\\\n";
-
- /* pool name */
- $slbdconf .= "\t:poolname={$lbpool['name']}:\\\n";
+ $slbdconf .= "{$vspool['name']}|{$vspool['desc']}:\\\n";
- /* enumerate servers and install ping items */
- foreach($lbpool['servers'] as $server) {
- $server_split = split("|", $server);
- $server_ip = $server_split[0];
- $server_monitor_ip = $server_split[1];
- /* setup ping status */
- $slbdconf .= "\t:ping={$lbpool['$server_monitor_ip']}:\\\n";
+ /* pool name */
+ $slbdconf .= "\t:poolname={$vspool['name']}:\\\n";
+ /* virtual IP */
+ $slbdconf .= "\t:vip={$vspool['ipaddr']}:\\\n";
+
+ for ($i = 0; isset($config['load_balancer']['lbpool'][$i]); $i++) {
+ if ($config['load_balancer']['lbpool'][$i]['name'] == $vspool['name']) {
+ $svrcnt = 0;
+ $svrtxt = "";
+ foreach ($config['load_balancer']['lbpool'][$i]['servers'] as $lbsvr) {
+ $lbsvr_split=split("\|", $lbsvr);
+ $svrtxt .= "\t:{$svrcnt}={$lbsvr_split[0]}:\\\n";
+ $svrcnt++;
+ }
+ $slbdconf .= "\t:method=round-robin:\\\n";
+ $slbdconf .= "\t:services={$svrcnt}:\\\n";
+ $slbdconf .= $svrtxt;
+ }
}
- $should_start = 1;
+ $slbdconf .= "\t:ping:send=:expect=:\n";
+
+ $should_start=1;
}
}
-
if($should_start == 1) {
fwrite($fd, $slbdconf);
fclose($fd);
- mwexec("/usr/bin/pkill -9 slbd");
+ mwexec("/usr/bin/killall -9 slbd");
/* startup slbd pointing it's config at /var/etc/slbd.conf with a polling interval of 5 seconds */
mwexec("/usr/local/sbin/slbd -c{$g['varetc_path']}/slbd.conf -r5000");
} else {
- fclose($fd);
+ fclose($fd);
}
}
OpenPOWER on IntegriCloud