前置需求
1.安装mongodb2.启动多个mongodb3.安装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; } }}