背景
由于业务的需求,线上的Redis服务需要部署到公网上。考虑到数据的敏感性,所以不希望数据在公网上是明文传输的,所以希望引入SSL/TLS来加密传输的数据,从而保证数据在一定程度上的安全性。 鉴于目前的Redis并没有官方支持的ssl/tls通信功能。所以只能通过SSL代理来实现。 在这里选择了Spiped作为SSL的代理工具。 Spiped的项目地址是:https://github.com/Tarsnap/spiped 官方地址是:http://www.tarsnap.com/spiped.html
部署Redis
2台机器,IP、端口分别为:
- 192.168.1.100:36379(Master)
- 192.168.1.101:36379(Slave)
分别下载redis:http://download.redis.io/releases/redis-3.2.3.tar.gz
编译redis: tar zvxf redis-3.2.3.tar.gz && cd redis-3.2.3 && make
启动Master: cd src/ && ./redis-server ../redis.conf
启动Slave:
- 修改redis.conf。在 redis-3.2.3目录下。 添加slaveof,对应结构是: slaveof 192.168.1.100 36379
- 启动Slave: cd src/ && ./redis-server ../redis.conf
在服务端启动redis-cli并写入测试数据: ./redis-cli -p 36379 set "TEST_KEY" "FOO"
在客户端启动redis-cli并检查是否有测试数据同步进来: ./redis-cli -p 36379 KEYS *
部署Spiped
下载spiped: https://github.com/Tarsnap/spiped.git
安装spiped: cd spiped && make
生成对应的key: dd if=/dev/urandom bs=32 count=1 of=spiped.key
服务端
启动spiped: cd spiped && ./spiped -d -s [0.0.0.0]:46379 -t [192.168.1.100]:36379 -k /root/tools/etc/spiped.key
表示启动一个spiped代理,监听46379端口,并转发到192.168.1.100的36379端口。
客户端
从服务端scp回来生成的spiped.key 启动spiped: cd spiped && cd spiped && ./spiped -e -s [0.0.0.0]:46379 -t [192.168.1.100]:46379 -k ../../etc/spiped.key
表示启动一个spiped代理,监听46379端口,并转发到192.168.1.100上的46379端口上。
验证
修改slave的redis.conf的slaveof,改为: 12.0.0.1 46379。 重启slave的redis-server。 在Master上的redis中写入新的测试数据: set "TEST_KEY3" "bla"
打开slave上的redis-cli。检查对应的key是否存在: KEYS *