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装在一台机子上,我全用的虚拟机子)
解压后:./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+端口的转发模式,...
  • dwl764457208
  • dwl764457208
  • 2015年10月08日 11:48
  • 5244

LVS+Keepalived+Nginx+Tomcat部署实现

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

LVS+keeplived+nginx+apache搭建高可用、高性能php集群

LVS+keeplived+nginx+apache搭建高可用、高性能php集群 http://kerry.blog.51cto.com/172631/600590/...
  • liuxiaojun828
  • liuxiaojun828
  • 2016年07月07日 11:20
  • 309

nginx lvs keepalived搭建集群

拓扑图如下: 一、为什么要使用负载均衡技术? 1、系统高可用性 2、  系统可扩展性 3、  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,k...
  • wjg_ww
  • wjg_ww
  • 2016年07月09日 21:45
  • 1113

keepalived+nginx搭建高可用几个注意点

在yum安装完keepalived之后,配置keepalived的配置文件 注意点 在master和backup的keepalived的配置文件中,网卡名字为当前机器的网卡名称VIP的选择...
  • u014389734
  • u014389734
  • 2018年02月07日 11:44
  • 12

[原]LVS+Keepalived+nginx-rtmp-module搭建流媒体服务器集群

架构 机器配置 管理IP地址 角色 备注 192.168.70.240 LVS负载均衡服务器(Direc...
  • langsim
  • langsim
  • 2015年08月31日 15:54
  • 1025

架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

上篇文章《架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层》我们讲解了Nginx的故障切换,并且承诺各位读者会尽快讲解 LVS + Keepalived +...
  • yinwenjie
  • yinwenjie
  • 2015年08月30日 09:36
  • 11671

lvs+keepalived+nginx 搭建主备

上一篇讲了nginx+tomcat搭建了反向代理和负载均衡  那么如果nginx挂掉了 即使两个tomcat都没有挂也是无法访问的 所以这个时候需要一个主备管理 如果主nginx挂了立即由备用ngin...
  • feng_qi_1984
  • feng_qi_1984
  • 2017年02月01日 13:49
  • 580

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

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

手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 负载均衡 高可用 集群

手把手教程: CentOS 6.5  LVS + KeepAlived  搭建 负载均衡 高可用 集群 为了实现服务的高可用和可扩展,在网上找了几天的资料,现在终于配置完毕,现将心得公布处理,希望...
  • tengyuantuohai
  • tengyuantuohai
  • 2014年02月21日 22:07
  • 20984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nginx lvs keepalived搭建集群
举报原因:
原因补充:

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