免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
概述
本文主要介绍如何在ECS实例中搭建代理服务,使外网设备可以通过代理服务与云数据库Redis实例进行连接。
详细信息
请确认当前环境是否符合实施条件,并根据ECS实例的系统类型选择对应的方法进行操作。
前提条件
如果您需要通过ECS实例作为代理服务器访问Redis实例,进行数据操作,可在ECS实例上配置端口映射或者端口转发实现。但必须符合以下前提条件。
注:如果连接遇到问题,请参见Redis连接问题排查与解决。
Windows系统的ECS实例
如果您需要通过Windows系统作为代理访问云数据库Redis版,可以在Windows云服务器中通过netsh命令进行端口映射实现。本文以ECS实例的6379端口为例。
- 登录Windows服务器,运行 cmd,进入命令行窗口。
- 执行如下命令,进行端口映射。
netsh interface portproxy add v4tov4 listenaddress=[$ECS_IP] listenport=6379 connectaddress=[$Redis_Address] connectport=6379
注:
系统显示类似如下。
- [$ECS_IP]为ECS的公网IP地址,[$Redis_Address]为云数据库Redis版的内网连接地址。
- 因PortProxy由微软官方提供,未开源使用,您如果在配置使用过程中遇到疑问,可参见关于netsh命令的PortProxy使用说明或向微软官方咨询确认。您也可以考虑通过其他的方案实现,比如通过PortMap配置代理映射。
- 如果需要查看当前服务器存在的映射关系,可执行如下命令,查看映射关系。
netsh interface portproxy show all
- 设置完成后,在本地进行验证测试。
注:假设Windows服务器的IP是
1.1.1.1
,即执行telnet 1.1.1.1 6379
命令连接到ECS代理服务器。- 在本地通过redis-cli命令连接到ECS代理服务器。
- 连接到ECS代理服务器后,执行如下命令,输入连接Redis数据库的密码。
auth [$Redis_Password]
注:[$Redis_Password]为Redis的连接密码。
- 连接到Redis数据库后,进行数据写入及查询验证。
- 完成相关操作后,如需删除公网转发,可执行如下命令,删除不需要的映射。
netsh interface portproxy delete v4tov4 listenaddress=[$ECS_IP] listenport=6379
Linux系统的ECS实例
如果您需要通过Linux系统作为代理连接访问云数据库Redis版,可以在Linux云服务器中安装rinetd软件进行转发实现。
- 登录Linux服务器,依次执行如下命令,安装rinetd软件。
wget https://github.com/samhocevar/rinetd/releases/download/v0.70/rinetd-0.70.tar.gz&&tar -xvf rinetd-0.70.tar.gz&&cd rinetd-0.70
sed -i 's/65536/65535/g' rinetd.c
mkdir /usr/man
./configure
make&&make install注:
- 如通过命令行中的地址无法下载Rinetd安装包,您可以搜索相应的安装包进行下载使用。
- 因Rinetd为开源软件,如在使用过程中存在疑问,您可以参考其Rinetd相关文档,或与Rinetd官方进行联系确认。
- 执行如下命令,编辑rinetd.conf配置文件。
vi /etc/rinetd.conf
在配置文件中输入如下内容。0.0.0.0 6379 [$Redis_Address] 6379 logfile /var/log/rinetd.log
注:可以使用
系统显示类似如下。cat /etc/rinetd.conf
命令检验配置文件是否修改正确。 - 执行如下命令,启动rinetd进程。
rinetd
注:
- 您可以通过执行如下命令,将Rinetd设置为自启动。
echo rinetd >>/etc/rc.local
- 若遇到绑定报错,可以执行
pkill rinetd
命令结束进程,再执行rinetd
命令启动rinetd进程。 - rinetd进程正常启动后,执行如下命令,确认服务运行正常。
netstat -anp | grep 6379
系统显示类似如下。
- 您可以通过执行如下命令,将Rinetd设置为自启动。
- 在本地进行验证测试。
- 您可以在本地通过redis-cli命令连接Linux服务器后,进行登录验证。比如安装Rinetd的服务器IP是
1.1.1.1
,即执行redis-cli -h 1.1.1.1
命令连接服务器。或者通过telent命令连接Linux服务器后进行操作验证,假设Linux服务器的IP是1.1.1.1
,即执行telnet 1.1.1.1 6379
命令连接服务器。 - 连接到ECS服务器后,执行如下命令,输入连接Redis的密码。
auth [$Redis_Password]
- 连接到Redis数据库后,进行数据写入及查询验证。
- 您可以在本地通过redis-cli命令连接Linux服务器后,进行登录验证。比如安装Rinetd的服务器IP是
适用于
- 云数据库Redis版