侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 64 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Redis集群搭建(cluster)

zyixin
2023-01-31 / 0 评论 / 0 点赞 / 2,374 阅读 / 1,783 字
温馨提示:
本文最后更新于 2023-01-31,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

集群方式(cluster)

redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容。

Redis-Cluster采用无中心结构,它的特点如下:

  • 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
  • 节点的fail是通过集群中超过半数的节点检测失效时才生效。
  • 客户端与redis节点直连,不需要中间代理层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

工作方式:

在redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383。还有一个就是cluster,可以理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

为了保证高可用,redis-cluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点A和它的从节点A1都宕机了,那么该集群就无法再提供服务了。

1 搭建方式(一)

1.1 redis下载

官方下载地址:https://redis.io/download
全量下载地址:http://download.redis.io/releases/

1.2 服务器调优配置

系统增加参数

# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
# echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf

# echo never > /sys/kernel/mm/transparent_hugepage/enabled

# cat >> /etc/rc.local << EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF

# cat >> /etc/security/limits.conf << EOF
redis soft nofile 131070
redis hard nofile 131070
EOF

1.3 新增redis用户

# useradd  -d /home/redis  redis  

# -d 为指定家目录位置 默认/data/redis 根据实际情况修改

1.4 上传部署包解压并编译安装

# su - redis
# rz -be
# tar -zxf redis-6.2.10.tar.gz

# cd redis-6.2.10
# make
# make install PREFIX=/home/redis/

1.5 创建相关目录

# cd
# vim .bash_profile



# mkdir -pv redis01/conf redis01/data redis01/log

# cp redis-6.2.10/redis.conf redis01/conf/
# cp redis-6.2.10/sentinel.conf redis01/conf/

1.6 修改配置文件

修改redis.conf配置文件

# cd redis01/conf
# vim redis.conf

#------修改如下配置-------
bind 192.168.0.101       #监听IP
port 7001                   #监听端口
timeout 30				   #在客户端空闲N秒后关闭连接(0为禁用)
daemonize yes
supervised no
pidfile /home/redis/redis01/data/redis_7001.pid      #目录根据实际情况修改
logfile "/home/redis/redis01/log/redis_7001.log"     #目录根据实际情况修改
dir /home/redis/redis01/data/
always-show-logo no
save 900 1
save 300 10
save 60 10000
masterauth Ye6k5sld4KaO          #redis密码
maxclients 10000
maxmemory 4g
appendfsync always
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
activedefrag yes


注销以下配置
# set-proc-title yes
# proc-title-template "{title} {listen-addr} {server-mode}"
# lazyfree-lazy-user-flush no
# disable-thp yes

1.7 拷贝其他节点目录

# cp -pr redis01 redis02
# cp -pr redis01 redis03
# cp -pr redis01 redis04
# cp -pr redis01 redis05
# cp -pr redis01 redis06

1.8 拷贝redis目录到其他服务器上,并修改配置

# cd ~/
# scp -pr bin/ redis03/ redis04/ redis@192.168.0.102:/home/redis
# scp -pr bin/ redis05/ redis06/ redis@192.168.0.103:/home/redis

配置文件修改项参考如下

bind 192.168.0.101       #监听IP以实际情况修改
port 7001                   #监听端口以实际情况修改
pidfile /home/redis/redis01/data/redis_7001.pid      #目录根据实际情况修改
logfile "/home/redis/redis01/log/redis_7001.log"     #目录根据实际情况修改
dir /home/redis/redis01/data/                    #目录根据实际情况修改

1.9 启动服务

分别登陆相关服务器的redis用户,启动所有节点服务

# redis-server redis01/conf/redis.conf
# redis-server redis02/conf/redis.conf

# redis-server redis03/conf/redis.conf
# redis-server redis04/conf/redis.conf

# redis-server redis05/conf/redis.conf
# redis-server redis06/conf/redis.conf

1.10 创建集群

登陆10.130.77.39服务器的redis用户,执行以下命令

# redis-cli  -a Ye6k5sld4KaO  -h 192.168.0.101 -p 7001 \
> --cluster create \
> 192.168.0.101:7001 \
> 192.168.0.102:7003 \
> 192.168.0.103:7005 \
> 192.168.0.101:7002 \
> 192.168.0.102:7004 \
> 192.168.0.103:7006 --cluster-replicas 1

出现提示时,输入yes
Can I set the above configuration? (type 'yes' to accept):   输入yes

1.11 验证集群

登陆192.168.0.101服务器的redis用户,执行下面命令

# redis-cli -a Ye6k5sld4KaO -h 192.168.0.101 -p 7001 -c
> cluster nodes

输入 cluster nodes ,出现如下为正常
redis集群模式验证

2 搭建方式(二)

2.1 部署包下载

下载地址:redis-6.2.6.tar.gz

2.2 服务器调优配置

系统增加参数

# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
# echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf

# echo never > /sys/kernel/mm/transparent_hugepage/enabled

# cat >> /etc/rc.local << EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF

# cat >> /etc/security/limits.conf << EOF
redis soft nofile 131070
redis hard nofile 131070
EOF

2.3 新增redis用户

# useradd  -d /home/redis  redis  

# -d 为指定家目录位置 默认/data/redis 根据实际情况修改

2.4 上传部署包并解压

# su - redis
# rz -E 
# tar -zxf redis-6.2.6.tar.gz

2.5 修改配置文件

登陆到192.168.0.101

# su - redis
# vim redis00/conf/redis.conf  

只需修改如下配置:
bind 192.168.0.101   监听ip
pidfile /home/redis/redis00/data/redis_26001.pid   (/home/redis目录根据实际情况修改)
logfile "/home/redis/redis00/log/redis_26001log"  (/home/redis目录根据实际情况修改)
dir /home/redis/redis00/data/  (/home/redis目录根据实际情况修改)

top:其他5个节点配置修改参考如上

2.6 启动服务

登录到192.168.0.101

# su - redis
# redis-server redis00/conf/redis.conf
# redis-server redis01/conf/redis.conf

登录到192.168.0.102

# su - redis
# redis-server redis02/conf/redis.conf
# redis-server redis03/conf/redis.conf

登录到192.168.0.159

# su - redis
# redis-server redis04/conf/redis.conf
# redis-server redis05/conf/redis.conf

2.7 创建集群

登陆192.168.0.101,初始化集群

# redis-cli  -a 1beBQ38tYUaT  -h 192.168.0.101 -p 26001 \
--cluster create \
192.168.0.101:26001 \
192.168.0.102:26003 \
192.168.0.103:26005 \
192.168.0.101:26002 \
192.168.0.102:26004 \
192.168.0.103:26006 --cluster-replicas 1

出现提示时,输入 yes
redis集群模式初始化

2.8 验证集群

# redis-cli -a Ye6k5sld4KaO -h 192.168.0.101 -p 7001 -c
> cluster nodes

输入cluster nodes 出现如下正常。
redis集群模式验证

0

评论区