今天做了LVS的集群配置,做完了之后已经能用了,可是发现问题,第一个页面连接过去的时候是“找不到服务器”,第二个页面连接要经过刷新几次之后才能显 示出全部完整的的信息(有时是图片下载没有全部,有时候时css样式没有全部显示出来),在这我贴出我做的过程,希望高手给与指点:
环境:
OS:linux –rh4 –u4
内核版本:linux-2.6.9-42.ELsmp
Director PC:192.168.1.57
Virtual ip :192.168.1.254 255.255.255.0
Real server : 192.168.1.202
Real server : 192.168.1.203
由于linux的内核版本支持LVS,所以就直接安装ipvs了。
1.首先在DIRECTOR 上面操作:
这只需要下载一个ipvsadm-1.24.tar.gz
(我下载过一个rpm的包,但是安装之后发现它报错是用户不存在,这是为什么?
如下
[root@localhost dwt]# rpm -ivh ipvsadm-1.24-6.src.rpm
1:ipvsadm warning: user wensong does not exist - using root
warning: group wensong does not exist - using root
warning: user wensong does not exist - using root)
warning: group wensong does not exist - using root
########################################### [100%]
)
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# ls -alh /usr/src/ //查看有没有linux目录,如果没有根据自己的内核版本做个软连接,否则在make时会报错。
# ln -s /usr/src/kernels/2.6.9-42.EL-i686/ /usr/src/linux
# make
# make install
[root@localhost network-scripts]# touch ifcfg-eth0:0
[root@localhost network-scripts]# vi ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.254
NETMASK=255.255.255.255
BROADCAST=192.168.1.255
~
~~
"ifcfg-eth0:0" 6L, 111C written
[root@localhost network-scripts]# ifconfig eth0:0 192.168.1.254 netmask 255.255.255.255 up
[root@localhost network-scripts]# route add -host 192.168.1.254 dev eth0:0
[root@localhost network-scripts]# service network restart
[root@localhost net]# ipvsadm -A -t 192.168.1.254:8080 -s rr
[root@localhost net]# ipvsadm -a -t 192.168.1.254:8080 -r 192.168.1.202:8080 -g
[root@localhost net]# ipvsadm -a -t 192.168.1.254:8080 -r 192.168.1.203:8080 -g
执行成功查看 /var/log/message中会有以下提示:
Dec 2 17:37:53 localhost kernel: IPVS: Registered protocols (TCP, UDP, AH, ESP)
Dec 2 17:37:53 localhost kernel: IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
Dec 2 17:37:53 localhost kernel: IPVS: ipvs loaded.
Dec 2 17:37:53 localhost kernel: IPVS: [rr] scheduler registered.
[root@localhost net]# service iptables stop
2、realserver服务器
ifconfig eth0:0 192.168.1.254 netmask 255.255.255.255 broadcast 192.168.1.254 up
/sbin/route add -host 192.168.0.100 dev eth0:0
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/lo/rp_filter
而且也都在两个real server上面使用ifconfig 查看 eth0 eth0:0 lo 都是显示正常,都启用。
Iptables 也全部关闭。
3.测试
测试过程一切正常,连续打开IE 浏览 [url]http://192.168.1.254:8080[/url] 都是分别浏览到不同的页面,而且在DR的服务器上输入ipvsadm –L
[root@localhost ipv4]# ipvsadm -L
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress: Port Scheduler Flags
-> RemoteAddress : Port Forward Weight ActiveConn InActConn
TCP 192.168.1.254 : webcache rr
-> 192.168.1.203 : webcache Route 1 3 4
-> 192.168.1.202 : webcache Route 1 5 1
我不知道三个服务器的虚拟端口我设置的都是一样的eth0:0是否可以,我看有些文档的real server的端口设置lo:0,子网掩码也有的是255.255.255.255 有的是255.255.255.0,因为是第一次做没有甚么经验,希望有经验的人给我些建议。
/sbin/ipvsadm –C
-A -t 10.1.1.1:80 ( 增加一格虚拟服务,其协议(-t 表示tcp ,-u 表示udp) 为TCP 、IP 为10.1.1.1 、 端口号为80 。
- rr 轮叫(Round Robin )
调度器通过" 轮 叫" 调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务 器,而不管服务器上实际的连接数和系统负载。 - wrr 加权轮叫(Weighted Round Robin )
调度器通过" 加权轮叫" 调度算法根据真实服务器的不同处理能力来调 度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。 - lc 最少链接(Least Connections )
调度器通过" 最少连接" 调度算法动态地将网络请求调度到已建立的链 接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用" 最小连接" 调度算法可以较好地均衡负载。 - wlc 加权最少链接(Weighted Least Connections )
在集群系统中的服务器性能差异较大 的情况下,调度器采用" 加权最少链接" 调度 算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。 - lblc 基于局部性的最少链接(Locality-Based Least Connections )
" 基于局部性的最少链接" 调度算法是针对目标IP 地址的负载均衡,目前主要 用于Cache 集群系统。该算法根据请求的目标IP 地 址找出该目标IP 地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若 服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用" 最少链接" 的原则选出一个可用的服务器,将请求发送到该服务器。 - lblcr 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication )
" 带复制的基于局部性最少链接" 调度算法也是 针对目标IP 地址的负载均衡,目前主要用于Cache 集 群系统。它与LBLC 算法的不同之处是它要维护从一个目标IP 地 址到一组服务器的映射,而LBLC 算法维护从一个目标IP 地 址到一台服务器的映射。该算法根据请求的目标IP 地址找出该目标IP 地址对应的服务器组,按" 最小连接" 原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按" 最小连接" 原则从这个集群中选出一台服务器,将该服务 器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。 - dh 目标地址散列(Destination Hashing )
" 目标地址散列" 调 度算法根据请求的目标IP 地址,作为散列键(Hash Key )从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。 - sh 源地址散列(Source Hashing )
" 源地址散列" 调 度算法根据请求的源IP 地址,作为散列键(Hash Key )从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。