搭建LVS+Keepalived负载均衡集群

这两天学习了LVS+Keepalived负载均衡的搭建。网上的教程非常多,可是动起手来遇到不少问题。

如今把自己的搭建过程以及遇到的一些问题给分享下。

硬件环境:

Macbook 8G内存。250G SSD,双核

软件环境:

因为资源有限。搭建了4个虚拟机。

虚拟机

[[email protected] work]# uname -a

Linux rs-1 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

[[email protected] work]# cat /etc/redhat-release

CentOS release 5.6 (Final)

4个虚拟机的ip地址分配例如以下:

Master DR: { ip: 172.16.3.89 hostname: lvs-backup}

Slave DR: { ip:172.16.3.90 hostname:lvs}

Real Server1: {ip: 172.16.3.91 hostname: rs-1}

Real Server2: { ip:172.16.3.92 hostname: rs-2}

VIP: 172.16.3.199

1.在Master DR和Slave DR分别安装ipvsadm(1.24), keepalived(1.2.12)

安装ipvsadm

检查系统是否安装了IPVS模块,下图显示系统已经支持ipvs模块的。

[[email protected] ~]# modprobe -l | grep ipvs

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko

做个软连接

[[email protected] src]$ sudo ln -s /usr/src/kernels/2.6.18-238.el5-x86_64/ /usr/src/linux

编译

[[email protected] ipvsadm-1.24]$ make

安装

[[email protected] ipvsadm-1.24]$ sudo make install

检測是否成功安装

[[email protected] ~]# ipvsadm -v

ipvsadm v1.24 2005/12/10 (compiled with getopt_long and IPVS v1.2.1)

能打印出版本说明已经成功安装了!!

安装keepalived

configure

[[email protected] keepalived-1.2.12]$./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64/

编译

[[email protected] keepalived-1.2.12]$ make

安装

[[email protected] keepalived-1.2.12]$ sudo make install

做个软连接

[[email protected] keepalived-1.2.12]$ sudo ln -s /usr/local/sbin/keepalived /sbin/

检測是否成功安装

[[email protected] ~]# keepalived -v

Keepalived v1.2.12 (05/06,2014)

能打印出版本。说明安装已经成功了!!

同理在lvs-backup上安装keepalived

检測是否成功安装

[[email protected]~]# keepalived -v

Keepalived v1.2.12 (05/06,2014)

配置keepalived

! Configuration File for keepalived

#global_defs {

#   notification_email {

#设置报警邮件地址,能够设置多个,每行1个。

#需开启邮件报警及本机的Sendmail服务。

#   }

#notification_email_from [email protected]

#smtp_server 192.168.199.1  #设置SMTP Server地址;

#smtp_connect_timeout 30

#router_id LVS_DEVEL

#}

########VRRP Instance########

vrrp_instance VI_1 {

state MASTER    #指定Keepalived的角色,MASTER为主机server。BACKUP为备用server

interface eth1  #BACKUP为备用server

virtual_router_id 51

priority 100    #定义优先级。数字越大,优先级越高。主DR必须大于备用DR。

advert_int 1

authentication {

auth_type PASS  #设置验证类型。主要有PASS和AH两种

auth_pass 1111  #设置验证password

}

virtual_ipaddress {

172.16.3.199  #设置主DR的虚拟IP地址(virtual IP),可多设。但必须每行1个

}

}

########Virtual Server########

virtual_server 172.16.3.199 80 {  #注意IP地址与port号之间用空格隔开

delay_loop 6        #设置健康检查时间。单位是秒

lb_algo rr          #设置负载调度算法,默觉得rr,即轮询算法,最棒是wlc算法

lb_kind DR          #设置LVS实现LB机制。有NAT、TUNN和DR三个模式可选

nat_mask 255.255.255.0

#persistence_timeout 50  #会话保持时间,单位为秒

protocol TCP        #指定转发协议类型。有TCP和UDP两种

real_server 172.16.3.92 80 {

weight 50          #配置节点权值,数字越大权值越高

TCP_CHECK {

connect_timeout 3     #表示3秒无响应,则超时

nb_get_retry 3        #表示重试次数

delay_before_retry 3  #表示重试间隔

}

}

real_server 172.16.3.91 80 {  #配置服务器节点。即Real Server2的public IP

weight 50           #配置节点权值。数字越大权值越高

TCP_CHECK {

connect_timeout 3       #表示3秒无响应,则超时

nb_get_retry 3          #表示重试次数

delay_before_retry 3    #表示重试间隔

}

}

Slave DR的配置和Master DR的配置基本一样。仅仅有2个不同点:

MASTER改为BACKUP,priority 100改为priority 80

这边说下persistence_timeout 选项,意思就是在这个一定时间内会讲来自同一用户(依据ip来推断的)route到同一个real

server。

我这边给凝视掉了。详细依据业务需求。长连接的话最好是配置上,配置值最好跟lvs的配置的timeout一致。

启动keepalived

编写start.sh(stop.sh,restart.sh)脚本方便启动

#!/bin/sh

/etc/init.d/keepalived start

运行脚本

[[email protected] work]# ./start.sh

Starting keepalived:                                       [  OK ]

编写检測脚本watch.sh

#!/bin/sh

watch ‘ipvsadm -l -n‘

启动检測

[[email protected] work]# ./watch.sh

Every 2.0s: ipvsadm -l -n                                                                                                                          Tue May  6 12:49:52 2014

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.16.3.199:80 rr persistent 50

-> 172.16.3.91:80               Route   50     0          0

-> 172.16.3.92:80               Route   50     0          0

能够看到已经检測到172.16.3.91, 172.16.3.92两台server。

在Slave DR上做相同配置和脚本。

2.在Real Server1和Real Server2安装nginx

安装nginx过程省略。

安装完nginx之后。须要启动nginx。

配置 realserver.sh脚本

#!/bin/bash

SNS_VIP=172.16.3.199

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

case "$1" in

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_VIP dev lo:0

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

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

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

exit 1

esac

~

启动脚本

[[email protected] work]# ./realserver.sh start

RealServer Start

运行ifconfig,能够看到做往常多了一段下图红框内的内容。

測试

在Slave DR上測试

[[email protected] conf]$ for((i=0;i<100;i++));do curl 172.16.3.199;done;

或者用webbench模拟并发请求

[[email protected] conf]$ webbench -c 10 -t 10 http://172.16.3.199/

在Master DR上运行watch.sh

Every 2.0s: ipvsadm -l -n                                                                                                                           Wed May  7 11:45:27 2014

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.16.3.199:80 rr

-> 172.16.3.91:80               Route   50     0          1763

-> 172.16.3.92:80               Route   50     0          1762

整个配置过程,记得关闭全部虚拟机的防火墙, 这点非常重要。!!

[[email protected] work]# service iptables stop

例如以下命令可查询是否已经关闭防火墙

[[email protected] work]# chkconfig --list | grep iptables

iptables       0:off1:off2:off3:off4:off5:off6:off

參考链接:

http://beyondhdf.blog.51cto.com/229452/1331874

http://www.it165.net/admin/html/201308/1604.html

时间: 2024-09-29 21:21:34

搭建LVS+Keepalived负载均衡集群的相关文章

RHEL6 搭建LVS/DR 负载均衡集群 案例

搭建LVS/DR 负载均衡集群 案例 实验拓扑图: 操作流程: Director Server :        192.168.4.50 pc50 安装并启用ipvsadm 配置辅助IP地址 创建虚拟服务器,向虚拟服务器中加入节点 Real Server:        192.168.4.51 pc51        192.168.4.52 pc52 配置WEB 服务器 配置辅助IP地址,调整内核参数 Clinet :192.168.4.253 pc253 连接虚拟服务器测试 环境准备:

Centos7搭建lvs+keepalive负载均衡集群

keepalived简介 keepalived是分布式部署解决系统高可用的软件,结合lvs(LinuxVirtual Server)使用,解决单机宕机的问题. keepalived是一个基于VRRP协议来实现IPVS的高可用的解决方案.对于LVS负载均衡来说,如果前端的调度器direct发生故障,则后端的realserver是无法接受请求并响应的.因此,保证前端direct的高可用性是非常关键的,否则后端的服务器是无法进行服务的.而我们的keepalived就可以用来解决单点故障(如LVS的前端

LVS+Keepalived负载均衡集群之DR模式

一.环境 5台虚拟机,分别是: 1台测试机(192.168.3.111); 2台DirectorServer(192.168.3.221.192.168.3.222); 2台RealServer(192.168.3.231.192.168.3.232); 注:VIP本实验设置为:192.168.3.220 二.安装配置RealServer yum -y install httpd chkconfig httpd on echo 'R1/R2' /var/www/html/index.html  

Nginx+Keepalived搭建高可用负载均衡集群

Nginx+Keepalived搭建高可用负载均衡集群   一. 环境说明 前端双Nginx+keepalived,nginx反向代理到后端的tomcat集群实现负载均衡,Keepalived实现集群高可用. 操作系统: Centos 6.6_X64 Nginx版本: nginx-1.9.5 Keepalived版本:keepalived-1.2.13 结构: Keepalived+nginx-MASTER:10.6.1.210         Keepalived+nginx-BACKUP:

CentOS7 搭建LVS+keepalived负载均衡

CentOS7 搭建LVS+keepalived负载均衡(一) 本文中只涉及一台负载均衡服务器,和两台真实服务器,主要是初步体验负载均衡:实际的环境中,lvs和keepalived一起用才是黄金搭档,下篇将继续讲述lvs+keepalived的搭建过程 一.本次搭建的系统架构图- 虚拟机:VirtualBox- virtaulbox host-only的IP地址:192.168.137.1- 所用系统:CentOS7- 真实web服务器(RS1):192.168.137.5- 真实web服务器(

LVS DR 负载均衡集群

LVS DR 负载均衡集群 试验准备:五台主机ABCDE,主机ABCDE均为单网卡,IP地址分别为192.168.10.2,192.168.10.3,192.168.10.4,192.168.10.5,192.168.10.6.主机A作为内网客户端,主机B负载均衡调度器,主机C和主机D作为网站服务器,主机E作为共享存储,均清除防火墙和SELINUX.操作系统均为RHELx86_64,为最小化安装. 主机A操作 #vim /etc/sysconfig/network-scripts/ifcfg-e

使用Nginx1.9.9+Keepalived1.2.x搭建高可用负载均衡集群

一 简介以及原理介绍 (1)Nginx概念介绍: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等 (2)Keepalived概念介绍: Keepalived的作用是检测服务器的状态,如果有一台we

搭建高性能Jboss负载均衡集群

负载均衡集群是由两台或者两台以上的服务器组成.分为前端负载调度和后端服务两个部分.负载调度部分负载把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供营养程序服务的部分.与双机热备不同的是,负载均衡集群中,所有的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工作负载. 负载均衡集群可以把一个高负荷的应用分散到多个节点共同完成,适用于业务繁忙.大负荷访问的应用系统.负载均衡集群的一大优点除了将大负荷进行分摊解决性能问题之外,他还有极强的出错互补机制,每一个提供服务的节点在出

linux集群系列(3) --- LVS之负载均衡集群DR实例

一.简介     1.1.  负载均衡集群:LB (load balancing) LVS 是linux virtual server 的简写,即linux的虚拟服务器,是一个虚拟的服务器集群系统.ip负载均衡技术是在负载调度器的实现技术中效率最高的,在已有的ip负载均衡技术中,主要通过网络地址转换(即VS/NAT 技术).由于使用nat技术会使分派器成为瓶颈,所以提出了通过ip隧道实现虚拟服务器(即VS/TUN)和通过直接路由实现虚拟服务器的方法即VS/DR. VS/NAT.VS/TUN和VS