宝宝忘记reload nginx了

介绍

nginx-upsync-module是由王晓开用C开发的nginx模块,用于从consul或其它同步upstream模块配置,动态修改后端服务属性(weight、max_fails等等)。修改这些信息后,不像未使用该模块的nginx一样需要reload下nginx。
        nginx在作为负载均衡角色时,对于单台nginx,增加、删除后端服务,对于进行单台的nginx,修改nginx配置文件后,要想配置文件生效,必须reload下nginx,这是很方便的。但是对于一个十几台或者几十台的nginx集群,要实现这是一个很大的一个工作量。并且reload nginx会增加系统负载也会暂时降低性能。
        nginx-upsync-module可以很容易解决上面所提到的问题,并且也不会影响性能。         该模块现在仍处于开发,不过已经准备用于生产环境。建议和后端健康检测模块nginx_upstream_check_module配合使用。

兼容性

master分支兼容1.9版本及以上的nginx。nginx-upsync-1.8.x兼容1.8版本的nginx。

优势

该模块提供了发现后端的方法。支持通过consul动态添加和删除后端服务和调整后端服务的weightfail_timeoutmax_fails等属性。也会从consul获取新的后端服务并同步到nginx的IP路由表。该模块具有以下优势:

  • 及时性
            会发送给consul带有索引的key,consul会将该索引和consul的索引进行对比,如果索引没有改变,链接会挂起5分钟,在这期间,对该key-value的任何操作,都会立马得到反馈。
  • 几乎无性能损失
            从consul获取后端服务器列表,对于nginx来说就相当于一个请求。更新nginx的IP路由表,不需要reload nginx,因此只会对nginx的性能有一点影响。
  • 稳定
            如果这次获取服务器失败,在下一个同步间隔仍会获取服务器列表。这样就保证了后端服务提供服务的稳定性。同时,支持将最近的配置文件备份到本地,即使consul故障宕机了,nginx仍可以随时可以reload配置。
  • 健康检测
            该模块支持对后端服务的健康检测,不过需要nginx_upstream_check_module。因此建议nginx-upsync-modulenginx_upstream_check_module配合使用。

配置参数

  • upsync

    语法:upsync $consul.api.com:$port/v1/kv/upstreams/$upstream_name [upsync_type=consul] [upsync_interval=seconds/minutes] [upsync_timeout=seconds/minutes] [strong_dependency=off/on];
    默认:upsync_interval=5s upsync_timeout=6m strong_dependency=off
    位置:upstream
    功能:从consul或etcd获取服务列表

    参数解释
    upsync_interval:
            从consul获取服务列表的间隔时间
    upsync_timeout
            从consul获取服务列表的请求超时时间
    upsync_type
            指定从什么类型的服务(consul或etcd)获取服务列表。
    strong_dependency
            nginx启动是否强制依赖upsync_type指定的服务的开关。如果upsync_type指定的是consul,在nginx启动是,consul并未运行,那么nginx启动会失败。

  • upsync_dump_path
    语法: upsync_dump_path $path;
    默认:/tem/servers_$host.conf
    位置:upstream
    功能:备份upstream配置的后端服务器到指定的路径下
  • upsync_lb
    语法:upsync_lb round_robin/ip_hash/hash
    默认:round_robin
    位置:upstream
    功能:指定使用的调度方法
  • upstream_show
    语法:upstream_show;
    默认:None
    位置:location
    功能:列出指定的upstream配置的所有后端服务器

更多精彩请关注微信公众号:

时间: 2024-11-08 08:44:30

宝宝忘记reload nginx了的相关文章

宝宝忘记reload nginx了之部署

架构拓扑 主机名 IP 角色 nginx-lb 10.0.1.5 负载均衡 node001 10.0.1.6 web服务器 node002 10.0.1.7 web服务器 说明:        nginx-lb安装nginx和consul服务,作为负载均衡.node001和node002安装nginx作为后端web服务器 系统环境 # uname -rm 3.10.0-229.el7.x86_64 x86_64 # cat /etc/redhat-release  CentOS Linux re

nginx -s reload失败

在重启nginx时报错误. [email protected] ~ $ sudo /usr/sbin/nginx -s reload nginx: [error] invalid PID number "" in "/run/nginx.pid" google一番,下面是解决办法 nginx -s reload is only used to tell a running nginx process to reload its config. After a sto

nginx在reload时候报错invalid PID number

今天在nginx重新加载配置文件的时候报错 提示无效的PID,打开nginx.pid文件,发现里面是空的,在网上找了下,有的说sudo可以解决,但是又一次失望了 1 2 [[email protected]_23_56 conf]# sudo /usr/local/nginx/sbin/nginx -s reload nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid" 于

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

centos7_ linux : Nginx安装手册

一: nginx安装环境 1: oracle vm虚拟机+Centos7系统的yum环境的安装 1 配置本地yum库(用root用户操作) 2 创建挂载目录 3 mkdir /mnt/cdrom 4 查看挂载目录 5 ls /mnt/cdrom 6 把oracle linux7.iso安装 系统文件挂载 7 mount /dev/sr0 /mnt/cdrom/ 8 查看挂载目录 9 ls /mnt/cdrom 10 进入yum 文件 11 cd /etc/yum.repos.d/ 12 查询文件

使用etcd+confd管理nginx配置

1.前言 最近在项目中用nginx做反向代理,需要动态生成nginx的配置.大概流程是用户在页面上新增域名.http或https协议以及端口信息,后台会根据域名自动生成一个nginx的server配置,在nginx.conf配置文件中使用include将所有的server配置加载进来.遇到一个问题就是如何动态生成nginx的配置,以及配置更新.在此之前也接触过配置生成及更新,当时配置的格式都是基于xml的,使用protobuf与xml结合,先采用protobuf定义好配置的数据结构,然后将pro

nginx在windows下安装

下载地址 http://nginx.org/en/download.html win和linux版本都在这下载. win版本使用非常方便,纯绿色,解压缩就可以用,启动需要在命令行下,CD到nginx安装目录,执行如下命令: 启动服务:nginx.exe:start nginx.exe 停止服务:nginx -s stop 重新加载配置:nginx -s  reload 但是这样需要手动启动,如果某些操作需要重启服务器的时候,特别是多人操作服务器的时候难免发生忘记启动nginx的情况,所以还是需要

Linux------环境配置(CentOS 7) 安装JDK Tomcat Nginx MySQL

mkdir:创建目录  rmdir: 删除目录   pwd:列出当前目录 注: 设置语言:LANG="zh_CN.UTF-8"   LANG="en_US.UTF-8" !!!要注意腾讯云的安全组有没有开放端口 Linux文件结构的详细解答:https://www.cnblogs.com/irisrain/p/4201947.html Linux 目录详解:https://blog.csdn.net/m0_38044196/article/details/72844

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再