LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

ultramonkey/lvs/ldirectord/dns woes

To: lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Subject: ultramonkey/lvs/ldirectord/dns woes
From: msteele@xxxxxxxxxxxxxxxxxxx
Date: Thu, 22 Feb 2001 03:52:29 -0500
Hey folks, I've been trying to debug this problem I have, and so far no
luck :(

Sorry if this isn't _directly_ lvs related, but since
ultramonkey doesn't seem to have been updated in a while,
I thought I'd try to get help here first.

I installed ultramonkey 1.0.2beta0, kernel 2.4.0, lvs 0.2.4, iptables
1.2
without a hitch. I've got a node responding on tcp
ports 80,443,21 using masquerading, but upd port 53
doesn't seem to want to accept connections.

I currently have only one node, but if I can get
this setup I will be able to free up some machines to add
more. So this setup is pretty basic, one monitor, one node.

(no ha, no load balancing)

my setup:

Router box (aka linux director)

/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 216.218.7.2 netmask 255.255.255.0
/sbin/ifconfig eth1 10.0.0.1 netmask 255.0.0.0
/sbin/route add default gw 216.218.7.1 eth0
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
/sbin/route add -net 10.0.0.0 netmask 255.0.0.0 eth1
/sbin/ifconfig eth0:0 216.218.7.3
/usr/local/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "16384" > /proc/sys/net/ipv4/ip_conntrack_max

Node 1 (first of many hopefully)

/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
/sbin/ifconfig eth0 10.0.1.1 broadcast 10.0.0.0 netmask 255.0.0.0
/sbin/route add default gw 10.0.0.1 netmask 0.0.0.0 metric 1

ncftpd,apache,etc TCP
tinydns (djbdns) - UDP


my router/firewall is setup to route traffic to 10.0.0.0/8 through 
216.218.7.2


Here's my ldirectord config:

checktimeout=30
checkinterval=30

## HTTP
virtual=216.218.7.3:80
        fallback=127.0.0.1:80
        real=10.0.1.1:80 masq
        service=http
        request=".ha"
        receive="ha"
        scheduler=wlc
        persistent=600
        protocol=tcp
 
## HTTPS
virtual=216.218.7.3:443
        fallback=127.0.0.1:443
        real=10.0.1.1:443 masq
        service=https
        request=".ha"
        receive="ha"
        scheduler=wlc
        persistent=600
        protocol=tcp

## FTP 
virtual=216.218.7.3:21
        fallback=127.0.0.1:21
        real=10.0.1.1:21 masq
        service=ftp
        request="ha"
        receive="ha"
        login="ha"
        passwd="secret"
        scheduler=wlc
        persistent=600
        protocol=tcp
 
## DNS (UDP)
virtual=216.218.7.3:53
        fallback=127.0.0.1:53
        real=10.0.1.1:53 masq
        service=none
        scheduler=wlc
        protocol=udp


For some reason, this setup doesn't want to make the dns service go up.
here's what I get in the logs:
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Starting Linux Director Daemon
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding virtual server:
216.218.7.3:80
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Starting fallback server for:
216.218.7.3:80 (127.0.0.1:80)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding virtual server:
216.218.7.3:443
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Starting fallback server for:
216.218.7.3:443 (127.0.0.1:443)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding virtual server:
216.218.7.3:21
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Starting fallback server for:
216.218.7.3:21 (127.0.0.1:21)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding virtual server:
216.218.7.3:53
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Starting fallback server for:
216.218.7.3:53 (127.0.0.1:53)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding real server: 10.0.1.1:80
(216.218.7.3:80)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Turning off fallback server
for: 216.218.7.3:80 (127.0.0.1:80)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding real server:
10.0.1.1:443 (216.218.7.3:443)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Turning off fallback server
for: 216.218.7.3:443 (127.0.0.1:443)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Adding real server: 10.0.1.1:21
(216.218.7.3:21)
[Thu Feb 22 01:15:25 2001|ldirectord.cf] Turning off fallback server
for: 216.218.7.3:21 (127.0.0.1:21)


After this didn't work, I modified the ldirectord program, added a new
function
called check_dns 

sub check_dns {
my ($v,$r) = @_;
use Net::DNS;
$res = new Net::DNS::Resolver;

eval {
local $SIG{'ALRM'} = sub { die "timeout\n"; };
alarm($$v{checktimeout});
$res->nameservers($$r{server});
$query = $res->search("www.test.org"); ## my test domain...
alarm(0);
     };
 
if (@$ eq "timeout\n") { service_set($v,$r,"down"); }
 
if ($query) {
foreach $rr ($query->answer) {
next unless $rr->type eq "A";
service_set($v,$r,"up");
return;
                             }
            }
 
service_set($v,$r,"down");
              } 


changed a bit of code to accomodate the new service type,
changed the config file and put service=dns


after stopping and restarting ldirectord with my new code and config, 
I get:
ipvsadm -L -n
IP Virtual Server version 0.2.4 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
TCP  216.218.7.3:21 wlc persistent 600
  -> 10.0.1.1:21                 Masq    1      0          0
UDP  216.218.7.3:53 wlc
  -> 127.0.0.1:53                Local   1      0          0
TCP  216.218.7.3:80 wlc persistent 600
  -> 10.0.1.1:80                 Masq    1      0          0
TCP  216.218.7.3:443 wlc persistent 600
  -> 10.0.1.1:443                Masq    1      0          0    


which is exactly the same as if I hadn't modified anything at all :(

dns lookups to the node work fine (from any machine on my network).

# nslookup
> server 10.0.1.1
Default Server:  [10.0.1.1]
Address:  10.0.1.1
 
> www.test.org
Server:  [10.0.1.1]
Address:  10.0.1.1
 
Name:    www.test.org
Address:  216.218.7.3 


I'm a bit stumped as to what's going wrong here, so any help would be
apreciated.

I would also be interested in finding out if anyone has gotten qmail
smtp 
to work in a cluster-type of environment, and how to do it
(qmtp/qmail-mini?)


Regards,



-- 
Mark Steele
Archduke research and development
Inet Technologies Inc.
msteele@xxxxxxxxxxxxxxxxxxx

010110010110111101110101001000000110000101110010011001010010000001100100011101010110110101100010


<Prev in Thread] Current Thread [Next in Thread>
  • ultramonkey/lvs/ldirectord/dns woes, msteele <=