Nginx搭建负载均衡详细操作

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: Nginx搭建负载均衡详细操作

什么是负载均衡?


互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户的流量分发到不同的服务器上面呢?


那么通过使用nginx搭建的负载均衡器即可解决该问题


客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。

搭建步骤以及准备条件:

  1. 搭建三台Linux服务器
  2. 一台安装Nginx,另外两台各安装Tomcat
  3. 对Nginx的/etc/nginx/conf.d/default.conf进行配置
  4. 测试负载均衡


这里我用的是使用Vmware创建三台Linux服务器,其中一台安装Nginx,为其使用dhclient分配ip为:192.168.248.128

另外两台安装jdk+Tomcat.,分别为其分配IP为:192.168.129和129.168.248.130.


结果如下图所示:

详细操作:

1.克隆三台Linux服务器

1.1 以上图为例 dhclient 分配 ip地址

安装tomcat的两台服务器ip分别为192.168.30.128、192.168.30.130

安装的nginx的服务器ip为192.168.30.131


2.安装JDK和Tomcat

在192.168.30.128、192.168.30.130上先安装JDK,在安装tomcat

安装tomcat需要依赖JDK

安装步骤参考之前的文章


3.安装Nginx

在192.168.30.131安装Nginx

4.配置负载均衡

在192.168.30.131安装Nginx的服务器上, 打开/etc/nginx/conf.d/default.conf文件

#新增
upstream aa{
    server 192.168.30.128:8080;
    server 192.168.30.130:8080;
}
server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        #新增一行
        proxy_pass  http://aa;
    }
}

5.关闭Nginx上的安全组

使用 vi /etc/selinux/config

编辑config文件,修改SELNUX=disabled

如图所示:

注意:修改过安全组要把系统重启reboot下生效!

重启之后如果不能访问就要禁用掉防火墙:systemctl stop firewalld

并且开启Nginx:stystemctl start nginx


6.测试

通过 http://192.168.30.131:80 访问Nginx,即可看到实际访问了tomcat


负载均衡的策略

  1. 轮询 (默认)
    特点:一个一个挨着访问,tomcat服务器会被依次访问
  2. 权重
    weight=数字越大权重越大,被访问的几率越高
    下边的配置上边的机器访问2次,下边的访问1次

3.ip黏着

根据用户的ip,绑定到一台tomcat服务器

根据客户端用户的ip地址计算出一个可以被访问的tomcat服务器

如果客户端用户的ip地址不变,那么访问的tomcat就固定了

原理:把用户的ip进行hash处理(取用户ip的hash值),对tomcat总数量取模,然后根据得到的值,对应找到要访问的Tomcat

反向代理和正向代理的区别

代理如果在服务器端就是反向代理,如果放在客户端就是正向代理

反向代理 和 负载均衡 的关系?

什么是负载均衡? 搭建多个tomcat服务器,在用户访问量大的时候,可以访问不同的tomcat,减少某个tomcat的访问压力

在nginx中如果想实现负载均衡,需要借助反向代理机制


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
148 59
|
24天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
79 9
|
2月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
117 5
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
64 3
|
2月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
97 3
|
3月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
3月前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
334 7
|
3月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
3月前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
171 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇