业务写多了偶尔弄下架构技术方案也是不错的!有时候也是问题主导。
我目前的问题就是多个项目使用同一个单例redis,偶尔会redis发生宕机,导致项目或多或少出点问题,所以认真的研究了下,当然有人会说我的项目对于缓存的依赖性太高了,那么请考虑下在分析报表存在大量统计数据的话还能不依赖redis吗? (请理智回答,拒绝杠精。。。)
1.首先下载redis并编译安装
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
(最新版的是redis5可以自由选择)
tar -zvxf redis-4.0.11.tar.gz
接着编译
make
【可能遇到的问题】
报错You need tcl 8.5 or newer in order to run the Redis test
所以需要下载tcl8.5
解决方式
安装tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
【跳过问题】
再次make test可以了成功校验了
接着cd redis-4.0.11/src
这样编译安装成功了
默认安装文件会再/usr/local/bin
因为目前安装文件和配置文件看来起来比较分散所以建议自己新建个目录整合下
cd /usr/local/
mkdir redis
再进入到redis目录新建一下目录
接着把/usr/local/bin中的redis脚本复制到/usr/local/redis/bin目录下
将redis解压目录下的redis.conf和sentinel.conf分别复制到/usr/local/redis/conf和/usr/local/redis/sentinel下
然后cd 到/usr/local/redis/conf目录下
将redis.conf复制三份分别重命名为
2.主服务配置文件修改
将redis_6379.conf作为主服务配置文件
修改一下内容
将bind 127.0.0.1注释或修改为内网或外面地址方便后面做主从复制或集群
将protected-mode yes 修改为no
端口看情况,我的目前不需要改
找到daemonize将值修改位yes则可以后台启动
logfile也可以配置下
工作目录修改
配置密码
配置从服务器密码(选举新的master后需要用到)
masterauth 123456
3.从服务器配置
两个从redis配置文件先把上面的配置copy一份
然后把所有的6379修改为6380、6381
最后一定要加上从服务标志性配置
4.哨兵文件配置
哨兵文件配置这里是采用三个哨兵监控主服务器
所以也复制三个
vim sentinel_6379.conf
可以修改下工作目录 dir "/usr/local/redis/sentinel/6379/tmp"
下面修改监控master配置和访问密码
另外两个文件配置是类似的除了端口号修改修改下
这样配置都完成了回到/usr/local/redis下面启动三个redis实例
启动哨兵
接着登陆redis
输入info replication
发现我们默认配置的主实例并不是master,这也是哨兵自己的选举策略
接着登陆6380端口的
5.下面我们看springboot相关配置
pom依赖
接着写了两个测试接口
然后测试下都是成功的
接着测试故障迁移kill掉master
然后会在springboot中看到重连机制和选举机制
最后发现采用了6379为master
一主两从三哨兵的整个技术方案到此圆满结束,有不明白的童鞋可以提问都会回复的!