[CentOS] Setting Up LVS to Load Balance DNS

Fri Aug 23 15:53:10 UTC 2013
Trevor Kates <katestt at gmail.com>

lvs.cf:
serial_no = 56
primary = 10.100.9.40
service = lvs
backup_active = 1
backup = 10.100.9.41
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 1
syncdaemon = 1
syncd_iface = eth0
syncd_id = 0
virtual ns1 {
     active = 1
     address = 10.100.9.224 eth0:2
     vip_nmask = 255.255.255.0
     port = 53
     use_regex = 0
     load_monitor = rup
     scheduler = wlc
     protocol = tcp
     timeout = 6
     reentry = 15
     quiesce_server = 0
     server ns1a {
         address = 10.100.9.221
         active = 1
         weight = 1
     }
     server ns1b {
         address = 10.100.9.222
         active = 1
         weight = 1
     }
}
virtual ns1 {
     active = 1
     address = 10.100.9.224 eth0:2
     vip_nmask = 255.255.255.0
     port = 53
     send = "\n"
     use_regex = 0
     load_monitor = rup
     scheduler = wlc
     protocol = udp
     timeout = 6
     reentry = 15
     quiesce_server = 0
     server ns1a {
         address = 10.100.9.221
         active = 1
         weight = 1
     }
     server ns1b {
         address = 10.100.9.222
         active = 1
         weight = 1
     }
}

/etc/sysctl.conf (LVS):
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Promote secondary IPs (virtual) upon failover
net.ipv4.conf.all.promote_secondaries = 1

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

# Force nfs lock daemon to a set port
fs.nfs.nlm_udpport=35001
fs.nfs.nlm_tcpport=35001

/etc/sysctl.conf (Real Server):
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536

# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

# Force nfs lock daemon to a set port
fs.nfs.nlm_udpport=35001
fs.nfs.nlm_tcpport=35001