【云小课】应用平台第31课 使用Nginx实现公网访问Redis 4.0/5.0的单机/主备/Proxy集群实例

应用万花筒. 发表于 2022/02/24 15:10:41 2022/02/24
【摘要】 当前,华为云DCS的Redis 4.0和5.0版本不支持绑定弹性IP,无法通过公网访问。本文档主要介绍通过跳板机访问VPC内Redis 4.0/5.0单机、主备、读写分离、Proxy集群实例的操作,Cluster集群实例暂不支持使用该方案进行公网访问。

8565626ba8d51d3202e1_900x300.jpg

下图中安装了Nginx代理工具的ECS就是一台跳板机,它与DCS Redis实例在相同VPC,可通过子网IP访问Redis实例。为ECS绑定弹性IP后,公网可以访问ECS,Nginx支持监听多个端口,并将请求内容转发到不同的后端Redis实例。

图1 通过Nginx访问VPC内DCS Redis

unnaming (1).png

购买一台ECS

  1. 确认Redis缓存实例所在的虚拟私有云。如下图所示,Redis缓存实例所在的虚拟私有云为“vpc-demo”。

    图2 Redis缓存实例信息

    unnaming (2).png

  2. 购买一台同在“vpc-demo”的ECS,并为其绑定一个弹性公网IP,按需选择带宽。

    图3 ECS信息

    unnaming (3).png

安装Nginx

购买ECS后,需要在ECS上安装Nginx,本文以ECS操作系统为Centos7.x为例进行安装,不同操作系统命令稍有不同。

  1. 执行以下命令,添加Nginx到yum源。

    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

  2. 添加完之后,执行以下命令,查看是否已经添加成功。

    yum search nginx

  3. 添加成功之后,执行以下命令,安装Nginx。

    sudo yum install -y nginx

  4. 执行以下命令安装stream模块。

    yum install nginx-mod-stream --skip-broken

  5. 启动Nginx并设置为开机自动运行。

    sudo systemctl start nginx.service

    sudo systemctl enable nginx.service

  6. 在本地浏览器中输入服务器地址(ECS公网IP地址),查看是否安装成功。

    如果出现下面页面,则表示安装成功。

配置Nginx

Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。

  1. 修改配置文件。

    cd /etc/nginx

    vi nginx.conf

    配置示例如下,如果有多个redis实例需要公网连接,可以配置多个server,在proxy_pass中配置Redis实例连接地址。

    stream {
        server {
            listen 8080;
            proxy_pass 192.168.0.5:6379;
        }
        server {
            listen 8081;
            proxy_pass 192.168.0.6:6379;
        }
    }

    说明:proxy_pass参数配置值为同一vpc下的Redis实例的IP地址,具体可从缓存实例详情页面的“连接信息”区域获取。

  2. 重启Nginx服务。

    service nginx restart

  3. 验证启动是否成功。

    netstat -an|grep 808

    8080和8081两个端口都在监听状态,Nginx启动成功。

通过Nginx访问Redis

  1. 登录虚拟私有云控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开8080和8081两个端口。

    图4 添加安全组入方向规则

    unnaming (7).png

  2. 在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常,大功告成。(公网环境需要参考Redis-cli连接 中相关步骤,安装Redis-cli客户端。)

    ./redis-cli -h {myeip} -p {port} -a {mypassword}

    其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口

    如下图所示,设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。

    图5 通过Nginx代理连接第一个Redis实例

    图6 通过Nginx代理连接第二个Redis实例

    至此,就完成了通过跳板机的搭建,实现公网访问Redis 4.0和Redis 5.0的操作了。






【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。