1. 实现Nginx负载均衡的组件说明

实现Nginx负载均衡的组件主要由两个,见下表。

Nginx http功能模块 模块说明
ngx_http_proxy_module proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池。
ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查。

官方介绍连接:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

2. 硬件准备

准备4台VM虚拟机(有物理服务器更佳),两台做负载均衡,两台做RS,如下表。

HOSTNAME IP 说明
lb01 10.0.0.7 Nginx主负载均衡器
lb02 10.0.0.8 Nginx辅负载均衡器
web01 10.0.0.9 web01服务器
web02 10.0.0.10 web02服务器

3. 软件准备

系统:centos6.8 x86_64
软件:nginx-1.6.3.tar.gz(http://nginx.org/download/nginx-1.6.3.tar.gz )

4. 安装Nginx软件

下面将在以上4台服务器上安装Nginx。完整的安装过程见上面的说明,这里只写出安装的命令部分。

  1. 安装依赖软件包命令集合。

yum install openssl-devel pcre-devel -y

  1. 安装Nginx软件包的命令集合

wget http://nginx.org/download/nginx-1.6.3.tar.gz
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure —prefix=/app/nginx-1.6.3 —user=nginx —group=nginx —with-http_ssl_module —with-http_stub_status_module —with-pcre
make && make install
ln -s /app/nginx-1.6.3/ /app/nginx

5. 实战配置Nginx upstream

lb01和lb02的nginx配置文件如下:
worker_processes 1;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream server_pools { #配置一个upstream标签,名称为server_pools
server 172.16.1.7:80 weight=1; #后端两台web服务器的ip地址和端口,weight=1表示权重都是1
server 172.16.1.8:80 weight=1;
}
server {
listen 80;
server_name www.etiantian.org;
location / {
proxy_pass http://server_pools; #访问www.etiantian.org 就抛给上面的upstream server_pools
proxy_set_header Host $host; #把客户端的请求头也一起抛过去
proxy_set_header X-Forwarded-For $remote_addr; #把客户端的IP地址也抛过去,web服务器端记录客户端真实IP地址
}
}

server {
listen 80;
server_name blog.etiantian.org;
location / {
proxy_pass http://server_pools;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}

通过上面的配置,我们就实现了负载均衡了。