#!/bin/sh set -o pipefail echo -ne "[debug]: getting IP address ... " IP_ADDR=$( ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1 ) if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi echo -ne "[debug]: adding virtual service ${IP_ADDR}:80 ... " ipvsadm -A -t ${IP_ADDR}:80 -s rr if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi for i in {1..3}; do echo -ne "[debug]: adding real server 192.168.100.10${i}:80 ... " ipvsadm -a -t ${IP_ADDR}:80 -r 192.168.100.10${i}:80 -w 1 -m if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done echo -ne "[debug]: checking ipvs is populated ... " ipvsadm -l -n | grep -q -E "(${IP_ADDR}|192.168.100.10)" if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi for mod in ip_vs_rr ip_vs; do echo -ne "[debug]: checking for module ${mod} ... " grep -q "^${mod} " /proc/modules if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done echo -ne "[debug]: saving ipvsadm configuration ... " ipvsadm-save -n > /etc/sysconfig/ipvsadm if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi echo -ne "[debug]: clearing ipvsadm configuration ... " ipvsadm -C if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi echo -ne "[debug]: checking ipvs is clear ... " ipvsadm -l -n | grep -E "(${IP_ADDR}|192.168.100.10)" if [ $? -eq 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi for mod in ip_vs_rr ip_vs; do echo -ne "[debug]: removing module ${mod} ... " modprobe -r ${mod} if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done for mod in ip_vs_rr ip_vs; do echo -ne "[debug]: checking for no ${mod} module ... " grep -q "^${mod} " /proc/modules if [ $? -eq 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done echo -ne "[debug]: restoring ipvsadm configuration ... " ipvsadm-restore < /etc/sysconfig/ipvsadm if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi echo -ne "[debug]: checking ipvs is populated ... " ipvsadm -l -n | grep -q -E "(${IP_ADDR}|192.168.100.10)" if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi for mod in ip_vs_rr ip_vs; do echo -ne "[debug]: checking for module ${mod} ... " grep -q "^${mod} " /proc/modules if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done for i in {3..1}; do echo -ne "[debug]: removing real server 192.168.100.10${i}:80 ... " ipvsadm -d -t ${IP_ADDR}:80 -r 192.168.100.10${i}:80 if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi done echo -ne "[debug]: removing virtual service ${IP_ADDR}:80 ... " ipvsadm -D -t ${IP_ADDR}:80 if [ $? -ne 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi echo -ne "[debug]: checking ipvs is clear ... " ipvsadm -l -n | grep -E "(${IP_ADDR}|192.168.100.10)" if [ $? -eq 0 ] ; then echo "FAIL" exit 1 else echo "OK" fi exit 0