Centos7部署redis三节点cluster集群,添加布隆过滤器
目录
Centos7部署redis三节点cluster集群,添加布隆过滤器
一、环境准备
1.1、服务器准备
服务器 | IP | redis实例数量 | redis端口 |
---|---|---|---|
redis-cluster-0 | 10.10.101.29 | 2 | 6379、6380 |
redis-cluster-1 | 10.10.101.30 | 2 | 6379、6380 |
redis-cluster-2 | 10.10.101.31 | 2 | 6379、6380 |
1.2、依赖安装
1、redis采用编译安装,先安装编译依赖
#安装gcc9
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
yum -y install wget
#切换到gcc9
1、临时切换
scl enable devtoolset-9 bash
2、永久切换
echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile
#查看当前gcc版本
gcc -v
... ...
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
1.3、安装ruby
#yum安装的ruby版本过低,我们需要手动安装高版本ruby
1、安装依赖
yum -y install gcc
yum -y install gcc-c++
2、下载ruby
wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz
tar xf ruby-2.3.5.tar.gz
cd ruby-2.3.5
3、编译安装
#指定安装位置
./configure --prefix=/data/server-side/ruby
make
make install
4、设置软连接
ln -s /data/server-side/ruby/bin/ruby /usr/bin/ruby
ln -s /data/server-side/ruby/bin/gem /usr/bin/gem
5、查看ruby版本
ruby -v
二、部署redis
2.1、安装redis
#下载tar包
# 官网下载地址: http://download.redis.io/releases/
wget https://download.redis.io/releases/redis-5.0.0.tar.gz
#解压
tar xf redis-5.0.0.tar.gz
rm -rf redis-5.0.0.tar.gz
mv redis-5.0.0/* .
rm -rf redis-5.0.0
#编译安装
make && make install
redis 编译安装后,命令文件会自动加入PATH,配置文件就在当前目录下
可以使用 which [命令] 来查看命令文件的位置
2.2、修改配置文件
vim redis.conf
bind 0.0.0.0
daemonize [yes/no] #yes后台启动 no前台启动
requirepass [自定义密码]
2.3、加入systemctl管理
1、redis加入systemctl管理
vim /lib/systemd/system/redis[1/2]-server.service
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
#相应修改PID路径
PIDFile=/var/run/redis_6379.pid
#相应修改启动文件与配置文件
ExecStart=/usr/local/bin/redis-server /data/server-side/redis/cluster/redis1.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2、重载systemctl配置
systemctl daemon-reload
#每台服务器的两个redis实例都要加入systemclt管理
三、配置集群
3.1、修改配置文件
################################ REDIS CLUSTER ###############################
#集群开关,默认是不开启集群模式。
cluster-enabled yes
#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes-7021.conf
#节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 30000
#在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了,导致数据过于陈旧,这样的slave不应该被提升>为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:
#比较slave断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period
#如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
#可能出现由于某主节点失联却没有从节点能顶上的情况,从而导致集群不能正常工作,在这种情况下,只有等到原来的主节点重新回归到集群,集群才恢复运作
#如果设置成0,则无论从节点与主节点失联多久,从节点都会尝试升级成主节
cluster-slave-validity-factor 10
#master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节>点会尝试迁移。
#主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。
# cluster-migration-barrier 1
#默认情况下,集群全部的slot有节点分配,集群状态才为ok,才能提供服务。设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。
#在部分key所在的节点不可用时,如果此参数设置为”yes”(默认值), 则整个集群停止接受操作;如果此参数设置为”no”,则集群依然为可达节点上的key提供读>操作
cluster-require-full-coverage yes
3.1、配置集群
1、创建集群
# redis-cli --cluster create [节点IP+端口] --cluster-replicas 1
# --cluster-replicas 参数为数字,1代表每个主节点需要1个从节点
redis-cli --cluster create 10.10.101.29:6379 10.10.101.29:6380 10.10.101.30:6379 10.10.101.30:6380 10.10.101.31:6379 10.10.101.31:6380 --cluster-replicas 1
2、保存配置
#集群创建后会询问是否保存配置
Can I set the above configuration? (type 'yes' to accept): yes
#输入yes保存即可
3.3、查看集群状态
redis-cli
cluster nodes
四、添加布隆过滤器
4.1、下载布隆过滤器
wget https://github.com/RedisBloom/RedisBloom/archive/refs/tags/v2.2.4.tar.gz
4.2、部署布隆过滤器
1、编译
tar xf redisbloom-2.2.4.tar.gz
cd RedisBloom-2.2.4/
make
2、将编译后的结果放到redis目录下
#不放也行,在哪都行,又不是不能用
mkdir redis/module
mv redisbloom.so redis/module
4.3、为redis安装Bloom Filter模块
1、修改redis配置文件
vim redis.conf
# loadmodule [模块的绝对路径]
loadmodule redis/module/redisbloom.so
4.4、验证布隆过滤器
重启redis,在日志文件中发现
Module 'bf' loaded from /data/server-side/redis/module/redisbloom.so
字段,表示布隆过滤器已加载