当前位置:首页 > 技术文章 > 正文内容

网站抗住大流量的终极架构:lvs+keepalived+nginx环境搭建

arlanguage3个月前 (01-31)技术文章31

前面我们学会了nginx环境搭建,keeplived+nginx环境搭建,lvs+nginx环境搭建,这里进行终极搭建lvs+keepalived+nginx

背景

开始我们网站小,可能一个tomcat服务器就可以了

后面随着访问数上升,一个tomcat不行了,那么就用Nginx做个负载均衡

后面随着用户访问上升,一个Nginx也不行了,有单点故障

后面随着用户访问上升,需要对Nginx进行横向扩容,加入第四层的负载均衡解决方案LVS

用户继续上升,LVS又会达到瓶颈,需要用DNS轮询.这里可以根据机房,地域轮询等,已经是做到极致了。所以终极环境就是lvs+keepalived+nginx。lvs最终是多个主备

准备

各种虚拟机准备克隆等
nginx-1.22.1在linux服务器上的安装和使用
keepalived+nginx实现高可用实战(双机主备,双主热备)
LVS+Nginx环境搭建(DR模式)

上面几篇文摘来自于我的个人博客:https://www.suibibk.com


只需要对keepalived的配置文件进行修改即可,毕竟keepalived和lvs完美兼容

主lvs

! Configuration File for keepalived

global_defs {
   router_id LVS_15
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 17
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.192.17
    }
}

#配置集群地址访问的IP+端口,端口和nginx保持一致,这个就是对应的LVS(DR)
virtual_server 192.168.192.17 80 {
    #健康检查的时间,单位:秒
    delay_loop 6
    #配置负载均衡的算法:rr(轮询)
    lb_algo rr
    #设置lvs的模式:NAT/TUN/DR 我们用的是DR
    lb_kind DR
    #设置会话持久化时间
    persistence_timeout 5
    #协议,其实就是-t
    protocol TCP
    #负载均衡的真实服务器 这个就是对应两台Ngixn(RS)
    real_server 192.168.192.11 80 {
        #轮询默认权重为1
        weight 1
    #设置健康检查
               TCP_CHECK {
            #检查的80端口
            connect_port 80
            #超时时间:秒
                        connect_timeout 2
            #重试次数
                        nb_get_retry 2
            #间隔时间:秒
                        delay_before_retry 3
        }
    }
    real_server 192.168.192.12 80 {
        weight 1
        #设置健康检查
               TCP_CHECK {
            #检查的80端口
            connect_port 80
            #超时时间:秒
                        connect_timeout 2
            #重试次数
                        nb_get_retry 2
            #间隔时间:秒
                        delay_before_retry 3
        }   
    }
}

备lvs

! Configuration File for keepalived

global_defs {
   router_id LVS_16
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 17
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.192.17
    }
}

#配置集群地址访问的IP+端口,端口和nginx保持一致,这个就是对应的LVS(DR)
virtual_server 192.168.192.17 80 {
    #健康检查的时间,单位:秒
    delay_loop 6
    #配置负载均衡的算法:rr(轮询)
    lb_algo rr
    #设置lvs的模式:NAT/TUN/DR 我们用的是DR
    lb_kind DR
    #设置会话持久化时间
    persistence_timeout 5
    #协议,其实就是-t
    protocol TCP
    #负载均衡的真实服务器 这个就是对应两台Ngixn(RS)
    real_server 192.168.192.11 80 {
        #轮询默认权重为1
        weight 1
    #设置健康检查
               TCP_CHECK {
            #检查的80端口
            connect_port 80
            #超时时间:秒
                        connect_timeout 2
            #重试次数
                        nb_get_retry 2
            #间隔时间:秒
                        delay_before_retry 3
        }
    }
    real_server 192.168.192.12 80 {
        weight 1
        #设置健康检查
               TCP_CHECK {
            #检查的80端口
            connect_port 80
            #超时时间:秒
                        connect_timeout 2
            #重试次数
                        nb_get_retry 2
            #间隔时间:秒
                        delay_before_retry 3
        }   
    }
}

重启测试

先把之前lvs+nginx的配置清除

ipvsadm -C

启动keepalived

systemctl start keepalived

查看效果

[root@localhost etc]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.192.17:80 rr persistent 5
  -> 192.168.192.11:80            Route   1      0          0         
  -> 192.168.192.12:80            Route   1      0          0

完美。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1803.html

标签: nginx博客
分享给朋友:

“网站抗住大流量的终极架构:lvs+keepalived+nginx环境搭建” 的相关文章

只想简单操作 Kubernetes 资源?用 Go 一招搞定,快试试 kom!

当你在使用代码操作k8s时,有没有觉得总要写很多代码,才能获取到一个资源,并且要处理底层的集群连接、client等一系列的东西。那么有没有一种简单的办法,毕竟我只是想读取一下集群内的Pod或者什么其他资源而已啊。为了解决这个问题,我们使用 kom https://github.com/weibaoh...

使用Keepalived实现Nginx的自动重启及双主热备高可用

推荐阅读:20年清华架构师耗时整整一百天打造1000+道Java高频面试手册1、概述之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下。1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服务,但Nginx服务如果负载...

Nginx的location里面的root、alias的使用技巧与区别

1. 介绍1.1 介绍福哥在将TFLinux的PHP+Apache的组合转换成PHP+FPM+Nginx的过程里遇到了一个问题,就是Apache的虚拟主机转为Nginx里面的虚拟主机的时候参数怎么解决呢?今天福哥就将Nginx配置文件里面的location、root、alias的使用技巧给大家做一个...

网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击

一、简介对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。nginx两个限流模块:连接频率限制,ngx_http_lim...

一般人绝对无法发现的nginx锅

nginx热启动:nginx -s reloadPS:要在/etc/profile环境变量PATH里配置nginx的路径。配置完执行 source /etc/profile 让变量生效。 一次部署,同样的前端代码,放到了nginx里面运行,但是有一个模块全部页面都报这个错误,其他模块正常展示。以前遇...

为什么服务器管理用户都使用宝塔面板?

宝塔面板宝塔面板到底是个什么鬼?为什么这么多站长使用宝塔面板?宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。有30个人的专业团队研发及维护,经过200多个版本的迭代,功能全,少出错且足够安全,已获得...