nginx通过keepalived实现高可用的负载均衡

使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。

摘自《大型网站技术架构_核心原理与案例分析》

一,环境准备

127.12.19.121:   nginx+keepalived   master

127.12.19.131:   nginx+keepalived   backup

127.12.89.23:    虚拟ip(VIP) 对外提供服务的IP,也可称做浮动IP.

127.17.124.13 : 后端服务A

127.17.124.14 : 后端服务B

二,流程架构

三,Nginx主要实现及配置

1,通过反向代理,实现用户对后台服务器的访问,并且也可以实现对一些静态文件的缓存,提搞性能。

nginx-master的 nginx.conf配置如下:

user  root;            #运行用户
worker_processes  1;        #启动进程,通常设置成和cpu的数量相等

#全局错误日志及PID文件
error_log  /usr/local/nginx/logs/error.log;
error_log  /usr/local/nginx/logs/error.log  notice;
error_log  /usr/local/nginx/logs/error.log  info;
pid        /usr/local/nginx/logs/nginx.pid;

# 工作模式及连接数上线
events
{
    use epoll;            #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;    #单个后台worker process进程的最大并发链接数
} 

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
    include       mime.types;
    default_type  application/octet-stream;
    #设定请求缓冲
    server_names_hash_bucket_size  128;
    client_header_buffer_size   32K;
    large_client_header_buffers  4 32k;
    # client_max_body_size   8m;
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,

    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on; 

    #连接超时时间
    keepalive_timeout  65;

    #开启gzip压缩,降低传输流量
    gzip  on;
    gzip_min_length    1k;
    gzip_buffers    4 16k;
    gzip_http_version  1.1;
    gzip_comp_level  2;
    gzip_types  text/plain application/x-javascript text/css  application/xml;
    gzip_vary on;

    #添加tomcat列表,真实应用服务器都放在这
    upstream tomcat_pool
    {
       #server tomcat地址:端口号 weight表示权值,权值越大,被分配的几率越大;
    server 127.17.124.13:8080 weight=4 max_fails=2 fail_timeout=30s;
      server 127.17.124.14:8080 weight=4 max_fails=2 fail_timeout=30s;
    }

    server
    {
        listen       80;        #监听端口
        server_name  localhost;

    #默认请求设置
    location / {
        proxy_pass http://tomcat_pool;    #转向tomcat处理
    }

    #所有的jsp页面均由tomcat处理
    location ~ \.(jsp|jspx|dp)?$
    {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tomcat_pool;    #转向tomcat处理
    }

    #所有的静态文件直接读取不经过tomcat,nginx自己处理
    location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
    {
       expires  30d;
    }

    location ~ .*\.(js|css)?$
    {
       expires  1h;
    }

    #定义错误提示页面
    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

注:nginx-back 的配置同上。

四,Keepalived 实现及配置

1,实现VIP本地映射,即VIP配置在keepalived中。

2,检测nginx的状态,即如果主机宕机,会自动切换到备机。

#service keepalived stop :执行此命令,可以验证主备切换。

keepalived.conf配置如下:

global_defs {
    notification_email {
        365788843@qq.com
    }
    notification_email_from sns-[email protected]
    smtp_server 127.12.19.121
    smtp_connection_timeout 30
    router_id nginx_backup              # 设置nginx backup的id,在一个网络应该是唯一的
}
vrrp_script chk_http_port {
    script "/usr/local/src/check_nginx_pid.sh"
    interval 2                          #(检测脚本执行的间隔)
    weight 2
}
vrrp_instance VI_1 {
    state BACKUP                        # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface eth0                      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    virtual_router_id 66                # 虚拟路由编号,主从要一直
    priority 99                         # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port                   #(调用检测脚本)
    }
    virtual_ipaddress {
        127.12.89.23                   # 定义虚拟ip(VIP),可多设,每行一个
    }
}

注:nginx-backup的keepalived配置同上,不同点为 smtp_server为:127.12.19.131。

五,浮动IP

浮动IP相当于一个动态的IP,通过Keepalived分别绑定在不同的主备节点(nginx master,nginx backup),如果其中一台节点挂掉,浮动IP通过keepalived自动绑定到另外一个节点,而用户是没有感知的。

浮动IP可以是动态生成的,也可以是固定写死的。

六,nginx支持https

如上图的流程架构中体现了nginx支持https,但是在nginx.conf配置中还没有实现,这个后续另设章节专门讲解。

以上内容算是抛砖引玉,如有不妥,敬请指正。

原文地址:https://www.cnblogs.com/it-way/p/9248965.html

时间: 2024-10-11 21:10:49

nginx通过keepalived实现高可用的负载均衡的相关文章

LVS + Keepalived 实现高可用、负载均衡 Web 集群

简介: LVS 是 Linux Virtual Server 的简写,Linux 虚拟服务器的意思,是一个虚拟的服务器集群系统,此项目由章文嵩博士于 1998 年 5 月成立,是中国最早出现的自由软件项目之一. LVS 负载均衡集群系统的优点: 1.提高吞吐量 想获得更高的吞吐量,在 LVS 中只需增加 Real-server 即可,其开销只是线性增长.如选择更换一台更高性能的服务器来获得相当的吞吐量,开销要大很多. 2.冗余 如果 LVS 中某台 Real-server 由于需要升级或其它原因

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

Keepalived 的设计目标是搭建高可用的 LVS 负载均衡群集,可以调用 ipvsadm 工具来创建虚拟服务器.管理服务器池,而不仅仅用作双机热备.使用 Keepalived 搭建 LVS 群集更加简便易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性:对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入. 本次我们以 DR 模式的 LVS 群集为基础,增加一台从负载调度器,使用 Keepalived 来实现主.从调度器的热备,从而构建兼有负载均衡.高可用两

keepalived+LVS高可用的负载均衡

1.安装keepalived(在两台调度服务器上安装) vim /etc/yum.repo.d/rhel.repo [local-cdrom] name=local from cdrom baseurl=file:///mnt/ enable=1 gpgcheck=0 yum -y install kernel-devel openssl-devel popt-devel rpm -ivh /mnt/Packgets/ipvsadm-1.25-9.el6.i686.rpm tar zxvf ke

keepalived+nginx实现高可用and负载均衡集群

keepalived+nginx实现高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(work

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke

架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LVS + Keepalived搭建高可用的负载层系统.如果你还不了解Nginx和LVS的相关知识,请参见我之前的两篇文章<架构设计:负载均衡层设计方案(2)--Nginx安装>(http://blog.csdn.net/yinwenjie/article/details/46620711).<

nginx结合keepalived做高可用负载集群服务

一.概述 前面几篇介绍了nginx做web网站以及https网站,反向代理,LVS的NAT与DR调度负载,但由于nginx本身负载是七层,需要套接字,即使基于upstream模块模拟成四层代理也是瓶颈,因此本文介绍nginx基于keepalived做高可用负载均衡集群服务,目标就是两台keepalived对nginx反向代理负载服务做检查与调度,做成双主模式,nginx负载调度后端的httpd网站,任何一台调度器(nginx或keepalived服务)故障,不影响业务;后端任何一台web故障也不

高可用集群技术之keepalived实现lvs高可用并负载均衡web服务

Keepalived概述: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器. keepalived实现lvs高可用并负载均衡web服务: 准备工作: 2台keepalived节点为: node1.samlee.com

Haproxy+keepalived高可用、负载均衡安装部署方案

1     环境说明 前端两台haproxy+keepalived互为主从,提供高可用:另外基于不同域名访问不同的虚拟ip实现负载均衡 1.1     环境描述 服务器A(主.从):eth0:10.241.51.245   eth1:192.168.1.9 服务器B(从.主):eth2:10.241.51.246   eth1:192.168.1.10 服务器C(web01):eth0:10.241.51.247 服务器D(web02):eth0:10.241.51.248 VIP1:10.24