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。完整的安装过程见上面的说明,这里只写出安装的命令部分。
- 安装依赖软件包命令集合。
yum install openssl-devel pcre-devel -y
- 安装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;
}
}
}
通过上面的配置,我们就实现了负载均衡了。