服务使用的阿里云的Redis,但是阿里云的Redis不提供公网地址,因此如果公司内网要访问Redis必然需要一个代理,阿里云官方文档使用的是rinetd,不过不得不说rinetd这个东西比较坑。访问多了或者时间长了就会使得CPU占用率非常高。然后发现redis连不上了,提示Connection reset by peer。
因此就要想办法替换掉rinetd。
以下是使用Nginx的部署方法。
Nginx从1.9之后的版本开始支持stream转发,但是发布的包默认是不支持此功能的,因此想要用上还需要自己编译。
1.先去nginx的官网下载代码,最新分支的地址是 http://hg.nginx.org/nginx, 一般想要编译稳定版,那么就要先在左侧选择branch分支,本教程选择是1.12版本,然后选择zip下载代码。
也可以省事用此地址直接下载:http://hg.nginx.org/nginx/archive/stable-1.12.zip。
2.本教程使用的是Centos7.4版本的系统,编译nginx之前当然要安装一下编译环境了。
yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel unzip
3.解压并编译安装
unzip stable-1.12.zip
cd stable-1.12
cp auto/configure .
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-stream
make
make install
configure中最重要的就是--with-stream,加了这个编译选项才能支持stream转发。
4.nginx配置文件
worker_processes auto;
# error_log /var/log/nginx/error.log info; #上线之后如果不需要日志可以把他关了
events {
worker_connections 1024;
}
stream {
upstream redis {
server *redis-addres*:6379 max_fails=3 fail_timeout=30s; #*redis-addres*替换为真是地址
}
server {
listen 6379;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass redis;
}
}
5.启动代理~
nginx -c 配置文件的绝对路径,到这里就大功告成了!!
PS:这下可以安心了,不用在烧香了~~