LVS+Keepalived实现负载均衡和双机热备

 1. 说明

         在《keepalived实现Tomcat服务双机热备》中主要讲述如何安装及配置Keepalived来实现双机热备,主要功能是:MASTER和BACKUP两台服务器处于热备状态,对用户虚拟一个IP,屏蔽底层的真实IP地址,用户通过虚拟IP访问当前的MASTER服务器;当MASTER服务器宕机或者发生其他故障时,BACKUP自动切换为MASTER,这个过程对用户时透明的。

         本文主要讲述如何安装ipvsadm、如何配置LVS+Keepalived实现负载均衡和双机热备的功能。功能描述:用户通过虚拟IP访问时,应当会负载均衡到主备服务器上;当然,当MASTER服务器宕机或者发生其他故障时,BACKUP也会自动切换为MASTER。

2. 安装及配置

2.1 安装ipvsadm

         首先安装ipvsadm,本人用的版本是ipvsadm-1.24-6。可以去相关网站进行下载ipvsadm-1.24-6.src.rpm。

         下面安装ipvsadm:(将ipvsadm-1.24-6.src.rpm放在根目录下)

[~] rpm -ivh ipvsadm-1.24-6.src.rpm
[~] cd /usr/src/redhat/SOURCES
[SOURCES] tar -zxvf ipvsadm-1.24.tar.gz
[SOURCES] uname -r
2.6.18-238.el5
[SOURCES] ln -s/usr/src/kernels/2.6.18.238.el5-X86_64/ /usr/src/linux
[SOURCES] cd ipvsadm-1.24
[ipvsadm-1.24] make; make install

2.2 配置keepalived.conf

         接着配置keepalived.conf:(具体安装请参考《keepalived实现Tomcat服务双机热备》)

MASTER(10.10.195.53)配置:

global_defs {
   router_id LVS_DEVEL_1
}
vrrp_script chk_http_port {
   script "/opt/tomcat.pid"
   interval 5
   weight 2
}
vrrp_instance VI_1 {
   state MASTER
   interface eth0
   virtual_router_id 53
   priority 150
   advert_int 1

   authentication {
       auth_type PASS
       auth_pass 1111
    }
   track_script {
       chk_http_port
    }
   virtual_ipaddress {
       10.10.195.212  #VIP
    }
}
virtual_server 10.10.195.212 8080 {
       delay_loop 6
       lb_algo wrr
       lb_kind DR
       protocol TCP
       real_server 10.10.195.53 8080 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 8080
                }
       }
       real_server 10.10.195.190 8080 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 8080
                }
       }
}

BACKUP(10.10.195.190)配置:

lobal_defs {
   router_id LVS_DEVEL_2
}
vrrp_script chk_http_port {
       script "/opt/tomcat.pid"
       interval 5
       weight 2
}
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 53
   priority 100
    advert_int 1

   authentication {
       auth_type PASS
       auth_pass 1111
    }
   track_script {
       chk_http_port
    }
   virtual_ipaddress {
       10.10.195.212
    }
}
virtual_server 10.10.195.212 8080 {
       delay_loop 6
       lb_algo wrr
       lb_kind DR
       protocol TCP
       real_server 10.10.195.53 8080 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 8080
                }
       }
       real_server 10.10.195.190 8080 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 8080
                }
       }
}

2.3  LVS脚本配置

         两台WEB服务器安装http服务(tomcat)后,创建文件并赋予权限,配置lvs脚本,脚本作用是一直ARP广播,将请求包都由负载均衡lvs服务分配。

         主备机的LVS脚本是相同的。虚拟IP(VIP)是10.10.195.212。下面是脚本的代码:

[~] vim /sbin/realdr.sh
#!/bin/bash

VIP=10.10.195.211
/etc/rc.d/init.d/functions

case "$1" in
start)
        echo "start LVS of REALServer"
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#       /sbin/route add -host $VIP dev 1o: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
;;
stop)
        echo "close LVS REALServer"
        /sbin/ifconfig lo:0 down
#       /sbin/route del -host $VIP dev lo:0
        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
;;
status)
        islothere=`/sbin/ifconfig lo:0 | grep $VIP | wc -l`
        isrothere=`netstat -rn | grep "lo:0" | grep $VIP | wc -l`
#       echo $islothere
#       echo $isrothere
        if [ $islothere -eq 0 ]
        then
                if [ $isrothere -eq 0 ]
                then
                        echo "LVS of REALServer Stoped."
                else
                        echo "LVS of REALServer Running."
                fi
        else
                echo "LVS of REALServer Running."
        fi
;;
*)
        echo "Usage:$0{start|stop}"
        exit 1
;;
esac

设置LVS脚本权限并运行:

[~] chmod 755 /sbin/realdr.sh
[~] /sbin/realdr.sh start

3. 查看

3.1查看虚拟ip相关信息

         之后安装并启动keepalived:service keepalived start.

         可以通过使用ip addshow命令查看(以MASTER为例):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
    inet 10.10.195.211/32 brd 10.10.195.211 scope global lo:0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast qlen 1000
   link/ether 00:0c:29:6b:f2:a8 brd ff:ff:ff:ff:ff:ff
   inet 10.10.195.53/24 brd 10.10.195.255 scope global eth0
    inet 10.10.195.211/32 scope global eth0

         可以看到lo及eth0上都有虚拟IP地址。

3.2 查看负载均衡状态

在终端输入命令:ipvsadm可以查看。

MASTER(10.10.195.53):

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
TCP 10.10.195.212:webcache wrr
 -> 10.10.195.190:webcache      Route   1      0         11
 -> shr:webcache                Local   1      0         0

BACKUP(10.10.195.190):

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
TCP 10.10.195.211:webcache wrr
 -> server1:webcache            Local   1      0         0
 -> 10.10.195.53:webcache       Route   1      0         11

4. 测试

         如果多次打开浏览器,通过虚拟IP访问网站,应当会负载均衡到两台服务器上。第一次打开一个浏览器并输入http://10.10.195.212:8080/,显示10.10.195.53(190)服务的内容;第二次打开一个浏览器并输入http://10.10.195.212:8080/,显示10.10.195.190(53)服务器的内容。

时间: 2024-11-01 09:08:08

LVS+Keepalived实现负载均衡和双机热备的相关文章

借助LVS+Keepalived实现负载均衡

原文地址:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会

Lvs+keepalived 高可用性负载均衡自动化配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/809397 前言* 随着互联网的发展,提供用户访问的web服务器,必须要保证每天24不间断服务,访问量不断增加,有什么好的web架构既能实现高可用性负载均衡,而且价格又是免费的呢?答案有木有?有!lvs+keepalived 是不错的选择!   一.实验环境:4台centos 5.4 ,以及简单的拓扑图: LVS-

Nginx负载均衡:分布式/热备Web Server的搭建

       Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:新浪.网易.腾讯等.                Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性,在高连接并发的情况下,Ng

CENTOS中如何利用Keepalived构建双主MySQL+双机热备

系统环境:CentOS 6.3 x64 MySQL版本:mysql-5.6.10 Keepalived版本:keepalived-1.2.7 MySQL-VIP:192.168.7.253 MySQL-master1:192.168.7.201 MySQL-master2:192.168.7.249 首先关闭iptables和SELINUX # service iptables stop # setenforce 0 # vi /etc/sysconfig/selinux -----------

keepalived实现Tomcat服务双机热备

项目中需要采用tomcat双机热备机制,以确保系统性能.本人通过查阅资料以及亲自实现完成,写下这篇博文,供个人读者参考. 1. 规划 1.1服务器环境规划 负载服务器master及WEB服务器1真实IP:10.10.195.53 负载服务器backup及WEB服务器2真实IP:10.10.195.190 负载服务器虚拟ip:10.10.195.212 1.2 软件环境规划 操作系统:Red Hat Enterprise Linux Server release 5.6 (Tikanga) kee

双机热备常见问题与方案选择

问题 对于企业重要的应用系统而言,保证系统能持续.可靠地提供服务是非常重要的,因此就出现了对高可用性的需求和高可用性的解决方案. 对于如何选择高可用性的解决方案,特别是关于双机热备的方案选择,常见的有以下问题: Q:已经采取了RAID技术和数据备份技术,还有必要做双机吗? A:参见:双机热备与数据备份的关系 Q:高可用性的解决方案有哪些? A:从广义讲,高可用性包括一切避免系统服务中断的技术.而一般所说的系统高可用性,往往特指服务器的双机或多机热备/容错. Q:什么时候需要双机热备? A:决定是

双机热备常见问题及解决方案

对于企业重要的应用系统而言,保证系统能持续.可靠地提供服务是非常重要的,因此就出现了对高可用性的需求和高可用性的解决方案. 对于如何选择高可用性的解决方案,特别是关于双机热备的方案选择,常见的有以下问题: Q:高可用性的解决方案有哪些? A:从广义讲,高可用性包括一切避免系统服务中断的技术.而一般所说的系统高可用性,往往特指服务器的双机或多机热备/容错. Q:什么时候需要双机热备? A:决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以此决定是否使用双机热备.即

双机热备中基于共享存储与纯软件方式

双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. 对于这种方式,采用两台服务器,使用共享的存储设备(磁盘阵列柜或存储区域网SAN).两台服务器可以采用互备.主从.并行等不同的方式.在工作过程中,两台服务器将以一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担.同时,服务器通过心跳线(目前往往采用建立私有网络的方式)侦测另一台服务器的工作状况.当一台服务器

双机热备、双机互备与双机双工的区别

双机热备即是目前通常所说的active/standby方式,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备.当active服务器出现故障的时候,通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用. 双机互备,在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性.这种方式实际上是双机热备的一种应用.它