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
字段,表示布隆过滤器已加载
posted @ 2022-10-16 21:11  大胡萝卜没有须  阅读(204)  评论(0编辑  收藏  举报