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

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

nginx修改upstream不重启的方法(ngx_http_dyups_module模块)相关推荐

  1. 不重启修改linux时区,Linux修改时区不用重启的方法

    安装的虚拟机,没太注意时区,发现时区比中国上海的慢了16个小时,在网上查找了如下方法,分享给大家: --------------------------------- 时区的配置文件是/etc/sys ...

  2. ~/.vimrc 修改后不重启生效方法

    ~/.vimrc 修改完后直接在vim命令模式下 :source ~/.vimrc 在bash下执行"source ~/.vimrc"会报错因为vimrc是vim自己的脚本语言,b ...

  3. nginx重启命令方法(linux,centos,ubuntu)总结

    原文:http://www.111cn.net/sys/nginx/62915.htm 平滑重启 如果服务器正在运行的Nginx要进行升级.添加或删除模块时,我们需 要停掉服务器并做相应修改,这样服务 ...

  4. ubuntu 重启命令,ubuntu 重启网卡方法 修改DNS 不生效处理

     ubuntu 重启命令,ubuntu 重启网卡方法 ubuntu 重启命令 重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown  ...

  5. php修改后nginx返回不生效,nginx修改配置后不生效的问题

    nginx增加了新的server name配置,发现nginx -s reload之后总是不生效. http和https均可以打开页面,但是页面是别的server页面,使用的证书也是别的server的 ...

  6. nginx 启动命令_Windows环境下将Nginx安装到服务中的方法

    介绍 众所周知nginx是一个小巧且高性能的服务器软件.nginx是开源软件,它被个人和各大企业所使用.大多数情况下nginx是在linux环境下使用,在linux各种玩法已经遍地都是.但是在Wind ...

  7. 利用nginx+lua+redis实现反向代理方法教程

    这篇文章主要给大家介绍了利用nginx+lua+redis实现反向代理方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 最近因为工作需要,要进行IVR的 ...

  8. phpfpm怎么连接mysql_配置nginx、mysql、php-fpm的方法

    mac下使用homebrew安装安装.配置nginx.mysql.php-fpm的方法. 一.前话: 1.1.环境选择: 重新在mac上配置php,原本mac上就自带有apach.php以及pgsql ...

  9. Nginx 下配置SSL证书的方法

    1.Nginx 配置 ssl 模块  默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模 ...

最新文章

  1. java浏览器实验报告_关于java实验报告模板
  2. java cxf 搭soa,WebService CXF入门问题 SOA 骑着上帝去环游 - 贪吃蛇学院-专业IT技术平台...
  3. 2015年要学习和巩固的知识点
  4. service不是内部或者外部命令
  5. php中 ob_start()有什么作用
  6. 电脑qq收藏在哪里打开_外贸询盘怎么来?零成本用Linkedin批量开发客户!外贸人收藏...
  7. Matplotlib 中文用户指南 6 自定义 matplotlib
  8. Oracle备份与还原(exp和imp),导出导入
  9. Android 电容屏和电阻屏
  10. php远程控制代码,内部网络机器的远程控制软件UltraVNC及其源代码
  11. 热电冷磁之牛顿的三棱镜谭:围棋之C++
  12. 从网上骂人言论看其浮躁无知的一面
  13. 玩转「Wi-Fi」系列之wpa_supplicant 介绍(七)
  14. AD7606的国产替代方案—ADCS8162
  15. 通过一个网络错误简述DNS
  16. 软件测试需要看英文文档,软件测试类英文面试题.docx
  17. 多卡聚合路由器5G+4G是什么意思
  18. 屏蔽网通域名纠错系统
  19. C++ 视频学习笔记
  20. 中石油:皇家棋神(思维)

热门文章

  1. 555定时器回差电压计算公式_555时基电路引脚解析
  2. 实验七:Xen环境下cirrOS的安装配置
  3. [转]Java反射机制详解
  4. this 和super关键字
  5. sql server紧急状态下登录脚本
  6. UEditor 插入图片大于2M提示文件大小超出范围解决办法
  7. Idea实现WebService实例 转
  8. bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (三) 图片裁剪
  9. matlab学习:图像频域分析之Gabor滤波
  10. 简单的ASP.NET无刷新分页