1.配置负载均衡
实现nginx四层负载均衡需要安装--with-stream
安装--with-http_realip_module这个模块让后端的web服务器知道前面的代理的ip地址,获得真正的客户端的ip地址
让nginx负载均衡器在转发http请求报文的时候,在请求报文的头部信息里增加一个字段X-Real-IP ,这样后端的real server在解封装http请求报文的时候,就知道前面的客户机的ip地址了
proxy_set_header X-Real-IP $remote_addr; #定义一个变量X-Real-IP $remote_addr
1.1 配置日志文件的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
1.2 定义一个负载均衡器
upstream gala_app {
server 192.168.249.154 weight=2;
server 192.168.249.160 max_fails=2 fail_timeout=3;
#health_check interval=10 fails=3 passes=2; # 健康检查
}
1.3 指定代理负载均衡器
location / {
#将用户的访问流量转发到后端的服务器,理解调用负载均衡器gala_app
proxy_pass http://gala_app;
proxy_set_header X-Real-IP $remote_addr;
}
1.4 整体配置位置
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream gala_app {
server 192.168.249.154 weight=2;
server 192.168.249.160 max_fails=2 fail_timeout=3;
#health_check interval=10 fails=3 passes=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#将用户的访问流量转发到后端的服务器,理解调用负载均衡器gala_app
proxy_pass http://gala_app;
proxy_set_header X-Real-IP $remote_addr;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
2.验证负载均衡是否实现
除了实现负载均衡外,还可以通过用keepalived实现双vip漂移的高可用。