下面是使用nginx进行负载均衡的搭建全过程的完整攻略:
- 安装Nginx
首先需要在服务器上安装Nginx。如果已经安装了Nginx,可以跳过此步骤。在Ubuntu系统上,可以使用以下命令进行安装:
sudo apt-get install nginx
- 配置upstream
使用Nginx进行负载均衡的第一步是定义upstream。upstream是Nginx用于管理负载均衡的模块,它允许Nginx将传入的请求分发到多个后端服务器中。
在Nginx的配置文件 /etc/nginx/nginx.conf
中添加以下内容:
upstream app_servers {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
此处定义了一个名为 app_servers
的upstream,其中包含两个服务器地址:127.0.0.1:8000和127.0.0.1:8001。这意味着Nginx将会将传入的请求分发到这两个服务器地址上。
- 添加负载均衡配置
Nginx的默认配置文件 /etc/nginx/nginx.conf
中已经包含了一个默认的虚拟主机配置。我们可以在该配置文件的 server
块中添加负载均衡的配置。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
这里的配置中,我们将在 example.com
域名下监听80端口的所有请求,并将这些请求转发到之前定义的 app_servers
upstream 中。同时也会将前端请求的header信息传递给后端,比如用户请求的Host和Real-IP等信息。
- 重启Nginx
修改完配置文件后,需要重启Nginx使其生效。
sudo service nginx restart
- 验证负载均衡
当Nginx成功启动并运行后,我们可以通过curl命令验证负载均衡是否生效。比如:
curl -I http://example.com
该请求将会向example.com域名发送一个HEAD请求,并返回响应头信息。如果负载均衡配置正确,每一次请求应该都会被分发到不同的后端服务器上。
示例:
假设对应的后端应用有两个副本,并监听在 127.0.0.1:8000 和 127.0.0.1:8001 这两个端口上。
这时在 Nginx 的配置文件 /etc/nginx/nginx.conf
中添加以下内容:
upstream app_servers {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
添加完配置后,重启 Nginx:
sudo service nginx restart
现在使用 curl 命令请求 example.com,可以看到返回的响应头信息中,后端服务器地址在两个地址上交替出现,即负载均衡生效。
另外,可以通过 top
命令来查看这两个后端应用实例在接收请求的情况,可以发现两个实例的 CPU 利用率大致相等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用nginx进行负载均衡的搭建全过程 - Python技术站