方案正文
当前,天翼云DCS的Redis 4.0以及Redis 5.0版本不支持绑定弹性IP,无法通过公网访问。
下图中安装了Nginx代理工具的ECS就是一台跳板机,它与DCS Redis实例在相同VPC,可通过子网IP访问Redis实例;为ECS绑定弹性IP后,公网可以访问ECS;Nginx支持监听多个端口,并将请求内容转发到不同的后端Redis实例。
图 通过Nginx访问VPC内DCS Redis
购买一台ECS
1.确认Redis实例所在的虚拟私有云。
如下图所示,已购买一个虚拟私有云在“vpc-demo”内的Redis 4.0/Redis 5.0主备实例。
图 Redis缓存实例信息
2.购买一台同在“vpc-demo”的ECS,并为其绑定一个弹性公网IP,按需选择带宽,够用就好。
图 ECS信息
安装Nginx
1.购买ECS后,需要在ECS上安装Nginx,本文以ECS操作系统为Centos7.x为例进行安装,不同操作系统命令稍有不同。
2.执行以下命令,添加Nginx到yum源。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.添加完之后,执行以下命令,查看是否已经添加成功。
yum search nginx
4.添加成功之后,执行以下命令,安装Nginx。
sudo yum install -y nginx
5.执行以下命令安装stream模块。
yum install nginx-mod-stream
6.启动Nginx并设置为开机自动运行。
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
7.在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。
如果出现下面页面,则表示安装成功。
配置Nginx
1.Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。
修改配置文件。
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地址,具体可从缓存实例详情页面的“连接信息”区域获取。
图 Nginx配置
2.重启Nginx服务。
service nginx restart
3.验证启动是否成功。
netstat -an|grep 808
图 启动Nginx及验证
通过Nginx访问Redis
- 登录虚拟私有云控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开8080和8081两个端口。
- 在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常,大功告成。
说明公网环境已参考Redis-cli连接中相关步骤,安装Redis-cli客户端。
./redis-cli -h {myeip} -p {port}
其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口。
如果Redis实例设置了密码访问,则执行本步骤输入密码,校验通过后才可进行缓存数据读写。
auth <password>
其中“<password>
”为创建Redis实例时自定义的密码,请按实际情况修改后执行。
密码访问回显示例,及登录查询如下: