Nginx搭建负载环境

Nginx搭建负载环境

 

         Nginx的负载均衡支持4种算法,round-robinleast-connectedip-hash、和weightd

 

round-robin

         round-robin的意思是循环轮询。Nginx最简单的负载均衡配置如下:

http {

    upstream app1 {

        server 10.10.10.1;

        server 10.10.10.2;

    }

 

    server {

        listen 80;

 

        location / {

            proxy_pass http://app1;

        }

    }

}

 

         upstream app1用来指定一个服务器组,该组的名字是app1,包含两台服务器。在指定服务器组里面包含的服务器时以形式“server ip/domainport”的形式指定,其中80端口可以忽略。然后在接收到请求时通过“proxy_pass http://app1”把对应的请求转发到组app1上。Nginx默认的负载均衡算法就是循环轮询,如上配置我们采用的就是循环轮询,其会把接收到的请求循环的分发给其包含的(当前可用的)服务器。使用如上配置时,Nginx会把第1个请求给10.10.10.1,把第2个请求给10.10.10.2,第3个请求给10.10.10.1,以此类推。

 

least-connected

         least-connected算法的中文翻译是最少连接,即每次都找连接数最少的服务器来转发请求。例如Nginx负载中有两台服务器,AB,当Nginx接收到一个请求时,A正在处理的请求数是10B正在处理的请求数是20,则Nginx会把当前请求交给A来处理。要启用最少连接负载算法只需要在定义服务器组时加上“least_conn”,如:

    upstream app1 {

                   least_conn;

        server 10.10.10.1;

        server 10.10.10.2;

    }

 

ip-hash

         ip-hash算法会根据请求的客户端IP地址来决定当前请求应该交给谁。使用ip-hash算法时Nginx会确保来自同一客户端的请求都分发到同一服务器。要使用ip-hash算法时只需要在定义服务器组时加上“ip-hash   ”指令,如:

    upstream app1 {

                   ip_hash;

        server 10.10.10.1;

        server 10.10.10.2;

    }

 

weighted

         weighted算法也就是权重算法,会根据每个服务的权重来分发请求,权重大的请求相对会多分发一点,权重小的会少分发一点。这通常应用于多个服务器的性能不一致时。需要使用权重算法时只需要在定义服务器组时在服务器后面指定参数weight,如:

    upstream app1 {

        server 10.10.10.1 weight=3;

        server 10.10.10.2;

    }

 

         在如上配置时,Nginx接收到的请求中大概每4个请求中会有3个请求交给10.10.10.1服务器处理,有1个请求交给10.10.10.2处理。

 

         除了这些指令外,Nginx负载还可以指定其它一些指令,比如backupdown等,详情可参考http://nginx.org/en/docs/http/ngx_http_upstream_module.html

         Nginx可指定的指令可参考http://nginx.org/en/docs/http/ngx_http_proxy_module.html

 

参考资料

http://nginx.org/en/docs/http/load_balancing.html

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

http://nginx.org/en/docs/http/ngx_http_proxy_module.html

 

 

 

### 配置 Nginx 作为负载均衡服务器 #### 安装 Nginx 和 Tomcat 为了在 CentOS 上使用 Nginx 和 Tomcat 搭建负载均衡服务器,首先需要安装必要的软件包。可以通过以下命令完成 Nginx 的安装: ```bash sudo yum install epel-release -y sudo yum install nginx -y sudo systemctl start nginx sudo systemctl enable nginx ``` 对于 Tomcat 的安装,则需根据官方文档或社区指南进行操作。 #### 启动并启用 Nginx 确保 Nginx 已经正确启动并且设置为开机自启[^3]。 #### 配置 Nginx 负载均衡 编辑 Nginx 的配置文件 `/etc/nginx/nginx.conf` 或者创建一个新的站点配置文件,在 `http` 块内定义上游服务器组(upstream block),用于指定多个后端应用服务器(如运行 Spring Boot 应用程序的 Tomcat 实例)。下面是一个简单的例子展示如何配置基于轮询策略的负载均衡器: ```nginx upstream backend_servers { server tomcat_server_1_ip; server tomcat_server_2_ip; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 这段配置指定了两个名为 `tomcat_server_1_ip` 和 `tomcat_server_2_ip` 的后端服务器,并通过 HTTP 协议转发来自客户端的所有请求给这些服务器之一处理。同时设置了几个头部字段以便于后端应用程序能够获取原始访问者的 IP 地址和其他有用的信息[^4]。 #### 测试与验证 保存更改后的配置文件之后重启 Nginx 来使新的设定生效: ```bash sudo systemctl restart nginx ``` 此时应该可以测试负载均衡的效果了——当向该域名发送请求时,它们会被分发至不同的后端节点上执行。 #### 进一步优化 考虑到安全性等因素,还可以考虑开启 SSL 支持以加密传输数据;调整调度算法提高性能表现等更多高级特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值