Mailing List Archive

Help with ldirector setup
I've been using ipvsadm and heartbeat for quite a while now with great
success. They are both really great programs. I've been using some small
perl scripts to do some of the failover without much luck. So I've
started looking into ldirectord, but am having some issues incorporating
it into my environment.

I understand how to load the files for ldirector and how to get it to
start from heartbeat, but the documentation on ldirectord is a little
sparse, so I"m here to ask a few questions. Basically I need help
incorporating the script below into ldirectord.

First of all, my current config looks like so:

echo "1" > /proc/sys/net/ipv4/ip_forward
ipchains -F
ipvsadm -C

#firewall packet marking
ipchains -A input -s 0.0.0.0/0 -d 207.228.79.0/25 -m 1
ipchains -A input -s 0.0.0.0/0 -d 207.148.155.0/24 -m 1
ipchains -A input -s 0.0.0.0/0 -d 207.148.151.0/24 -m 1
ipchains -A input -s 0.0.0.0/0 -d 207.148.181.0/24 -m 1

#virtual server stuff
#cgi1/cgi2 web balancing for ~ homedirs
ipvsadm -A -t 207.228.64.34:80 -s wlc
ipvsadm -a -t 207.228.64.34:80 -r 207.228.64.35:80 -g -w 1
ipvsadm -a -t 207.228.64.34:80 -r 207.228.64.109:80 -g -w 1

#forums.cadvision.com
ipvsadm -A -t 207.228.64.104:80 -s wlc
ipvsadm -a -t 207.228.64.104:80 -r 207.228.64.35:80 -g -w 1
ipvsadm -a -t 207.228.64.104:80 -r 207.228.64.109:80 -g -w 1

#secure ssl
ipvsadm -A -t 207.228.64.34:443 -s wlc -p 1800
ipvsadm -a -t 207.228.64.34:443 -r 207.228.64.35:443 -g -w 1
ipvsadm -a -t 207.228.64.34:443 -r 207.228.64.109:443 -g -w 1

#ftp balancing
ipvsadm -A -t 207.228.64.34:21 -s wrr -p 600
ipvsadm -a -t 207.228.64.34:21 -r 207.228.64.35:21 -g -w 1
ipvsadm -a -t 207.228.64.34:21 -r 207.228.64.109:21 -g -w 1

#telnet and ssh
ipvsadm -A -t 207.228.64.34:22 -s wrr
ipvsadm -a -t 207.228.64.34:22 -r 207.228.64.35:22 -g -w 1
ipvsadm -a -t 207.228.64.34:22 -r 207.228.64.109:22 -g -w 1
ipvsadm -A -t 207.228.64.34:23 -s wrr
ipvsadm -a -t 207.228.64.34:23 -r 207.228.64.35:23 -g -w 1
ipvsadm -a -t 207.228.64.34:23 -r 207.228.64.109:23 -g -w 1

#virtual hosts
ipvsadm -A -f 1 wlc
ipvsadm -a -f 1 -r 207.228.64.35 -g
ipvsadm -a -f 1 -r 207.228.64.109 -g


Now, I've made one ldirector cf file(called www.cf) as follows:
# The /etc/ha.d/www.cf for ldirectord
#

# the number of second until a real server is declared dead
timeout = 10

# the number of second between server checks
checkinterval = 10

virtual = 207.228.64.34:80
protocol = tcp
scheduler = wlc
real = 207.228.64.35:80 gate 1
real = 207.228.64.109:80 gate 1
request = "/.testpage"
receive = "test page"

virtual = 207.228.64.104:80
protocol = tcp
scheduler = wlc
real = 207.228.64.35:80 gate 1
real = 207.228.64.109:80 gate 1
request = "/.testpage"
receive = "test page"

So the above www.cf file covers the two main ips, but none of the class
C's, which isn't terribly important, since if the two main ips are
unreachable, the rest of the Class C's most likely aren't either, but
what builds the rules for ipvsadm? Do I still need to run the first
script I have at the top of this email? If so, how does ldirectord know
how to remove and add the servers in and out?

Another question is about the firewall mark and how to incorporate it
into the a cf file for ldirector?

And is there any documentation on the /etc/ha.d/ldirectord.cf, or is
that the equivalent of the www.cf file I've posted above?

Thanks in advance for any help :)
Re: Help with ldirector setup [ In reply to ]
On Thu, Mar 29, 2001 at 12:20:51PM -0700, Ian Courtney wrote:
> I've been using ipvsadm and heartbeat for quite a while now with great
> success. They are both really great programs. I've been using some small
> perl scripts to do some of the failover without much luck. So I've
> started looking into ldirectord, but am having some issues incorporating
> it into my environment.
>
> I understand how to load the files for ldirector and how to get it to
> start from heartbeat, but the documentation on ldirectord is a little
> sparse, so I"m here to ask a few questions. Basically I need help
> incorporating the script below into ldirectord.
>
> First of all, my current config looks like so:
>
> echo "1" > /proc/sys/net/ipv4/ip_forward
> ipchains -F
> ipvsadm -C
>
> #firewall packet marking
> ipchains -A input -s 0.0.0.0/0 -d 207.228.79.0/25 -m 1
> ipchains -A input -s 0.0.0.0/0 -d 207.148.155.0/24 -m 1
> ipchains -A input -s 0.0.0.0/0 -d 207.148.151.0/24 -m 1
> ipchains -A input -s 0.0.0.0/0 -d 207.148.181.0/24 -m 1
>
> #virtual server stuff
> #cgi1/cgi2 web balancing for ~ homedirs
> ipvsadm -A -t 207.228.64.34:80 -s wlc
> ipvsadm -a -t 207.228.64.34:80 -r 207.228.64.35:80 -g -w 1
> ipvsadm -a -t 207.228.64.34:80 -r 207.228.64.109:80 -g -w 1
>
> #forums.cadvision.com
> ipvsadm -A -t 207.228.64.104:80 -s wlc
> ipvsadm -a -t 207.228.64.104:80 -r 207.228.64.35:80 -g -w 1
> ipvsadm -a -t 207.228.64.104:80 -r 207.228.64.109:80 -g -w 1
>
> #secure ssl
> ipvsadm -A -t 207.228.64.34:443 -s wlc -p 1800
> ipvsadm -a -t 207.228.64.34:443 -r 207.228.64.35:443 -g -w 1
> ipvsadm -a -t 207.228.64.34:443 -r 207.228.64.109:443 -g -w 1
>
> #ftp balancing
> ipvsadm -A -t 207.228.64.34:21 -s wrr -p 600
> ipvsadm -a -t 207.228.64.34:21 -r 207.228.64.35:21 -g -w 1
> ipvsadm -a -t 207.228.64.34:21 -r 207.228.64.109:21 -g -w 1
>
> #telnet and ssh
> ipvsadm -A -t 207.228.64.34:22 -s wrr
> ipvsadm -a -t 207.228.64.34:22 -r 207.228.64.35:22 -g -w 1
> ipvsadm -a -t 207.228.64.34:22 -r 207.228.64.109:22 -g -w 1
> ipvsadm -A -t 207.228.64.34:23 -s wrr
> ipvsadm -a -t 207.228.64.34:23 -r 207.228.64.35:23 -g -w 1
> ipvsadm -a -t 207.228.64.34:23 -r 207.228.64.109:23 -g -w 1
>
> #virtual hosts
> ipvsadm -A -f 1 wlc
> ipvsadm -a -f 1 -r 207.228.64.35 -g
> ipvsadm -a -f 1 -r 207.228.64.109 -g
>
>
> Now, I've made one ldirector cf file(called www.cf) as follows:
> # The /etc/ha.d/www.cf for ldirectord
> #
>
> # the number of second until a real server is declared dead
> timeout = 10
>
> # the number of second between server checks
> checkinterval = 10
>
> virtual = 207.228.64.34:80
> protocol = tcp
> scheduler = wlc
> real = 207.228.64.35:80 gate 1
> real = 207.228.64.109:80 gate 1
> request = "/.testpage"
> receive = "test page"
>
> virtual = 207.228.64.104:80
> protocol = tcp
> scheduler = wlc
> real = 207.228.64.35:80 gate 1
> real = 207.228.64.109:80 gate 1
> request = "/.testpage"
> receive = "test page"
>
> So the above www.cf file covers the two main ips, but none of the class
> C's, which isn't terribly important, since if the two main ips are
> unreachable, the rest of the Class C's most likely aren't either, but
> what builds the rules for ipvsadm? Do I still need to run the first
> script I have at the top of this email? If so, how does ldirectord know
> how to remove and add the servers in and out?
>
> Another question is about the firewall mark and how to incorporate it
> into the a cf file for ldirector?
>
> And is there any documentation on the /etc/ha.d/ldirectord.cf, or is
> that the equivalent of the www.cf file I've posted above?
>
> Thanks in advance for any help :)

Please take a look at

http://ultramonkey.org/ultramonkey-1.0.2beta0/topologies/example-ha-lb-4-fwmark.html

Basically, you should run your ipchains rules to mark incoming packets
at boot time. There is no harm in having these rules in place at all times.
Then add a fwmark virtual to your ldirectord.cf.

virtual = 1
protocol = tcp
scheduler = wlc
real = 207.228.64.35:0 gate 1
real = 207.228.64.109:0 gate 1
request = "/.testpage"
receive = "test page"

For more doumentation on ldirectord look at:
man ldirecectord or perldoc ldirectord
The example .cf files found both with the ldirectord distribution
http://ultramonkey.org/ in the topologies section.

--
Horms
horms@vergenet.net
http://vergenet.net/~horms/