nginx简介
nginx
是一个高效开源的代理转发组件,目前其应用领域已经非常广泛。尤其是其高效的实现消息的负载均衡功能受到众多企业的青睐。但是截至目前为止,其只能实现tcp
的负载均衡,对于udp
的负载均衡其无法使用upstream的check模块,进而无法监听转发端的存活性,从而导致即使有一个转发端down掉,nginx
依旧会将信息转发给它,需要安装nginx-plus
才能使用upstream的check模块,具体可在官网查看。
但是这里我们不是要讨论如何去破解nginx-plus
,而是讨论如何通过我们的方式使nginx
可以使用upstream
的check
模块。
部署开源版nginx
由于nginx
属于开源组件(nginx-plus
例外),很多技术大牛就会对nginx
进行修改,以实现自己的个性化需求,在github找到一个开源版,其能够实现udp的负载均衡
可在上面下载对应最新的源码进行安装
将其解压并上传到部署服务器。
到部署服务器上,需要安装对应的依赖包,可执行
yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel git
自动下载安装。
配置nginx前需要检查selinux是否关闭
输入getenforce
命令可以查看selinux是否关闭,如果显示disabled
或者permissive
表示已经关闭,如果显示`enforcing’则表示没有关闭,需要手动打开。
# getenforce
Enforcing
临时关闭selinux
setenforce 0 ##设置SELinux 成为permissive模式
setenforce 1 ##设置SELinux 成为enforcing模式
永久关闭selinux
修改/etc/selinux/config 文件
将SELINUX=enforcing
改为SELINUX=disabled
然后重启系统
安装nginx
使用以下命令安装nginx
# tar -zxvf nginx.tar.gz
# tar -zxvf ngx_healthcheck_module.tar.gz
# cd nginx
# git checkout branches/stable-1.12
# git apply ../ngx_healthcheck_module/nginx_healthcheck_for_nginx_1.12+.patch
# ./auto/configure --with-stream --add-module=../ngx_healthcheck_module/
# make && make install
安装完成后需要配置nginx
# cd /usr/local/nginx/conf
# 备份原生配置文件
# mv nginx.conf nginx.conf.bk
# 新建配置文件
# vim nginx.conf
将以下内容写入nginx.conf
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream udp-cluster {
# simple round-robin
server 192.168.211.21:514;
server 192.168.211.30:514;
check interval=10000 rise=2 fall=3 timeout=2000 default_down=false type=udp;
}
server {
listen 514 udp;
proxy_pass udp-cluster;
proxy_bind $remote_addr transparent;
proxy_timeout 0s;
}
}
将里面upstream
模块里的ip换位你自己要转发的ip即可。
接下来创建nginx
的日志目录并启动nginx
即可。
# mkdir /var/log/nginx
# cd /usr/local/nginx/sbin
# ./nginx