前置需求
1.安装mongodb
2.启动多个mongodb
3.安装nginx(需要安装stream模块,详见Nginx安装笔记)
nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡。
默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理。
Nginx配置文件nginx.conf
# 只记录没有注释的参数
user root; #运行用户
worker_processes auto; #启动进程,通常设置成和cpu的数量相等,建议auto(自动获取)
#全局错误日志及PID文件
error_log logs/error.log;
pid logs/nginx.pid;
#最大文件打开数,可设置为系统优化后的ulimit -HSn的结果
worker_rlimit_nofile 65535;
events {
use epoll; ## 使用epoll事件驱动模型,epoll多路复用IO,linux2.6以上内核开启,提高Nginx性能
worker_connections 51200; ## 一个worker能处理的最大并发,单个后台worker process进程的最大并发链接数
}
stream {
server {
listen 12345; #外部访问的映射端口
proxy_connect_timeout 5s; #proxy_connect_timeout是指tcp 握手的超时时间
proxy_timeout 3s; #指在这段时间内如果没有数据传输那就触法timeout,所以这里可以时间设长一点:10s
proxy_pass mongodb;
}
#这里按照备机的方式来配置
#默认始终连接11111,当11111宕机,开始连接备机11112,使用backup参数即可
upstream mongodb {
server 127.0.0.1:11111 max_fails=3 fail_timeout=5s weight=10;
server 127.0.0.1:11112 max_fails=3 fail_timeout=5s weight=10 backup;
}
#这里也可以这样配置,按照权重来配置,或者默认轮训的方式
#upstream mongodb {
# server 127.0.0.1:11111 max_fails=3 fail_timeout=5s weight=10; #最大失败次数为3,超时时间为5秒,权重10;
# server 127.0.0.1:11112 max_fails=3 fail_timeout=5s weight=9; #最大失败次数为3,超时时间为5秒,权重9;
# }
}
http {
#设定mime类型,类型由mime.type文件定义
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; #减少报文段数量并多字节组成数据包,提高IO性能
keepalive_timeout 10; ## #连接超时时间
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
}