手工创建一个带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!
手工创建一个带sticky模块的nginx镜像 并且实现容器化负载均衡的方法的更多相关文章
- 「六」创建一个带 weblogic 服务的基础镜像
Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...
- 如何创建一个带诊断工具的.NET镜像
现阶段的问题 现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提供了非常方便的镜像容器化方案.所以现在大多数的dotnet ...
- 「五」创建一个带 tomcat 服务的基础镜像(修订版)
Tomcat Tomcat 简单介绍 Tomcat server是一个免费的开放源码的Web 应用server,属于轻量级应用server.在中小型系统和并发訪问用户不是非常多的场合下被普遍使用,是开 ...
- 创建一个带模版的用户控件 V.3
再重构此篇<创建一个带模版的用户控件 V.2>http://www.cnblogs.com/insus/p/4164149.html 让其它动态实现header,Item和Footer. ...
- 创建一个带模版的用户控件 V.2
前面有做练习<创建一个带模版的用户控件>http://www.cnblogs.com/insus/p/4161544.html .过于简化.通常使用数据控件Repeater会有网页写好He ...
- 在VS中手工创建一个最简单的WPF程序
如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...
- 使用nginx的ngx_upstream_jdomain模块实现k8s容器的负载均衡
使用背景最近一直在准备k8s上线事宜,目前已经在测试环境中全面部署并通过压力测试环境检验.离正式上线基本只剩下时间问题.我们目前测试环境中的容器负载均衡大量使用到了nginx,就是借助了ngx_ups ...
- 创建一个接口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类另 ...
- 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡
. 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...
- nginx作反向代理,实现负载均衡
nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...
随机推荐
- 云原生时代,政企混合云场景IT监控和诊断的难点和应对之道
摘要:正是因为政企IT架构云化的云原生架构,相比之前的单体烟囱式架构,在监控诊断方面有着更多的难点和挑战,这也在业界催生出大量相关的标准和工具. 本文分享自华为云社区<[华为云Stack][大架 ...
- 2023年iOS App Store上架流程详解(上)
很多开发者在开发完iOS APP.进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store ...
- PPT MBE风格的插画
两种或多种不同的图形,通过合并形状等一些操作叫布尔运算 渐变模式 线性渐变:几个不同的颜色[垂直] 射线渐变:圆形弧度的渐变 矩形渐变:矩形 路径渐变:中心形状和外面形状保持一致 渐变方向 射线渐变方 ...
- C# CRC8
C# CRC8 C# /// /// This enum is used to indicate what kind of checksum you will be calculating. /// ...
- IDC《中国边缘云市场解读 (2022)》:阿里云蝉联中国公有云市场第一
国际权威咨询公司IDC发布<中国边缘云市场解读(2022 )>报告,中国边缘公有云服务市场,阿里云蝉联第一. 市场蝉联第一,"边缘"生长强劲 近期,全球领先的IT市场研 ...
- 国内加速访问Github的办法
说明 自从GitHub私有库免费后,又涌入了一大批开发爱好者. 但国内访问GitHub的速度实在是慢得一匹,在clone仓库时甚至只有10k以下的速度,大大影响了程序员的交友效率. 国内加速访问Git ...
- Codeforces Round #722 (Div. 2) A~D题解
补题链接:Here 1529A. Eshag Loves Big Arrays [题意描述] 给定一个长度为 \(n\) 的正整数数组 \(a\) ,现在可执行若干次操作(可为 \(0\)) 具体操作 ...
- Redis 内存优化在 vivo 的探索与实践
作者:vivo 互联网服务器团队- Tang Wenjian 一. 背景 使用过 Redis 的同学应该都知道,它基于键值对(key-value)的内存数据库,所有数据存放在内存中,内存在 Redis ...
- VUE里使用iframe在更改了src之后对应的网页并未刷新解决方案
在vue 里使用iframe,在更新src后页面并未刷新, 在更改iframe src属性值之前加上这一句即可 document.getElementById(iframe的id).contentWi ...
- Dubbo入门1:Spirngboot+Dubbo2.6.0整合
整合springboot+dubbo2.6.0 demo 本文简要说明了springboot和dubbo整合的配置文件的写法 目录结构 整体目录 如下图所示:整体项目是一个父子工程,common作为一 ...