Redis集群搭建
安装集群,默认我们已经能启动单个服务的redis了
配置
1. 配置文件
-
修改port,dir,logfile,pidfile,每个节点都需要单独的端口号和路径以及文件
-
protected-mode,如果设为yes,则需要设置bind绑定端口,或者设置redis连接密码,我这里设置为no的
-
cluster-enabled,是否启用集群模式,当然为yes
-
把配置文件放置在同一个目录下面,方便启动
port 20001
dir /var/lib/redis20001
logfile /var/log/redis/redis20001.log
pidfile /var/run/redis_20001.pid
protected-mode no
cluster-enabled yes
daemonize yes
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
loglevel notice
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
2. 创建路径
- 创建第一步中每个节点设置的dir,(我不知道系统会不会自动创建,没有测试,我直接创建了的)
3. 启动各个节点
#redis-server 路径
redis-server etc/redis/redis20001.conf
4. 检查启动状态
#检查是否启动成功
ps -ef|grep redis
#查看redis端口号和状态
netstat -tnlp | grep redis
安装Ruby
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境
1. 安装curl
yum -y install curl
2. 安装rvm
1. gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
2. curl -L get.rvm.io | bash -s stable
# 如果报错“没有公钥,No public key”,则执行第三步添加公钥,没有报错执行第四步添加用户组
3. 添加公钥
如果报下面这个信息,则需要安装公钥
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
4.添加用户组
安装完,界面会提示:Please do NOT forget to add your users to the rvm group.我使用的是root用户,所以添加的也是root用户,根据自己用户添加
usermod -aG rvm root
4. 修改rvm的ruby下载源RubyChina镜像
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
5.查看rvm库中可用的ruby版本
rvm list known
6.按照版本号安装ruby
根据版本号安装ruby,[ruby-]2.6[.3]说明2.6版本有从2.6.0到2.6.3四个版本
rvm install 2.6.3
7.设置使用ruby版本
rvm use 2.6.3
8.设置默认ruby版本
rvm use 2.6.3 --default
9.查看当前ruby版本
ruby --version
创建集群
- 进入redis-trib.rb 所在目录执行命令(需替换ip地址为自己服务器地址,替换端口号为配置文件端口号)
./redis-trib.rb create --replicas 1 192.168.1.1:20001 192.168.1.1:20002 192.168.1.1:20003 192.168.1.1:20004 192.1.1.210:20005 192.168.1.1:20006
-
询问Can I set the above configuration? 输入yes继续
-
验证集群
-
查看主从关系命令:redis-cli -h 192.168.1.1 -p 20001 info Replication
-
端口20001的从服务是端口20006的redis服务
-
端口20005的主服务是端口20003的redis服务
-
-
连接redis命令:redis-cli -h 182.92.67.19 -c -p 20001
-
连接上20001端口的redis服务,set了一个key"hello",value"yhw",然后可以直接get到这个key
-
连接上20005端口的redis服务,get key "hello",能够拿到内容
-
-