很久没写了,今天弄了一下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