• 手工创建一个带sticky模块的nginx镜像 并且实现容器化负载均衡的方法


    最近想进行容器化运行的nginx反向代理负载均衡服务. 找了一下 dockerhub上面的 nginx 发现里面不包含 sticky模块. 会报错为:

    nginx: [emerg] unknown directive "sticky" in /etc/nginx/nginx.conf:39

    没办法 想了下docker search stricky 发现还是有一个容器的 然后 docker pull 下来. 

    docker pull runnable/sticky-nginx

    但是发现不太好用, 没办法改用自己之前编译好的二进制进行处理. 

    编译nginx的过程 就暂时按下不表, 注意就是 configure 时候需要添加 module 避免无法支持sticky

    注意一下我之前是放到了 /nginx 目录下面, 为了简单和防止 日志文件提示异常. 

    文件如下:

     需要注意的一点是 dockerfile 里面的内容

    FROM centos
    WORKDIR /usr/local/nginx
    COPY usr /usr
    CMD ["sh","startnginx"]

    注意 我在当前目录的 usr/local/nginx/ 目录下面添加了一个 startnginx的启动脚本

    启动脚本的内容为:

    /usr/local/nginx/nginx  -g "daemon off;"

    注意 容器化运行 nginx的时候必须增加 

     -g "daemon off;"
    官网的解释内容为:
    If you add a custom CMD in the Dockerfile, be sure to include -g daemon off; in the CMD in order for nginx to stay in the foreground, so that Docker can track the process properly (otherwise your container will stop immediately after starting)!

    这里面 我比较省事 直接使用了 一个 usr/local/nginx/nginx.conf

    这里面一个比较简单的方向代理的模板为:

    worker_processes  auto;
    events {
        worker_connections  1024;
    }
    http {
        client_header_timeout 600;
        client_body_timeout 600;
        client_max_body_size 20m;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
        server_tokens off; 
        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"'
                          '$upstream_addr $upstream_response_time $request_time ';
        
        sendfile        on;
        keepalive_timeout  65;
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 8;
        gzip_types text/plain application/javascript text/css application/json text/javascript image/svg+xml image/png;
        gzip_vary off;
    
        upstream nginxserver{
            sticky;
            server 10.110.82.184:5200 weight=8 max_fails=1000 fail_timeout=10s;
            server 10.110.82.184:5201 weight=8 max_fails=1000 fail_timeout=10s;
             } 
          
        server {
            listen 8888;
            server_name stickynginx;
    
            location / {
                proxy_pass  http://nginxserver;
                proxy_http_version 1.1;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;  
               #add_headerCache-Control no-store;            
            }
            
            #wf taskCount
            location ^~ /api/runtime/task/v1.0/tasks/count {
                proxy_pass  http://gscloud/api/runtime/task/v1.0/tasks/count;
                proxy_http_version 1.1;
                proxy_read_timeout 3600s;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
            }        
        }
    }

    然后执行 docker build 以及 docker run 命令就可以 使用了

    docker build . -t nginxsticky
    docker run -d --net=host --name=nginx --restart=always nginxsticky

    手工创建的nginx 比 docker hub 上面的大 但是比 search 出来的带sticky的要小很多

    enjoy it!

  • 相关阅读:
    Tinkoff Challenge
    Tinkoff Challenge
    Tinkoff Challenge
    Tinkoff Challenge
    整体二分
    树链剖分+LCT
    上下界网络流
    莫队
    可并堆
    bzoj_1033: [ZJOI2008]杀蚂蚁antbuster
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/14256445.html
Copyright © 2020-2023  润新知