美文网首页工作生活
Nginx负载均衡Rabbitmq

Nginx负载均衡Rabbitmq

作者: 你值得拥有更好的12138 | 来源:发表于2019-06-29 17:59 被阅读0次

    以下均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网
    查看TroubleShot,本文最后

    为什么使用nginx

    因为虽然之前的文章进行rabbitmq的集群搭建,但是在使用过程中,还是要进行负载均衡。尽可能的让每一个节点收到请求,这个三个节点的集群才有意义。

    Niginx是什么?

    Nginx (engine x) 是一个高性能的HTTP和[反向代理]web服务器,同时也提供了IMAP/POP3/SMTP[服务]。国内貌似都只是用来做反向代理和负载均衡。

    Nginx安装

    前提是linux的gcc编译环境正常

    • 1.安装基础环境
      apt-get install build-essential
      apt-get install libtool
    cd /usr/local/src
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
    tar -zxvf pcre-8.41.tar.gz
    cd pcre-8.41
    ./configure
    make
    make insta
    

    如果你在自己的目录,然后把pcre-8.41下的文件拷贝/usr/local/src/,Nginx-1.17.1会去这里找pcre。

    cd /usr/local/src
    
    wget http://zlib.net/zlib-1.2.11.tar.gz
    tar -zxvf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    ./configure
    make
    make install
    
    apt-get install openssl
    apt-get install libssl-dev
    

    以上都是一些基础环境,本人不知道是干嘛的,就像你使用软件你不会想操作系统是怎么使用硬件的。这些有兴趣,有能力,有时间再去研究吧!

    • 2.下面开始安装Nginx了
    cd /usr/local/src
    wget http://nginx.org/download/nginx-1.17.1.tar.gz
    tar -zxvf nginx-1.17.1.tar.gz
    cd nginx-1.17.1
    #编译我们要使用的模块,重点是最后的Stream模块,否则无法使用Stream关键字
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/usr/local/src/pcre-8.41 --with-stream
    
    make
    make install
    
    

    安装成功后,先学习下目录和命令

    目录 作用
    /usr/local/nginx/conf Nginx启动配置文件nginx.conf在这里
    /usr/local/nginx/sbin 启动脚本Nginx在这里
    /usr/local/nginx/logs 日志
    /var/logs/nginx 日志,不清楚为啥两个地方日志
    命令 作用
    ./nginx -V 查看版本号及已编译模块
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 使用配置文件启动
    ./nginx -s reload 重新加配置
    kill -QUIT 2072 杀死进程,可以杀一个,两个nginx进程都退出
    • 3.添加如下配置在/usr/local/nginx/conf/nginx.conf
    stream {
       #打开nginx的转发日志,可以看到请求从哪里来,被转发到那台机器上
       log_format proxy '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time "$upstream_addr" '
                     '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
    
        access_log /var/log/nginx/tcp-access.log proxy ;
        open_log_file_cache off;
        include /etc/nginx/conf.d/*.stream;
    
       #指定需要负载均衡的服务器地址
       upstream rabbitmq {
           server 47.102.115.83:5672 weight=5 max_fails=1 fail_timeout=30s;
           server 47.102.115.83:5673 weight=5 max_fails=1 fail_timeout=30s;
           server 47.102.115.83:5674 weight=5 max_fails=1 fail_timeout=30s;
       }
    
       # 创建一个虚拟主机来监听端口
       server {
          listen 5675;
          proxy_connect_timeout 30s;
          proxy_timeout 30s;
          proxy_pass rabbitmq;
       }
    }
    

    上面配置就做了三件事
    1.创建一个虚拟主机监听端口
    2.指定需要负载均衡的上游服务器
    3.开启TCP日志,追踪请求转发
    4.保留原有的http模块,不要删除,用来验证nginx默认配置

    • 4.启动nginx
      验证默认的配置
      image.png
      验证转发Rabbitmq
      首先查看springboot连接日志
      image.png
      然后查看前面我们配置的tcp追踪日志
      image.png
      图中转发到了rabbitmq的5672,5673,5674三个节点的端口

    Trouble Shot

    一直连接不上rabbitmq,默认配置页面可以进入,查看日志
    recv() failed (104: Connection reset by peer) while reading response header from upstream

    缓存或者超时时间太小

    相关文章

      网友评论

        本文标题:Nginx负载均衡Rabbitmq

        本文链接:https://www.haomeiwen.com/subject/rnupcctx.html