nginx lvs keepalived搭建集群

原创 2016年07月09日 21:45:08

拓扑图如下:

一、为什么要使用负载均衡技术?

1、系统高可用性

2、  系统可扩展性

3、  负载均衡能力

LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更!

二、LVS+Keepalived介绍

1、  LVS

LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVSLinux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NATVS/TUNVS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

2、  keepalived

Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中。

IP配置信息:
LVS-DR-Master          172.10.2.174
LVS-DR-BACKUP          172
LVS-DR-VIP             172.10.2.201   #这个不是一台机子,是在nginx上用脚本建的,下面会有脚本代码。  
WEB1-ngxserver        172.10.2.170   #这个nginx,后端我用的是apache,nginx代理apache
WEB2-ngxserver        172.10.2.206   #这个也是nginx


三、ipvsadm安装:
先安装所需要的库:yum install zlib-devel kernel-* libnl* popt* openssl openssl-devel net-snmp-*
#ipvs安装报错主要是缺少,libnl跟popt库文件
下载地址: http://www.linuxvirtualserver.org/software/index.html
解压后:make && make install
安装好后测试下:ipvsadm ## 必须先执行此命令才能加载ip_vs模块
没报错有输出说明安装ok了。
再输入: lsmod | grep ip_vs

四、安装keepalived(lvs和keepalived装在一台机子上,我全用的虚拟机子)
下载地址:http://www.keepalived.org/download.html
解压后:./configure --prefix=/usr/local/keepalived --enable-snmp && make && make install

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #没有这个keepalived启动后,不会检测到real server的vip
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ #没有这个keepalived无法启动,报错说找不到命令

启动:/etc/init.d/keepalived start

  4.1   /etc/keepalived/keepalived.conf配置如下
! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_sync_group LVS {
    group {
        VI_1
    }  
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    lvs_sync_daemon_interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }  
    virtual_ipaddress {              #这个是vip
        172.10.2.89
    }  
}

virtual_server 172.10.2.89 80 {
    delay_loop 6
    lb_algo rr
    #lb_kind NAT
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 172.10.2.170 80 {             #这个nginx
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }

    real_server 172.10.2.206 80 {           #这个也是nginx
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }
}


五、在两台nginx上放入脚本,(/etc/init.d/lvs_start.sh)内容如下:
 #! /bin/bash
SYN_VIP=172.10.2.201

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

case "$1" in
start)
    ifconfig lo:0 $SYN_VIP netmask 255.255.255.255 broadcast $SYN_VIP
    /sbin/route add -host $SYN_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 $SYN_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 Stop"

    ;; 
*)

    echo "USAGE: $0 {start|stop}"
    exit 1
esac


配置权限:chmod +x /etc/init.d/lvs_start.sh
开启:/etc/init.d/lvs_start.sh start    会提示functions权限不够
加权限chmod +x /etc/rc.d/init.d/functions
/etc/init.d/lvs_start.sh start
再ifconfig看看

说明vip配置ok了。两个nginx机子都使用相同的这个脚本


六、访问测试:
在lvs keepd机子上输入命令
    ip add    #命令查看real server的vip是否已经被绑定到keepalived的MASTER或者BACKUP上
  inet 172.10.2.201/32 scope global eth0    #说明成功绑定

ipvsadm命令检测nginx是否正常工作,

都已经检测到两台nginx在正常工作,

把170和206两台nginx开启,

接下来要清一下,由于我测试时访问ip没搞对,老访问不了,
在nginx上有配置的vip(172.10.2.201),这个ip是对外的,直接对应用户,我们在lvs_keepd机子上有绑定这个vip,那么当用户访问这个ip时,lvs_keepd会接收这个请求然后转发给170和206其中某一台机子,这里lvs也会实现一个小小的负载,

那本地windows的host配置是
 172.10.2.201 www.b.com    #这样访问这个域名时,直接到了lvs,再转发给了nginx,nginx再去后端apache获取数据

测试:当访问www.b.com/test235.html, lvs收到后转发给了ngx206来接收了请求,
      当我把ngx206的nginx服务给关了,再次请求,lvs收到后转发给了ngx170,
      当把ngx206开启时,在lvs_keepd上ipvsadm一下,会看到206重新加入进来。
      这里具体怎么看,看访问日志。


#这里有一些是参照网上的一例子,但小兵新测过,可行。



相关文章推荐

lvs+keepalived+nginx负载搭建

LVS:(linux virtual server)是一款网络模型四层的负载软件,即IP+端口的转发模式,...

LVS+Keepalived+Nginx+Tomcat部署实现

环境介绍   1.两台前端 keepalived+lvs,热备的方式,保证一台lvs前端能正常访问就行,如果一台down,另外一台热备升级到master主机 master: 192.168.20.85...
  • xuxile
  • xuxile
  • 2016年05月10日 19:40
  • 3681

LVS+keepalived+nginx实现双机热备负载均衡

LVS+Keepalived+Nginx实现双机热备负载均衡,这是企业中常用采用的高可用负载均衡部署。...

Keepalived+lvs+nginx之负载均衡

部署LVS+Keepalived的步骤 系统版本 cat /proc/version  Linux version 2.6.32-573.7.1.el6.x86_64 (mockbuild@c6b...

lvs+nginx负载均衡部署

LVS来搭建IP负载均衡集群有VS/NAT、VS/TUN和VS/DR三种技术。 (1)VS/NAT:主要有通过网络地址转换NAT(Network Address Translation)将一组服务器...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

lvs+keepalived+nginx几种模式的比较

本文根据自己实验以及调研得出的结论,纯属个人意见,如有不对之处请留言修正。 下面是几种模式比较: 1.lvs+keepalived做前端,nginx做后端反向代理和负载均衡    优点:keepa...
  • xuxile
  • xuxile
  • 2016年05月16日 16:19
  • 1823

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron  原文链接:http://www.linuxidc.com/Linux/2012-...

Lvs+Keepalived+Squid+Nginx+Mysql主从 高性能集群架构配置

不足之处,请指出~~~~~~~~~ 先进行优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem ...

MySQL集群+LVS+KEEPALIVED环境搭建.doc

  • 2015年06月15日 16:46
  • 216KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nginx lvs keepalived搭建集群
举报原因:
原因补充:

(最多只允许输入30个字)