[DRBD-user] drbd with vserver network problem

Konstantin A. Lepikhov lakostis at anti-leasure.ru
Sun May 22 13:29:14 CEST 2005

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


I'm trying to make fallover cluster with vserver inside. Info about nodes

two servers with vserver + ctx patches, kernel 2.4.26 and drbd. drbd nodes
have crossover 1Gbit connection, vservers have own 2 100Mbt NICs with 2
routing paths. Two servers have the same mobo and CPU (P4 w/HT), one have
1Gb RAM and two SATA disks soft RAID1, other (backup) have 2Gb RAM and
hardware SCSI RAID10. NICs - 2 (1 Gbit and 100Mb) onboard + 100Mb
separate. All NICs - e100/e1000. drbd syncing partition with vserver. 

But have a strange problem - when I start sync between nodes, _some_
vservers do theirs network tasks very slow (some stop responding
completely) - for example mysql don't respond to telnet 3306, host to
localhost don't work etc. If enter to vserver and connect thru local
socket all works fine. Other vsever on separate NIC works as usual. Looks
like that traffic from drbd goes to vserver interface and kills bandwidth.
If stop drbd on secondary node, all works fine except drbd :) But tcpdump
on 1Gbit link shows that drbd traffic go thru this interface and don't
work thru other NICs. kernel logs from drbd0 says nothing interesting -
sync in progress, no problems.

Some info about network setup:

some vservers (vserver1) have internal ip and connect to eth0
some vservers (vserver2) have public ip and connected to eth1 going to ISP
eth2 - crossover for drbd. When the sync stats vserver1 stop responding to
network request (or respond very slow). vserver2 works without problem. I
have no problem on vserver own internal ip (ssh/ping/host/etc).

$ ip addr show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet brd scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether xxxxxxxxxxxxxx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.xxx/24 brd scope global eth0
    inet 192.168.1.xxx/24 brd scope global secondary eth0:vserver1
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether xxxxxxxxxxx brd ff:ff:ff:ff:ff:ff
    inet xxx.xx.xx.xx/26 brd xxxxxxxx scope global eth1:vserver2
4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether xxxxxxxxxxxxxxx brd ff:ff:ff:ff:ff:ff
    inet brd scope global eth2

$ ip route list dev eth0  proto kernel  scope link  src 192.168.1.xxx dev lo  scope link 
default via dev eth0

$ ip rule list
0:      from all lookup local 
32763:  from all to lookup drbd 
32764:  from lookup drbd 
32765:  from <public ip> lookup internet 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route list table drbd dev eth2  scope link 
$ ip route list table internet
xx.xx.xx.0/26 dev eth1  scope link 
default via isp_gateway dev eth1

- drbd.conf is attached.

So the question what it is be and how to make work vserver and drbd :)

PS sorry for long post but I seek google/gmane archive of this ML and
don't see any problems simular to this.

WBR, Konstantin	      chat with ==>ICQ: 109916175
     Lepikhov,	      speak  to ==>JID: lakostis at jabber.org
aka L.A. Kostis       write  to ==>mailto:lakostis at pisem.net.nospam

...The information is like the bank... 			  (c) EC8OR
-------------- next part --------------
skip {
  As you can see, you can also comment chunks of text
  with a 'skip[optional nonsense]{ skipped text }' section.
  This comes in handy, if you just want to comment out
  some 'resource <some name> {...}' section:
  just precede it with 'skip'.

  The basic format of option assignment is
  <option name><linear whitespace><value>;
  It should be obvious from the examples below,
  but if you really care to know the details:
  <option name> :=
        valid options in the respective scope
  <value>  := <num>|<string>|<choice>|...
              depending on the set of allowed values
              for the respective option.
  <num>    := [0-9]+, sometimes with an optional suffix of K,M,G
  <string> := (<name>|\"([^\"\\\n]*|\\.)*\")+
  <name>   := [/_.A-Za-z0-9-]+

resource r0 {

  protocol C;

  incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";

  startup {


  disk {
    on-io-error   detach;

  net {


  syncer {
    rate 100M;

    group 1;

#    al-extents 257;

  on beehive.localoffice {
    device     /dev/drbd0;
    disk       /dev/md4;
    meta-disk  internal;


  on beehive2.localoffice {
    device    /dev/drbd0;
    disk      /dev/sda8;
    meta-disk internal;

More information about the drbd-user mailing list