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

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

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

  1. docker pull runnable/sticky-nginx

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

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

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

文件如下:

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

  1. FROM centos
  2. WORKDIR /usr/local/nginx
  3. COPY usr /usr
  4. CMD ["sh","startnginx"]

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

启动脚本的内容为:

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

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

  1. -g "daemon off;"
    官网的解释内容为:
  1. 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

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

  1. worker_processes auto;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. client_header_timeout 600;
  7. client_body_timeout 600;
  8. client_max_body_size 20m;
  9. proxy_send_timeout 600;
  10. proxy_read_timeout 600;
  11. proxy_http_version 1.1;
  12. proxy_set_header Host $http_host;
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  15. server_tokens off;
  16. include mime.types;
  17. default_type application/octet-stream;
  18. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  19. '$status $body_bytes_sent "$http_referer" '
  20. '"$http_user_agent" "$http_x_forwarded_for"'
  21. '$upstream_addr $upstream_response_time $request_time ';
  22.  
  23. sendfile on;
  24. keepalive_timeout 65;
  25. gzip on;
  26. gzip_min_length 1k;
  27. gzip_buffers 4 16k;
  28. gzip_comp_level 8;
  29. gzip_types text/plain application/javascript text/css application/json text/javascript image/svg+xml image/png;
  30. gzip_vary off;
  31.  
  32. upstream nginxserver{
  33. sticky;
  34. server 10.110.82.184:5200 weight=8 max_fails=1000 fail_timeout=10s;
  35. server 10.110.82.184:5201 weight=8 max_fails=1000 fail_timeout=10s;
  36. }
  37.  
  38. server {
  39. listen 8888;
  40. server_name stickynginx;
  41.  
  42. location / {
  43. proxy_pass http://nginxserver;
  44. proxy_http_version 1.1;
  45. proxy_set_header Host $http_host;
  46. proxy_set_header X-Real-IP $remote_addr;
  47. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  48. proxy_set_header X-Forwarded-Proto $scheme;
  49. #add_headerCache-Control no-store;
  50. }
  51.  
  52. #wf taskCount
  53. location ^~ /api/runtime/task/v1.0/tasks/count {
  54. proxy_pass http://gscloud/api/runtime/task/v1.0/tasks/count;
  55. proxy_http_version 1.1;
  56. proxy_read_timeout 3600s;
  57. proxy_set_header Host $http_host;
  58. proxy_set_header X-Real-IP $remote_addr;
  59. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  60. proxy_set_header X-Forwarded-Proto $scheme;
  61. proxy_set_header Upgrade $http_upgrade;
  62. proxy_set_header Connection "upgrade";
  63. }
  64. }
  65. }

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

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

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

enjoy it!

手工创建一个带sticky模块的nginx镜像 并且实现容器化负载均衡的方法的更多相关文章

  1. 「六」创建一个带 weblogic 服务的基础镜像

    Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...

  2. 如何创建一个带诊断工具的.NET镜像

    现阶段的问题 现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提供了非常方便的镜像容器化方案.所以现在大多数的dotnet ...

  3. 「五」创建一个带 tomcat 服务的基础镜像(修订版)

    Tomcat Tomcat 简单介绍 Tomcat server是一个免费的开放源码的Web 应用server,属于轻量级应用server.在中小型系统和并发訪问用户不是非常多的场合下被普遍使用,是开 ...

  4. 创建一个带模版的用户控件 V.3

    再重构此篇<创建一个带模版的用户控件  V.2>http://www.cnblogs.com/insus/p/4164149.html 让其它动态实现header,Item和Footer. ...

  5. 创建一个带模版的用户控件 V.2

    前面有做练习<创建一个带模版的用户控件>http://www.cnblogs.com/insus/p/4161544.html .过于简化.通常使用数据控件Repeater会有网页写好He ...

  6. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...

  7. 使用nginx的ngx_upstream_jdomain模块实现k8s容器的负载均衡

    使用背景最近一直在准备k8s上线事宜,目前已经在测试环境中全面部署并通过压力测试环境检验.离正式上线基本只剩下时间问题.我们目前测试环境中的容器负载均衡大量使用到了nginx,就是借助了ngx_ups ...

  8. 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

    题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...

  9. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡

    . 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...

  10. nginx作反向代理,实现负载均衡

    nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...

随机推荐

  1. 解读 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁移

    摘要:本期将详细介绍 SSDB.LevelDB 和 RocksDB 到 GaussDB(for Redis)的迁移. 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis) ...

  2. 4种Springboot RestTemplate 服务里发送HTTP请求用法

    摘要: RestTemplate与REST资源交互的方法涵盖了HTTP请求方法,包括get, post, put, delete. 本文分享自华为云社区<Springboot RestTempl ...

  3. 火山引擎ByteHouse:云原生数据库如何提升MySQL兼容性?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当前各类软件层出不穷,单独某一款软件往往难以满足企业应用需求,一般都需要与各类软件组合使用,这时软件生态兼容性就显 ...

  4. JQuery 修改用户信息

    JQuery 修改用户信息,多项选择,赋值,框架: https://www.h-ui.net/v3.shtml $(data.data.roleList).each(function (i, val) ...

  5. BBS项目(五):xss攻击 上传图片问题 文章编辑、删除功能 用户头像修改 扩展部分

    目录 添加文章功能完善 富文本编辑器上传图片问题 文章编辑功能 文章删除功能 用户头像修改 扩展部分 补充 项目总结 添加文章功能完善 下载第三方模块: pip install bs4 pip ins ...

  6. CentOS7系统上安装升级Vim8

    基本步骤 1.卸载旧版vim yum remove vim* -y 2. 到Vim官方Github仓库下载目前最新的Vim Release版本 git clone https://github.com ...

  7. 【每日一题】23.Removal (计数DP)

    补题链接:Here 计数DP讲解:Here 这是一个计数类的dp dp[i][j]表示前i个数字中,删除j个元素的方案数 很容易得到转移方程:\(f[i][j] = f[i - 1][j - 1] + ...

  8. 悟空活动中台 - 基于 WebP 的图片高性能加载方案

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/rSpWorfNTajtqq_pd7H-nw作者:悟空中台研发团队 一.背景 移动端网页的加载 ...

  9. Intellij IDEA安装与配置教程(Windows版)

    Intellij IDEA(简称IDEA)是Java语言的集成开发环境,在业界公认为是一款优秀的Java开发工具.分为Community社区版(免费)和Untimate终极版(付费). IDEA是一款 ...

  10. js滑动验证

    https://gitee.com/anji-plus/captcha AjCaptcha验证码: https://blog.csdn.net/zbchina2004/article/details/ ...