前置需求

  1. 1.安装mongodb
  2. 2.启动多个mongodb
  3. 3.安装nginx(需要安装stream模块,详见Nginx安装笔记)
  4. nginx1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡。
  5. 默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理。

Nginx配置文件nginx.conf

  1. # 只记录没有注释的参数
  2. user root; #运行用户
  3. worker_processes auto; #启动进程,通常设置成和cpu的数量相等,建议auto(自动获取)
  4. #全局错误日志及PID文件
  5. error_log logs/error.log;
  6. pid logs/nginx.pid;
  7. #最大文件打开数,可设置为系统优化后的ulimit -HSn的结果
  8. worker_rlimit_nofile 65535;
  9. events {
  10. use epoll; ## 使用epoll事件驱动模型,epoll多路复用IO,linux2.6以上内核开启,提高Nginx性能
  11. worker_connections 51200; ## 一个worker能处理的最大并发,单个后台worker process进程的最大并发链接数
  12. }
  13. stream {
  14. server {
  15. listen 12345; #外部访问的映射端口
  16. proxy_connect_timeout 5s; #proxy_connect_timeout是指tcp 握手的超时时间
  17. proxy_timeout 3s; #指在这段时间内如果没有数据传输那就触法timeout,所以这里可以时间设长一点:10s
  18. proxy_pass mongodb;
  19. }
  20. #这里按照备机的方式来配置
  21. #默认始终连接11111,当11111宕机,开始连接备机11112,使用backup参数即可
  22. upstream mongodb {
  23. server 127.0.0.1:11111 max_fails=3 fail_timeout=5s weight=10;
  24. server 127.0.0.1:11112 max_fails=3 fail_timeout=5s weight=10 backup;
  25. }
  26. #这里也可以这样配置,按照权重来配置,或者默认轮训的方式
  27. #upstream mongodb {
  28. # server 127.0.0.1:11111 max_fails=3 fail_timeout=5s weight=10; #最大失败次数为3,超时时间为5秒,权重10;
  29. # server 127.0.0.1:11112 max_fails=3 fail_timeout=5s weight=9; #最大失败次数为3,超时时间为5秒,权重9;
  30. # }
  31. }
  32. http {
  33. #设定mime类型,类型由mime.type文件定义
  34. include mime.types; #文件扩展名与类型映射表
  35. default_type application/octet-stream; #默认文件类型
  36. #设定全局日志格式
  37. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  38. '$status $body_bytes_sent "$http_referer" '
  39. '"$http_user_agent" "$http_x_forwarded_for"';
  40. access_log logs/access.log main;
  41. sendfile on; #开启高效传输模式
  42. tcp_nopush on; #减少报文段数量并多字节组成数据包,提高IO性能
  43. keepalive_timeout 10; ## #连接超时时间
  44. #gzip on;
  45. server {
  46. listen 80;
  47. server_name localhost;
  48. #charset koi8-r;
  49. #access_log logs/host.access.log main;
  50. location / {
  51. root html;
  52. index index.html index.htm;
  53. }
  54. }
  55. }