从ktcpvs官方网站下的最新发布版本是ktcpvs-0.0.18.tar.gz,是很早以前的,之后一直没有升级,也是针对linux2.4内核 的,我一开始以为没办法只能把它从2.4迁移到2.6,搞了老半天,还没法编译成功,突然发现ktcpvs的svn的版本控制上有了支持2.6内核的一个 稳定版本,只在redhat下测试过,也还没有公开发布,而且是刚上传没多少天,不过还是太好了,下下来。
1.准备内核环境
准备好与运行环境对应版本的kernel source,我用了2.6.8,并编译生成新的linux2.6.8.070728版本,然后重起进入这个版本。
2.编译ktcpvs
在ktcpvs目录运行make install
3.测试ktcpvs
在ktcpvs目录运行./start,没有任何错误提示,可以通过lsmod | grep ktcpvs查看到
如果出现FATAL: Error inserting ktcpvs (/lib/modules/2.6.8-2-386/kernel/net/ktcpvs/ktcpvs.ko): Unknown symbol in module, or unknown parameter (see dmesg)启动不了,很有可能是版本不一致,可以通过modinfo ktcpvs.ko查看,因为我一开始也出这样的错
4.简单配置ktcpvs
主要有四种规则:simple http, persistent http, cookie-based http, hash-based http
webcache
我先配置一个simple http,配置config,start,stop三个文件
假设ktcpvs服务器ip地址是192.168.0.185
config文件如下:
Virtual webtest {
listen = 0.0.0.0:80
scheduler = http
startservers = 8
maxclients = 256
minspareservers = 6
maxspareservers = 18
server = 192.168.0.105:80 1
server = 192.168.0.128:8080 1
rule = pattern “/apache2-default/.*” use server 192.168.0.105:80
rule = pattern “.*” use server 192.168.0.128:8080
}
注:定义了两个real server,一个处理apache默认安装的80端口服务,一个处理剩余的tomcat的8080端口服务,最简单只要有一个real server就行
原来默认有webcache代表8080,www代表80
start文件如下:
#/bin/bash
modprobe ktcpvs
modprobe tvs_http
modprobe tvs_phttp
modprobe tvs_chttp
modprobe tvs_hhttp
echo 5 > /proc/sys/net/ktcpvs/debug_level
userspace/tcpvsadm -f config
userspace/tcpvsadm –start -i webtest
stop文件如下:
#/bin/bash
userspace/tcpvsadm –stop -i webtest
echo 1 > /proc/sys/net/ktcpvs/unload
echo Waiting…
sleep 3
rmmod tvs_hhttp
rmmod tvs_chttp
rmmod tvs_phttp
rmmod tvs_http
rmmod ktcpvs
之后在ktcpvs目录运行./start
访问http://198.168.0.185/apache2-default/应该返回的是105的apache页面
访问http://198.168.0.185/index.jsp应该返回的是128的tomcat页面
这样就简单配置就ok了