LVS和Nginx的一些杂记

LVS(Linux Virtual Server)是章文嵩博士创立的开源项目,可以帮助我们建立高可用性和高扩展性的Linux集群,LVS性能非常好,在暂时不能花费巨资购买F5、NetDispatcher之类硬件的时期,LVS还是能够很好的满足需要的。

LVS的Linux组件IPVS在新版本的Linux内核里已经支持,不需要单独再安装,可以通过命令

lsmod |grep ip_vs

检查内核是否支持IPVS。

ipvsadm是LVS的管理软件,在编译安装的时候要注意,先做一个ln连接,类似

ln -s /usr/src/kernels/2.6.9-42.EL-smp-i686 /usr/src/linux

ln -s /usr/src/kernels/2.6.18-8.el5-x86_64 /usr/src/linux

keepalived是一个很方便的LVS管理工具,只要需要配置keepalived的配置文件就可以了,不用一条一条的执行ipvsadm命令了。

将keepalived加为服务的方法(keepalived默认安装在/usr/local/etc下)

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/

关于虚拟IP与真实服务器IP的端口对应问题
在测试中,发现虚拟IP的端口只能和真实服务器IP的端口对应,比如虚拟IP的端口是80,后面对应的真实服务器的端口也只能是80,不能任意配置,真实服务器的端口,让我非常的不解,是我配置错误?还是LVS或keepalived得问题呢?

在Nginx服务器里也可以实现简单的Load Balance,举例

upstream tomcats {
ip_hash;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8280 max_fails=3 fail_timeout=30s;
}
server {
location / {
proxy_pass http://tomcats;
}
}

其中,ip_hash的作用在于很据用IP做hash算法,分配到相应的后端服务上,这样的话,用可以基本上固定的分配到某台机子上,就不用担心Session的问题,fail_timeout和max_fails是指在单位时间重试的次数,如果连接不成功,则不会再向其转发请求。