1、环境: rhel 6.0+ipvsadm-1.2.6+keepalived-1.2.5 2、安装

实现LVS/DR最重要的两个东西是ipvs内核模块和ipvsadm工具包,现在的系统已经包含ip_vs模块

1)检查内核模块,看一下ip_vs 是否被加载

lsmod |grep ip_vs

ip_vs 35009 0

如果没有显示,则说明没有加载,执行命令 modprobe ip_vs 就可以把ip_vs模块加载到内核

#modprobe ip_vs 然后再查看就有了。 2)安装ipvsadm

查看内核版本 #uname -r
2.6.32-71.el6.x86_64

先把目录/usr/src/kernels/2.6.32-71.el6.x86_64链接为/usr/src/linux,命令如下

ln –s /usr/src/2.6.32-71.el6.x86_64 /usr/src/linux

解压ipvsadm-1.24.tar.gz,执行"make;但是报错了,类似的错误信息大概如下

make -C libipvs make[1]: Entering directory /usr/src/ipvsadm-1.26/libipvs' gcc -Wall -Wunused -Wstrict-prototypes -g -fPIC -DLIBIPVS_USE_NL -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c In file included from libipvs.h:13, from libipvs.c:23: ip_vs.h:15:29: error: netlink/netlink.h: No such file or directory ip_vs.h:16:31: error: netlink/genl/genl.h: No such file or directory ip_vs.h:17:31: error: netlink/genl/ctrl.h: No such file or directory In file included from libipvs.h:13, from libipvs.c:23: ip_vs.h:520: error: array type has incomplete element type ip_vs.h:521: error: array type has incomplete element type libipvs.c:57: warning: implicit declaration of function ‘nlmsg_alloc’ libipvs.c:57: warning: assignment makes pointer from integer without a cast libipvs.c:61: warning: implicit declaration of function ‘genlmsg_put’ libipvs.c:61: error: ‘NL_AUTO_PID’ undeclared (first use in this function) libipvs.c:61: error: (Each undeclared identifier is reported only once libipvs.c: In function ‘ipvs_add_service’: libipvs.c:255: error: too many arguments to function ‘ipvs_nl_send_message’ libipvs.c: In function ‘ipvs_update_service’: libipvs.c:276: error: too many arguments to function ‘ipvs_nl_send_message’ libipvs.c: In function ‘ipvs_del_service’: libipvs.c:296: error: too many arguments to function ‘ipvs_nl_send_message’ libipvs.c: In function ‘ipvs_zero_service’: libipvs.c:473: warning: assignment makes pointer from integer without a cast libipvs.c:483: error: too many arguments to function ‘ipvs_nl_send_message’ libipvs.c: In function ‘ipvs_stop_daemon’: libipvs.c:504: warning: assignment makes pointer from integer without a cast libipvs.c:514: error: too many arguments to function ‘ipvs_nl_send_message’ libipvs.c: At top level: libipvs.c:1051: error: ‘NL_OK’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_get_daemon’: libipvs.c:1071: error: ‘NLM_F_DUMP’ undeclared (first use in this function) libipvs.c:1072: error: too many arguments to function ‘ipvs_nl_send_message’ make[1]: *** [libipvs.o] Error 1 make[1]: Leaving directory/usr/src/ipvsadm-1.26/libipvs' make: *** [libs] Error 2

解决:yum install libnl* libpopt*

再次make,还是有报错 类似如 /usr/src/ipvsadm-1.26/ipvsadm.c:667: undefined reference to poptStrerror' /usr/src/ipvsadm-1.26/ipvsadm.c:667: undefined reference topoptBadOption' /usr/src/ipvsadm-1.26/ipvsadm.c:670: undefined reference to poptFreeContext' /usr/src/ipvsadm-1.26/ipvsadm.c:677: undefined reference topoptGetArg' /usr/src/ipvsadm-1.26/ipvsadm.c:678: undefined reference to poptGetArg' /usr/src/ipvsadm-1.26/ipvsadm.c:679: undefined reference topoptGetArg' /usr/src/ipvsadm-1.26/ipvsadm.c:690: undefined reference to poptGetArg' /usr/src/ipvsadm-1.26/ipvsadm.c:693: undefined reference topoptFreeContext' collect2: ld returned 1 exit status make: *** [ipvsadm] Error 1

解决:yum install popt-static (ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/packages/popt-static-1.13-7.el6.x86_64.rpm) 再次make通过,然后make instll 完成安装

3)安装keepalived

keepalived下载 http://www.keepalived.org/software/keepalived-1.2.5.tar.gz

解压 & ./configure & make & make install 完成安装。