redis集群模式安装-------一看就会

目录

 

reids集群模式介绍

开始安装

主机规划

前期准备

配置文件-6379端口

配置文件-6380端口

补充

Redis占用内存大小配置

Redis的内存淘汰


 

reids集群模式介绍

1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2. 节点的fail是通过集群中超过半数的节点检测失效时才生效。
3. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
4. redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点
    提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个
    来充当主节点,从而保证集群不会挂掉。
5.redis-cluster把所有的物理节点映射到[0-16384]slot上(不一定是平均分配),cluster 负责维护 node<->slot<->value。
6.Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key)
    mod 16384的值,决定将一个key放到哪个桶中 

开始安装

主机规划

此教程是redis集群模式,使用了三台机器进行部署,如下是主机规划。

主机数量: 3台
配合: 1核1G
系统: centos:7
版本: CentOS Linux release 7.8.2003 (Core)
内核版本: 3.10.0-1127.el7.x86_64
防火墙: 关闭
selinux:关闭(setenforce 0)

IP规划
序号    服务类型    规划IP            备注(端口)

1      redis-1    192.168.241.5     6379
2      redis-1    192.168.241.5     6380
3      redis-2    192.168.241.6     6379
4      redis-2    192.168.241.6     6380
5      redis-3    192.168.241.123     6379
6      redis-3    192.168.241.123     6380

 


前期准备

ps ( #为注释 $为操作命令)

 #做的三主三从 把三台机都按照这个步骤做一遍
#安装所需插件

$ yum -y install wget gcc gcc-c++ make tar openssl openssl-devel cmake
#使用6.2.4的版本 直接从网上拉取
$wget http://download.redis.io/releases/redis-6.2.4.tar.gz
#解压安装 
$tar zxf redis-6.2.4.tar.gz  
#放置执行文件
$cd redis-6.2.4/src/ 
$cp redis-trib.rb /usr/local/bin

#安装

$cd /root/redis-6.2.4

#部署第一个redis  安装路径可以自己定义
$make PREFIX=/usr/local/redis1 install  

#部署第二个redis
$make MALLOC=libc PREFIX=/usr/local/redis2 install
#安装redis2的时候可能会出现一个错误 再次执行下就可以
$make MALLOC=libc PREFIX=/usr/local/redis2 install

#拷贝reids-cli到/usr/local/bin下

$cp /redis-6.2.4/src/redis-cli    /usr/local/bin/

配置文件-6379端口

配置文件-6379

从安装包里面的redis.conf模板修改 如下是行数 挨个修改即可
$cp /root/redis-6.2.4/redis.conf /usr/local/redis1
$vim /usr/local/redis1/redis.conf  
    bind 0.0.0.0 // 测试环节,任何地址都可连接 75行
    port 6379 // 修改成对应的端口号  98行
    daemonize yes // 后台运行 257行
    pidfile /var/run/redis_6379.pid // pid文件 289行
    logfile "/usr/local/redis1/logs/redis.log" // 日志 302行
    requirepass 123456 //483行加入 连接到节点密码
    masterauth 123456 //484行  节点之间的互访访问的密码
    appendonly yes // 开启 aop 备份 1252行
    appendfsync always // 每写一条 备份 一次 1282行
    cluster-enabled yes // 开启 Redis Cluster 1385行
    cluster-config-file nodes-6379.conf // 记录集群信息,不用手动维护,Redis Cluster 会自动维护 1393行
    cluster-node-timeout 15000 // Cluster 超时时间 1399行
    cluster-require-full-coverage no // 只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no 1485行

#日志路径得手动创建否则会启动失败

$ mkdir /usr/local/redis1/logs

$touch  /usr/local/redis1/logs/redis.log

#启动

$cd /usr/local/redis1/

$nohup ./bin/redis-server redis.conf &

配置文件-6380端口

配置文件-6380

直接复制redis1的配置文件 修改下即可

$cp /usr/local/redis1/redis.conf  /usr/local/redis2/redis.conf

$vim /usr/local/redis2/redis.conf  
    bind 0.0.0.0 // 测试环节,任何地址都可连接 75
    port 6380 // 修改成对应的端口号 98
    daemonize yes // 后台运行 257
    pidfile /usr/local/redis2/redis_6380.pid // pid文件 289
    logfile "/usr/local/redis2/logs/redis.log" // 日志 302
    requirepass 123456 //483行加入 连接到节点密码
    masterauth 123456 //484行  节点之间的互访访问的密码
    appendonly yes // 开启 aop 备份  1252
    appendfsync always // 每写一条 备份 一次 1281
    cluster-enabled yes // 开启 Redis Cluster 1358
    cluster-config-file nodes-6380.conf // 记录集群信息,不用手动维护,Redis Cluster 会自动维护 1393
    cluster-node-timeout 15000 // Cluster 超时时间 1399
    cluster-require-full-coverage no // 只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no   1458

#日志路径得手动创建否则会启动失败

$ mkdir /usr/local/redis1/logs

$touch  /usr/local/redis1/logs/redis.log

#启动

$cd /usr/local/redis2/

$./bin/redis-server redis.conf

查看进程是否存在

$ ps -ef | grep redis

查看端口是否存在

$ ss -ntlp | grep 6379 

$ ss -ntlp | grep 6380

 

 

#开始使用 Redis 自带集群管理工具创建集群
#创建集群,--cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。
#如果redis设置了密码,则创建集群时需要添加密码信息 -a 密码:

redis-cli --cluster create  ip+端口   ip+端口    ip+端口   ip+端口   ip+端口   ip+端口   --cluster-replicas 1 -a 123456


#看到如 [OK] All 16384 slots covered. 的提示说明集群创建成功。
#可以进入redis里面查看 随便进入一个都可以查看到集群信息

 

 

 至此集群安装完毕...  


补充

Redis占用内存大小配置

我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。

1、通过配置文件配置

通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小 ​ 
//设置Redis最大占用内存大小为100M ​ 
maxmemory 100mb ​ 
redis的配置文件不一定使用的是安装目录下面的redis.conf文件,启动redis服务的时候是可以传一个参数指定redis的配置文件的

2、通过命令修改

#Redis支持运行时通过命令动态修改内存大小
 //设置Redis最大占用内存大小为100M ​ 
127.0.0.1:6379> config set maxmemory 100mb ​ 
//获取设置的Redis能使用的最大内存大小 
127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "0" 
#如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存

Redis的内存淘汰

既然可以设置Redis最大占用内存大小,那么配置的内存就有用完的时候。那在内存用完的时候,还继续往Redis里面添加数据不就没内存可用了吗?

实际上Redis定义了几种策略用来处理这种情况:

noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)

allkeys-lru:从所有key中使用LRU算法进行淘汰

volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰

allkeys-random:从所有key中随机淘汰数据

volatile-random:从设置了过期时间的key中随机淘汰

volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰

当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误


#获取当前内存淘汰策略:

127.0.0.1:6379> config get maxmemory-policy
1) "maxmemory-policy"
2) "noeviction"


#1.通过配置文件设置淘汰策略(修改redis.conf文件):

maxmemory-policy allkeys-lru

#2.通过命令修改淘汰策略:

127.0.0.1:6379> config set maxmemory-policy allkeys-lru

猜你喜欢

转载自blog.csdn.net/weixin_48780227/article/details/127749750
今日推荐