2013年10月28日星期一

CentOS 5 升级内核至 2.6.32 后lvs 的升级


系统默认内核版本 2.6.18
升级后内核版本 2.6.39

自带的内核版本可以使用ipvsadm-1.24 ,使用rpm 的方式安装即可。
升级后的内核,按照lvs官方的要求,需要升级ipvsadm 的版本:

首先做一个内核的软链接,保证安装使用的是新内核:

[root@APP src]# ln -s /usr/src/kernels/2.6.39-900.109.1.reiserfs.el5uek/ /usr/src/linux

解压后make 报错:
[root@APP ipvsadm-1.26]# make
make -C libipvs
make[1]: Entering directory `/home/tao.li1/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,

需要升级 libnl 软件包(rpm 自带1.0.0.10 ),升级版本至 1.1.14,用源码方式安装。

直接configure make 源码时候报错:

route/link/vlan.c:51: error: 'VLAN_FLAG_REORDER_HDR' undeclared here (not in a function)
make[2]: *** [route/link/vlan.o] Error 1
  CC route/link/vlan.c
route/link/vlan.c:51: error: 'VLAN_FLAG_REORDER_HDR' undeclared here (not in a function)
make[2]: *** [route/link/vlan.o] Error 1
make[1]: *** [all] Error 2
make: *** [all] Error 2

解决方法:
lib/route/link/vlan.c:添加以下三行:
#ifndef VLAN_FLAG_REORDER_HDR
#define VLAN_FLAG_REORDER_HDR 0x01
#endif

重新make make install。

如果遇到如下的错误,请卸载libnl 相关的软件包,
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:57: undefined reference to `nlmsg_alloc'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:61: undefined reference to `genlmsg_put'
libipvs/libipvs.a(libipvs.o): In function `ipvs_nl_send_message':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:82: undefined reference to `genl_connect'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:85: undefined reference to `genl_ctrl_resolve'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:96: undefined reference to `nl_socket_modify_cb'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:102: undefined reference to `nl_recvmsgs_default'
libipvs/libipvs.a(libipvs.o): In function `ipvs_getinfo_parse_cb':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:152: undefined reference to `genlmsg_parse'
libipvs/libipvs.a(libipvs.o): In function `ipvs_services_parse_cb':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:570: undefined reference to `genlmsg_parse'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:603: undefined reference to `nla_get_string'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:608: undefined reference to `nla_get_string'
libipvs/libipvs.a(libipvs.o): In function `ipvs_dests_parse_cb':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:735: undefined reference to `genlmsg_parse'
libipvs/libipvs.a(libipvs.o): In function `ipvs_timeout_parse_cb':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:976: undefined reference to `genlmsg_parse'
libipvs/libipvs.a(libipvs.o): In function `ipvs_daemon_parse_cb':
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:1033: undefined reference to `genlmsg_parse'
/home/tao.li1/ipvsadm-1.26/libipvs/libipvs.c:1046: undefined reference to `nla_get_string'


编译安装keepalived
configure 结果如下:

Keepalived configuration
------------------------
Keepalived version       : 1.2.8
Compiler                 : gcc
Compiler flags           : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib                : -lpopt -lssl -lcrypto -lcrypt  -lnl
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
SNMP support             : No
SHA1 support             : No
Use Debug flags          : No


启动keepalived 报错:
Starting keepalived: keepalived: error while loading shared libraries: libnl.so.1: cannot open shared object file: No such file or directory
[FAILED]

指定加载库 :ldconfig -f /etc/ld.so.conf (修改 /etc/ld.so.conf 增加下面一行)
/usr/local/lib


没有评论:

发表评论