nginx修改upstream不重启的方法(ngx_http_dyups_module模块)

为什么80%的码农都做不了架构师?>>>   hot3.png

nginx很强大,第三方模块也不少,淘宝在nginx上很活跃,特别是章亦春,他参与的模块至少10+, 好了今天主角不是他,是一款动态配置upstream的模块,这个模块使用rest接口. 简单,方便,并且可以不需要重启nginx。但是有个问题比较明显,nginx重启之后,什么都没了. 1. 安装 首先安装nginx动态upstream配置模块,如果你已经安装了nginx,那么轻参考ttlsa上的如何安装nginx第三方模块,会安装的请跳过.
# cd /usr/local/src/
# wget https://github.com/yzprofile/ngx_http_dyups_module/archive/master.zip \
-O  ngx_http_dyups_module-master.zip
# unzip ngx_http_dyups_module-master.zip
# wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
# ./configure --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module 
\--add-module=../ngx_http_dyups_module-master/
# make
# make install
2. 指令(Directives) 语法: dyups_interface 默认: none 配置段: location 启用配置upstream的接口 语法: dyups_read_msg_timeout time 默认: 1s 配置段: main 设置从共享内存中读取commands的超时时间,默认为1秒 语法: dyups_shm_zone_size size 默认: 2MB 配置段: main 设置存储commands的共享内存 This directive set the size of share memory which used to store the commands. 语法: dyups_upstream_conf path 默认: none 配置段: main 这个指令用来指定upstream配置文件的路径,他会在启动的时候加载 语法: dyups_trylock on | off 默认: off 配置段: main 是否启用锁,如果启用了它,同一时刻有人在修改,那么将会返回409. 3. restful接口 GET /detail 获取所有upstream名称以及upstream里面的servers信息 /list 获取upstream列表 /upstream/name 使用upstream名称获取upstream信息 POST /upstream/name 更新upstream body 配置内容; body server ip:port; DELETE /upstream/name 删除upstream,name相应修改 3.1 调用接口响应http状态码 500: 需要reload nginx 409: 重新调用一次接口,上个请求被锁了. 204:调用list或者detail时出现,表示没有响应内容 其他:你的命令错误,请修改 注意:你需要第三方模块来生成新的配置文件到nginx配置目录. 作者也没有说什么第三方模块,这个插件很好,不能生成配置文件,让他显得尤为不足. 4. nginx配置 备注:以下配置有安装echo模块.
http {# 从upstream读取初始upstream配置dyups_upstream_conf  conf/upstream.conf;include conf/upstream.conf;# 默认主机server {listen   80;location / {proxy_pass http://$host;}}# 动态配置upstream的接口站点server {listen 81;location / {dyups_interface; # 这个指令表示这边是接口站点}}# upstream后面的realserver,2台801,,82server {listen 801;location / {echo 801; }}server {listen 802;location / {echo 802;}}
}
upstream.conf配置
upstream ttlsa1 {server 127.0.0.1:801;
}upstream ttlsa12 {server 127.0.0.1:802;
}
5. 使用方法演示 5.1 添加upstream
# curl -d "server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa3
success
测试
# curl -H "host: ttlsa3" 127.0.0.1
801# curl -H "host: ttlsa3" 127.0.0.1
802
可以看到通过host的ttlsa3可以访问到upstream配置的两台服务器。如果你发现curl几次都是一样的,那么轻多试几次。 5.2 查看upstream详细信息
# curl 127.0.0.1:81/detail
ttlsa1
server 127.0.0.1:801ttlsa2
server 127.0.0.1:802ttlsa3
server 127.0.0.1:801
server 127.0.0.1:802
5.3 删除upstream
# curl -i -X DELETE 127.0.0.1:81/upstream/ttlsa1
success# curl 127.0.0.1:81/detail
ttlsa2
server 127.0.0.1:802ttlsa3
server 127.0.0.1:801
server 127.0.0.1:802
5.4 增加带ip_hash的upstream
# curl -d "ip_hash;server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa4
success# curl 127.0.0.1:81/upstream/ttlsa4
server 127.0.0.1:801
server 127.0.0.1:802
为什么没有带ip_hash的信息,本身就无法显示,那我们在看看weight会不会显示出来 5.5 增加带weight的upstream
# curl -d "server 127.0.0.1:801;server 127.0.0.1:802 weight=2;" 127.0.0.1:81/upstream/ttlsa5
success# curl 127.0.0.1:81/upstream/ttlsa5
server 127.0.0.1:801
server 127.0.0.1:801
还是不显示,虽然没显示,但是效果还是有的,大家自己去测试吧. 6. 注意事项 本模块不能和nginx_upstream_check_module一起使用,接下来的版本会支持。或者可以使用tenengine。淘宝真是不遗余力在推广他们的tenengine. 7. 结束语 ngx_http_dyups_module带的功能我很喜欢,但是最大的不足就是不能生成配置文件,所有内容都保存在内存中,希望以后的版本能够支持。有这个模块,shell脚本也可以修改upstream,不在需要重启nginx。 转载请注明来至运维生存时间:http://www.ttlsa.com/html/3268.html

转载于:https://my.oschina.net/766/blog/211332

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 设计原则需要学习吗_向最好的学习:产品设计原则

c# 设计原则需要学习吗重点 (Top highlight)In my job as Design Team Lead at SimpleSite, I’ve recently been part of creating a set of Product Design Principles. In this process, I spent a lot of time studying the theory, learning about best practices, and ge…

初学Java-接口

在Java语言中,接口有两种意思: 一是指概念性的接口,即指系统对外提供的所有服务。类的所有能被外部使用者访问的方法构成了类的接口 二是指用interface关键字定义的实实在在的接口,也称为接口类型。它用于明确的描述系统对外提供的…

Node.js 2021年开发者报告解读

大家好,我是若川。持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。很多人觉得Node.js…

搭建nginx反向代理用做内网域名转发

为什么80%的码农都做不了架构师?>>> 情景 由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的…

外国经典儿童读物合集pdf_帮助父母在线购买儿童读物–用户体验案例研究

外国经典儿童读物合集pdfTŤ As our first group project at GA, we needed to quickly learn how to use several online tools that helped our team of 4 collaborate and communicate while socially distant. Despite the rather extreme circumstances our team was stil…

Windows Azure Marketplace增加对六种语言和HTML5应用程序的支持

对于那些不熟悉Windows Azure Marketplace的人来说,它是一个供数据供应商和开发人员购买和销售数据集和应用程序的在线市场。 可以在世界上的26个国家使用Windows Azure Marketplace,它现在支持6种语言,包括日语、汉语、法语、德语、西班牙语…

如何优雅处理 async await 错误——解读小而美的 await-to-js 库

大家好,我是若川。持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。这是源码共读活动第…

同态加法_同态的Spotify

同态加法重点 (Top highlight)When neumorphism was predicted to be one of the top 2020 UI design trends, I wanted to give it a shot. Having said that, I wanted to explore a type that had not gone overboard, neumorphism in Dark Mode.当neumorphism预计为顶部202…

ubuntu清除无效的右键打开方式

为什么80%的码农都做不了架构师?>>> 今天安装了几个程序又将它们删除了之后发现了一个比较严重的后遗症,在相关文件右键打开方式中出现了许多实际已经不存在的文件打开程序名。想了多种方法去除,可是效果不佳,最终采用…

咖啡豆(JavaBean)•香

Sun公司对JavaBean的定义为:可以重复利用的软件组件,它在遵循JavaBean技术规范的基础上提供特定的功能,这些功能模块可以组成更大规模的应用系统。 到底什么是JavaBean? 先看一段代码: /** * author yong * */ public class Add { public st…

新一代的编译工具 SWC,97年小哥写的~

大家好,我是若川。持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。最近前端圈掀起了一…

开始学习jQuery和准备工作

<script>$(document).ready(function(){}); 首先&#xff0c;在页面顶部添加一行script元素&#xff0c;然后在下一行写上结束符。 浏览器会运行script里所有的Javascript&#xff0c;包括jQuery。 在你的script元素里&#xff0c;添加这段代码&#xff1a;$(document).r…

粉红噪音_粉红的常绿力量

粉红噪音I use Instagram. But I don’t use Instagram in the way that my daughters, who are 21 and 14, use Instagram. More to the point, Instagram doesn’t use me in quite the same way it uses my daughters.我使用Instagram。 但是&#xff0c;我不会像21岁和14岁…

Sql Server 中存储过程的output return的区别

看http://zxianf.blog.163.com/blog/static/301207012009114104124969/中片关于Sql Server中存储过程output和return值的区别 在里面有讲解&#xff0c;我在自己本机中测试的结果如下&#xff0c; 1&#xff1a;ReturnValue只能返回0,1,-1这样的数据&#xff0c;局限性很大 &am…

1个月增长15000 star,zx 库写shell脚本真不错~

大家好&#xff0c;我是若川。持续组织了5个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。今天来讨论一个牛逼…

灰色边框阴影_50种暗模式灰色阴影

灰色边框阴影If you’re an avid dark mode user like me, you’ll know that dark mode isn’t just about white text on black backgrounds. In a single app, a handful of shades of gray give the app some depth. And across various apps, the spectrum of gray become…

Android源代码下载

为什么80%的码农都做不了架构师&#xff1f;>>> Android代码使用git管理, 所以关于Android源码下载一般来说要安装git. 本文是讲述只使用Eclipse完成Android源码下载和关联. 下载Eclipse,目前最新版本是Juno,自带了EGit插件-->Eclipse Git插件 那么可以使用EGit…

关于nginx调转404错误页面

在server{}模块添加如下&#xff1a; error_page 404 /404.html; location /404.html { root /var/www/html/sina/; #“404目录地址” }转载于:https://www.cnblogs.com/alang85/archive/2012/03/01/404_error.html

尤雨溪:Vue 3 将成为新的默认版本

过完年&#xff0c;大年初七&#xff0c;Vue3 将成为默认版本&#xff0c;这时感觉我之前写的几篇文章都可以抽空更新一版了。尤雨溪推荐神器 ni &#xff0c;能替代 npm/yarn/pnpm &#xff1f;简单好用&#xff01;源码揭秘&#xff01;Vue 3.2 发布了&#xff0c;那尤雨溪是…

shell编程系列20--文本处理三剑客之awk常用选项

shell编程系列20--文本处理三剑客之awk常用选项awk选项总结选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号[rootlocalhost shell]# awk -v num2"$num1" -v var1"$var" BEGIN{print num2,var…