nginx负载均衡反向代理tar包安装,添加nginx_upstream_check_module模块

本文详细介绍如何在Nginx中配置负载均衡反向代理,包括安装必要的组件、下载及安装Nginx、添加健康检查模块等步骤。此外还提供了具体的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久没写了,今天弄了一下nginx负载均衡反向代理,添加淘宝的nginx_upstream_check_module模块,把步骤记录一下。

一、安装nginx
   1、安装c++ 以及相关组件,如果已经安装,则忽略
        安装c++编译环境,
        $  yum install -y gcc gcc-c++
       相关组件
        $  yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel
   2、下载安装nginx
       2.1 下载nginx安装包,目前阿里的upstream_check_modul补丁包只支持到1.12,所以下载的版本建议为nginx-1.12.2
         创建下载包存放路径
         $ cd /opt
         $ mkdir nginx
         $ cd nginx
        下载nginx安装包文件并解压
         $ wget http://nginx.org/download/nginx-1.12.2.tar.gz
         $ tar -xzvf nginx-1.12.2.tar.gz

2.2 下载nginx Health Ckeck模块,并解压。

       模块连接介绍:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

       $ wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master 
       $ unzip master
       若没有unzip命令,下载即可,yum install -y unzip
       2.3 安装
       $  cd nginx-1.12.2
       $ patch -p1 < /opt/nginx/nginx_upstream_check_module-master/check_1.12.1+.patch
       如果patch命令不存在,则下载 yum install -y patch
 $ ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --add-module=/opt/nginx/nginx_upstream_check_module-master
        $  make 
        $  make install
        --prefix=path  定义一个将保留服务器文件的目录 
      --sbin-path=path  设置一个nginx的的可执行文件的名称。该名称仅在安装期间使用。默认情况下该文件被命名prefix/sbin/nginx。
        --conf-path=path   设定配置文件(nginx.conf)目录,默认为prefix/conf/nginx.conf
        --error-log-path=path 设置主要错误的名称,警告和诊断文件。安装完成后,可以nginx.conf使用的的error_log 指令始终在配置文件中更改文件名  。默认情况下该文件被命名 prefix/logs/error.log。
        --pid-path=path 设置nginx.pid将存储主进程的进程ID  的文件的名称。安装后,可以nginx.conf使用PID 指令随时在配置文件中更改文件名  。默认情况下该文件被命名 prefix/logs/nginx.pid。
        --user=USER  设定程序运行的用户环境(www)
        --group=name 设置工作进程将使用其凭据的组的名称。安装后,可以nginx.conf使用用户指令始终在配置文件中  更改名称。默认情况下,组名称设置为非特权用户的名称。
        --http-log-path=path 设置HTTP服务器的主要请求日志文件的名称。安装之后,可以nginx.conf使用的访问日志指令随时在配置文件中  更改文件名  。默认情况下该文件被命名 prefix/logs/access.log。
       配置均可修改,其他的建议使用默认配置即可。
       如果没有创建nginx用户,还需创建用户
       $ useradd nginx
       $ groupadd nginx 

    2.4 配置nginx环境变量

         修改 /etc/profile 文件,在文件末尾加上如下两行代码 
          PATH=$PATH:/usr/local/nginx/sbin
          export PATH
         最后执行命令 source /etc/profile 使其生效。
         $ nginx -v 检测安装结果

   2.5 启动,停止,重新载入配置命令

        $ nginx      //启动
        $  nginx -s reload    重新加载
        $ nginx -s quit     此方法停止步骤是待 Nginx 进程处理任务完毕进行停止
        $ nginx -s stop    此方法相当于先查出 nginx 进程 id 再使用 kill 命令强制杀掉进程

二、配置nginx
       
    找到nginx配置文件nginx.conf,编辑加入配置即可。
    $ cd /usr/local/nginx/conf

    配置格式如下

         upstream privapp {
                  server 192.168.51.160:9080; // 负载均衡服务器服务ip以及端口号
                  server 192.168.51.120:9080;
                  server 192.168.52.31:9080;
                  check interval=3000 rise=1 fall=1 timeout=1000 type=http;      
        }
        server {
               listen 80;
               server_name privapp.myeps.net;
               location / {
                       proxy_pass http://privapp;
                       proxy_set_header Host $host;
                       proxy_set_header X-Real-IP $remote_addr;
                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
               ocation /status {
                      check_status;       
                      access_log off;
                      #deny all;
                }
         }
 - interval:向后端发送的健康检查包的间隔。
 - fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
 - rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
 - timeout: 后端健康请求的超时时间。
 - type:健康检查包的类型,现在支持tcp|http|ssl_hello|mysql|ajp|fastcgi
 详情  http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

三、已安装好的nginx配置nginx_upstream_check_module-master模块

先停止nginx服务。
$ nginx -s stop
进入到文件nginx安装包所在目录。
$ cd  /opt/nginx
下载模块包
$ wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master 
$ unzip master
进入nginx安装包
$ cd  nginx-1.12.2

$ patch -p1 < /opt/nginx/nginx_upstream_check_module-master/check_1.12.1+.patch

配置参数,要跟安装时一致即可。

$ ./configure --prefix=/usr/local/nginx --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/logs --add-module=/opt/nginx/heal/nginx_upstream_check_module-master

编译

$ make  

源文件启动配置

$ cp /usr/local/nginx/sbin/nginx   /usr/local/nginx/sbin/nginx.bak

将新生成的nginx 替换原来的nginx
$ cp /opt/nginx/nginx-1.12.2/objs/nginx    /usr/local/nginx/sbin/nginx 




借助淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则会将其踢出upstream,所有的请求不转发到这台服务器。当期恢复正常时,将其加入upstreamnginx_upstream_check_module健康检查的时间间隔是毫秒级,而且可以自定义监控url,定制监控页,响应速度快,比原生的敏感度要高。 Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port] Default: 如果没有配置参数,默认值是:interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp Context: upstream 该指令可以打开后端服务器的健康检查功能。指令后面的参数意义是: interval:向后端发送的健康检查的间隔,单位为毫秒。 fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。 rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。 timeout: 后端健康请求的超时时间,单位毫秒。 default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查达到一定成功次数以后才会被认为是健康的。 type:健康检查的类型,现在支持以下多种类型: tcp:简单的tcp连接,如果连接成功,就说明后端正常。 ssl_hello:发送一个初始的SSL hello并接受服务器的SSL hello。 http:发送HTTP请求,通过后端的回复的状态来判断后端是否存活。 mysql: 向mysql服务器连接,通过接收服务器的greeting来判断后端是否存活。 ajp:向后端发送AJP协议的Cping,通过接收Cpong来判断后端是否存活。 port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。 Syntax: check_keepalive_requests request_num Default: 1 Context: upstream 该指令可以配置一个连接发送的请求数,其默认值为1,表示Tengine完成1次请求后即关闭连接。 Syntax: check_http_send http_packet Default: "GET / HTTP/1.0\r\n\r\n" Context: upstream 该指令可以配置http健康检查发送的请求内容。为了减少传输数据量,推荐采用"HEAD"方法。 当采用长连接进行健康检查时,需在该指令中添加keep-alive请求头,如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"。 同时,在采用"GET"方法的情况下,请求uri的size不宜过大,确保可以在1个interval内传输完成,否则会被健康检查模块视为后端服务器或网络异常。 Syntax: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ] Default: http_2xx | http_3xx Context: upstream 该指令指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的。 效果: 访问:https://*****/nstatus
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值