【云小课】应用平台第4课 一招搞定公网访问Redis
DCS Redis实例运行在VPC(虚拟私有云)内,客户端程序与Redis实例使用VPC内子网地址通信,网络低延时高IO,且安全防护性更高。如果本地开发/测试环境想要访问Redis实例,则可以为实例绑定弹性IP,客户端程序通过弹性IP与实例通信。
然而,各位亲是否有过类似的烦恼:
安全规定不允许Redis实例绑定弹性IP。(安全:只要我觉得不安全,那就是不安全)
几十上百个Redis实例,使用弹性IP成本太高了。(财务:能省一点是一点)
Redis4.0以及Redis5.0版本目前不支持绑定弹性IP。(技术:实在无解... ...)
小编在这里提供一种便捷、安全,而且非常实惠的方式,即通过跳板机访问VPC内Redis实例。
如下图所示,安装了Haproxy代理工具、并绑定了弹性IP的ECS就是一台跳板机,Redis客户端访问Haproxy的监听端口,Haproxy将请求内容转发到不同的Redis实例。
接下来,小编为您详细介绍Haproxy的搭建,以及Redis客户端访问。
购买一台ECS
如下所示,小编的Redis实例,在虚拟私有云“vpc-01”内。
于是,小编买了一台同在“vpc-01”的ECS,并为其绑定一个弹性公网IP,按需选择带宽,够用就好。
安装Haproxy
买了ECS后,小编开始在ECS上安装Haproxy。(为了方便亲们抄作业,我把所有执行过的命令都贴出来了。)
登录ECS,下载Haproxy。
cd /root
wget https://www.haproxy.org/download/1.6/src/haproxy-1.6.12.tar.gz
本示例以root用户操作,您可以自建普通用户。
下载完成后解压。
tar -zxvf haproxy-1.6.12.tar.gz
新建haproxy的安装和运行目录。
mkdir –p /usr/local/haproxy
编译和安装haproxy。
cd ./haproxy-1.6.12
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
TARGET=linux26 #指定内核版本,可以使用uname -r查看系统内核信息,如果kernel大于2.6.28,则参数值填linux2628,否则填linux26。如:2.6.18-371.el5,此时该参数值填linux26。ARCH=x86_64 #系统位数 PREFIX=/usr/local/haproxy #haproxy安装路径
安装haproxy
make install PREFIX=/usr/local/haproxy
配置Haproxy
Haproxy安装后,需要配置请求转发规则,告诉Haproxy哪个端口收到的请求,应该转发到后端哪个Redis示例。
将Haproxy的配置模板复制到Haproxy的安装目录。
cp /root/haproxy-1.6.12/examples/transparent_proxy.cfg /usr/local/haproxy/haproxy.cfg
修改配置文件。
cd /usr/local/haproxy
vi haproxy.cfg
配置示例如下:
global
defaults
timeout client 30s #客户端连接超时时间
timeout server 30s #后端连接超时时间
timeout connect 30s #前后端连接总超时时间
frontend RedisFront01 #第1个监听配置
bind *:8080 #Haproxy监听端口,
default_backend RedisBackend01 #转发对应的后端名称
backend RedisBackend01
mode tcp #识别TCP报文后,转发对应的Redis后端。如果是http报文,则会拒绝。
server server1 192.168.10.38:6379 #Redis后端地址与端口
#如果有多个redis实例需要公网连接,可参考以下内容,配置多个frontend和backend
frontend RedisFront02 #第2个监听配置
bind *:8081 #Haproxy监听端口
default_backend RedisBackend02
backend RedisBackend02
mode tcp
server server1 192.168.10.224:6379启动haproxy。
nohup /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg &
验证启动是否成功。
netstat -an|grep LISTEN |grep 808
8080和8081两个端口都在监听状态,Haproxy启动成功。
通过Haproxy访问Redis
小编在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常,大功告成。
redis-cli -h {myeip} -p {port} -a {mypassword}
注意,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Haproxy的监听端口。如下图所示,小编设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。
小编猜测,您很有可能遇到下图所示的连接超时现象。
最常见的原因是跳板机的安全组入方向规则没放开,请登录虚拟私有云控制台,为安全组入方向放开8080和8081两个端口。
至此,小编完成了跳板机的搭建,从此再也不用担心网络不通了。
除了Haproxy,Nginx也是一款优秀的开源代理软件,也能满足配置跳板机并访问DCS Redis示例的需要。
- 点赞
- 收藏
- 关注作者
评论(0)