免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

概述

本文主要介绍如何在ECS实例中搭建代理服务,使外网设备可以通过代理服务与云数据库Redis实例进行连接。

详细信息

请确认当前环境是否符合实施条件,并根据ECS实例的系统类型选择对应的方法进行操作。

前提条件

如果您需要通过ECS实例作为代理服务器访问Redis实例,进行数据操作,可在ECS实例上配置端口映射或者端口转发实现。但必须符合以下前提条件。

注:如果连接遇到问题,请参见Redis连接问题排查与解决

  • 若Redis实例属于专有网络(VPC),则ECS实例需与Redis实例属于同一个VPC。
  • 若Redis实例属于经典网络,ECS实例与Redis实例同属于经典网络并且在同一地域。
  • 确认已将访问数据库的ECS服务器私网地址加到目标Redis实例的白名单中。如何设置白名单,详情请参见设置IP白名单
  • 确认已在ECS服务器的安全组中添加安全组规则,允许指定的公网设备地址和Redis实例的私网地址对ECS服务器的访问。安全组规则的具体配置方法请参见添加安全组规则

Windows系统的ECS实例

如果您需要通过Windows系统作为代理访问云数据库Redis版,可以在Windows云服务器中通过netsh命令进行端口映射实现。本文以ECS实例的6379端口为例。

  1. 登录Windows服务器,运行 cmd,进入命令行窗口。
  2. 执行如下命令,进行端口映射。
    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配置代理映射。
    系统显示类似如下。
  3. 如果需要查看当前服务器存在的映射关系,可执行如下命令,查看映射关系。
    netsh interface portproxy show all
  4. 设置完成后,在本地进行验证测试。
    注:假设Windows服务器的IP是1.1.1.1,即执行telnet 1.1.1.1 6379命令连接到ECS代理服务器。
    1. 在本地通过redis-cli命令连接到ECS代理服务器。
    2. 连接到ECS代理服务器后,执行如下命令,输入连接Redis数据库的密码。
      auth [$Redis_Password]
      注:[$Redis_Password]为Redis的连接密码。
    3. 连接到Redis数据库后,进行数据写入及查询验证。
  5. 完成相关操作后,如需删除公网转发,可执行如下命令,删除不需要的映射。
    netsh interface portproxy delete v4tov4 listenaddress=[$ECS_IP] listenport=6379

Linux系统的ECS实例

如果您需要通过Linux系统作为代理连接访问云数据库Redis版,可以在Linux云服务器中安装rinetd软件进行转发实现。

  1. 登录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官方进行联系确认。
  2. 执行如下命令,编辑rinetd.conf配置文件。
    vi /etc/rinetd.conf
    在配置文件中输入如下内容。
    0.0.0.0 6379 [$Redis_Address] 6379
    logfile /var/log/rinetd.log
    注:可以使用cat /etc/rinetd.conf命令检验配置文件是否修改正确。
    系统显示类似如下。
  3. 执行如下命令,启动rinetd进程。
    rinetd
    注:
    • 您可以通过执行如下命令,将Rinetd设置为自启动。
      echo rinetd >>/etc/rc.local
    • 若遇到绑定报错,可以执行pkill rinetd命令结束进程,再执行rinetd命令启动rinetd进程。
    • rinetd进程正常启动后,执行如下命令,确认服务运行正常。
      netstat -anp | grep 6379
      系统显示类似如下。
  4. 在本地进行验证测试。
    1. 您可以在本地通过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命令连接服务器

    2. 连接到ECS服务器后,执行如下命令,输入连接Redis的密码。
      auth [$Redis_Password]
    3. 连接到Redis数据库后,进行数据写入及查询验证。

适用于

  • 云数据库Redis版