ipvsadm+keepalived 实现高可用负载均衡

一.使用系统RedHatEnterpriseLinuxServerrelease5.4

二.安装环境

1.说明

realserver:192.168.1.11

realserver:192.168.1.12

lvs控制机MASTER:192.168.1.100

BACKUP:192.168.1.101

虚拟VIP:192.168.1.200

其中:realserver上只需要简单的安装apache即可

lvs控制机需要安装:ipvsadm,keepalived

2.lvs控制机安装,主备机分别安装ipvsadm

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

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

#lsmod|grepip_vs

ip_vs350090

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

#modprobeip_vs

2)安装ipvsadm

先把目录/usr/src/kernels/2.6.18-164.el5-x86_64链接为/usr/src/linux,命令如下

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

解压ipvsadm-1.24.tar.gz,执行"make;makeinstall”完成安装。

3)lvs/dr脚本,在主备机上备份部署

vilvsdr

#!/bin/bash

RIP1=192.168.1.11

RIP2=192.168.1.12

VIP1=192.168.1.200

/etc/rc.d/init.d/functions

case"$1"in

start)

echo"startLVSofDirectorServer"

#settheVirtualIPAddressandsysctlparameter

/sbin/ifconfigeth0:0$VIP1broadcast$VIP1netmask255.255.255.255up

#/sbin/ifconfigeth0:1$VIP2broadcast$VIP2netmask255.255.255.255up

/sbin/routeadd-host$VIP1deveth0:0

#/sbin/routeadd-host$VIP2deveth0:1

echo"1">/proc/sys/net/ipv4/ip_forward

#ClearIPVStable

/sbin/ipvsadm-C

#setLVS

#WebApache

/sbin/ipvsadm-A-t$VIP1:80-srr-p120

/sbin/ipvsadm-a-t$VIP1:80-r$RIP1:80-g

/sbin/ipvsadm-a-t$VIP1:80-r$RIP2:80-g

#RunLVS

/sbin/ipvsadm

;;

stop)

echo"closeLVSDirectorserver"

echo"0">/proc/sys/net/ipv4/ip_forward

/sbin/ipvsadm-C

/sbin/ifconfigeth0:0down

;;

*)

echo"Usage:$0{start|stop}"

exit1

esac

4)主备机上分别安装keepalived

tarzxfkeepalived-1.1.17.tar.gz

cdkeepalived-1.1.17

./configure--prefix=/usr/local/keepalive-with-kernel-dir=/usr/src/kernels/path

make&&makeinstall

mkdir-p/etc/keepalived/

vikeepalived.conf以下配置文件

!ConfigurationFileforkeepalived

global_defs{

router_idLVS_DEVEL

}

vrrp_instanceVI_1{

stateMASTER#备份服务器上将MASTER改为BACKUP

interfaceeth0#HA监测网络接口

virtual_router_id51#主、备机的virtual_router_id必须相同

priority90#主、备机取不同的优先级,主机值较大,备份机值较小

advert_int1#VRRPMulticast广播周期秒数

authentication{

auth_typePASS#VRRP认证方式

auth_pass1111#VRRP口令字

}

virtual_ipaddress{

192.168.1.200#LVS虚拟地址

}

}

virtual_server192.168.1.20080{

delay_loop2

lb_algorr

lb_kindDR

protocolTCP

real_server192.168.1.1180{

weight1

TCP_CHECK{

connect_timeout3

nb_get_retry3

delay_before_retry3

}

}

real_server192.168.1.1280{

weight1

TCP_CHECK{

connect_timeout3

nb_get_retry3

delay_before_retry3

}

}

}

三.分别启动主备机上的lvs脚本和keepalived

shlvsdrstart

/usr/local/keepalived/sbin/keepalived-D

四.测试

停掉主机ipvsadmn和keepalived,从机立即接管服务。

启动主机服务,主机负载均衡生效。

这里采用了“rr:轮叫(RoundRobin)”算法,容易看出实际效果,对它的解释如下:

调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载.

相关推荐