Linux Redis3集群详细步骤安装

3 篇文章 0 订阅

安装环境信息

centos7.9 、redis-3.2.5

服务器IP:192.168.15.67,192.168.15.68,192.168.15.69

redis端口:6380,6381(每台服务器两个节点)

redis密码:123456

redis官网下载:http://download.redis.io/releases/

Linux命令安装:wget http://download.redis.io/releases/redis-3.2.5.tar.gz

一、创建redis组、redis用户

# 创建用户组
$ groupadd redis
# 创建用户并设置登录初始目录
$ useradd -g redis -G redis -d /home/redis redis
# 设置用户密码(本实例密码:loan123)
$ passwd redis

二、上传redis-3.2.5.tar.gz到/home/redis/server

# 创建目录并且上传安装包
$ mkdir server
# 解压
$ tar -zxvf redis-3.2.5.tar.gz
# 删除原包
$ rm redis-3.2.5.tar.gz

三、编译、安装

$ cd redis-3.2.5

# 先安装第三方工具
$ yum install gcc
$ yum install make
$ yum install binutils
$ yum install gcc-c++
$ yum install pcre-devel
$ yum install tcl

# 编译安装
$ make MALLOC=libc 
$ make install

四、配置

在每台主机上创建2个节点,步骤如下:

1、创建redis服务节点

# 在节点1上创建
$ /home/redis/server
$ mkdir redis_cluster
$ cd redis_cluster 
$ mkdir 6380

# 复制配置文件
$ cp /home/redis/server/redis-3.2.5/redis.conf  /home/redis/server/redis_cluster/6380
$ cp /home/redis/server/redis-3.2.5/redis.conf  /home/redis/server/redis_cluster/6381

2、修改配置

vi 命令编辑redis.conf配置文件

$ vi /home/redis/server/redis_cluster/6380/redis.conf

配置信息如下:

daemonize yes # 开启守护进程
protected-mode no # 关闭保护模式
pidfile redis_6380.pid # 守护进程写入文件
port 6380 # 每个节点的端口号
cluster-enabled yes # 开启集群功能
cluster-config-file nodes-6380.conf # 集群配置文件
cluster-node-timeout 5000 # 集群节点超时时间
appendonly  yes # 开启日志记录
#bind 127.0.0.1 # 注释访问IP白名单(生产环境使用开启)
masterauth 123456 # 设置密码
requirepass 123456 # 设置密码

同样步骤配置6381(主要是端口修改)

vi编辑快捷全局替换命令:

# 替换6380为6381
:%s/6380/6381/g

五、启动节点

依次启动redis,命令如下:

# xxxx为端口号
$ cd /home/redis/server/redis_cluster/xxxx/
# 启动
$ redis-server redis.conf

六、安装集群(Redis小于5.0版本执行)

# 安装ruby
$ yum -y install ruby ruby-devel rubygems rpm-build
# 安装redis集群相关依赖
$ gem install redis
# 遇到问题,原因centos7.9默认出厂安装的是2.0.0,redis最低要求版本2.3.0需要升级
ERROR: Error installing redis: redis requires Ruby version >= 2.3.0.

# 解决方案 先安装rvm,再把ruby版本提升至2.3.0以上
# 安装curl
$ yum install curl
# 安装RVM
$ curl -L get.rvm.io | bash -s stable
$ source /usr/local/rvm/scripts/rvm
# 查看rvm库中已知的ruby版本
$ rvm list known
# 安装一个ruby版本
$ rvm install 2.6.3
# 使用一个ruby版本
$ rvm use 2.6.3
# 设置默认版本
$ ruby --version
# 卸载一个系统内置版本
$ rvm remove 2.0.0

# 重新安装redis环境
$ gem install redis

七、创建集群

1、Redis<5.0创建集群

$ cd /home/redis/server/redis-3.2.5/src
# 通过trib启动
$ ./redis-trib.rb create --replicas 1 192.168.15.67:6380 192.168.15.68:6380 192.168.15.69:6380 192.168.15.67:6381 192.168.15.68:6381 192.168.15.69:6381 -a 123456

2、Redis>5.0创建集群

# 通过自带cluster集群模式启动
$ redis-cli --cluster create 192.168.15.67:6380 192.168.15.68:6380 192.168.15.69:6380 192.168.15.67:6381 192.168.15.68:6381 192.168.15.69:6381 -a 123456 --cluster-replicas 1

注意:

  • -replicas 1 代表3主3从
  • 前3个代表3个master
  • 后3个代表3个slave
  • 通过该方式创建的带有从节点的机器不能够自己手动指定主节点

3、集群模式客户端操作

# 查看redis集群信息 < redis-5.0
$ redis-trib.rb check 10.26.25.115:6379
$ redis-trib.rb info 10.26.25.115:6379
# 查看redis集群信息 > redis-5.0
$ redis-cli -c -p 6379 -a 123456 cluster nodes

# 集群模式登录需要加 -c
$ redis-cli -c -h 172.17.0.1 -p 6391 -a 123456

# 新增修改key
set test zhangsan
# 查询key
get test
# 删除key
del test
# 退出客户端
exit

八、启停

1、集群关闭

集群关闭直接将各个节点的进程kill掉即可。

# 查看redis进程号
$ ps -ef | grep redis
# 停止进程,11516为进程号
$ kill -9 11516

2、登录服务器,切换到redis用户

# 切换redis用户,输入密码loan123
$ su – redis

3、启动redis节点

$ cd /home/redis/server/redis_cluster/6380/
# 执行命令
$ redis-server ./redis.conf

同样步骤在另外节点执行一遍。

九、重新创建集群

创建集群之后,再使用相同的集群创建命令会报错

解决:进入每个目录删掉节点信息相关文件,主要是和node相关的文件,rdb和aof文件,如需保留数据可以不用删除。

$ cd /home/redis/server/redis_cluster/6380/
# 删除集群节点配置
$ rm -rf appendonly.aof dump.rdb nodes-6380.conf nodes.conf

十、redis.conf 配置文件参数说明

1、通用配置(GENERAL)

  • daemonize no

    redis是否作为守护进程的方式运行。

  • pidfile /var/run/redis.pid

    当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

  • loglevel notice

    日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose。

  • logfile “”

    日志输出的路径及文件名称。

  • databases 16

    数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id。

2、网络相关(NETWORK)

  • bind 127.0.0.1

    绑定的主机地址,只有绑定的主机才能访问。

  • port 6379

    指定Redis监听端口,默认端口为6379,之所以选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码, MERZ取自意大利歌女Alessia Merz,来自程序员的浪漫。

  • tcp-backlog 511

    TCP三次握手后会将接受的连接放到队列中,tcp-backlog就是队列的大小。该参数受操作系统影响,在linux操作系统中,如果/proc/sys/net/core/somaxconn小于tcp-backlog,那么在redis启动时会看到如下日志,并建议将/proc/sys/net/core/somaxconn调大。

    WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

  • tcp-keepalive 300

    检测TCP连接活性的周期,默认300s,也就是每隔5分钟对它创建的TCP连接进行活性检测,防止大量的死链接占用系统资源。建议维护成60s。

  • timeout 300

    客户端空闲连接的超时时间,一旦空闲时间达到了timeout,客户端就会被关闭,如果设置为0的话就不进行检测。

3、客户端配置(CLIENTS)

  • maxclients 128

    同一时间客户端最大连接数,默认10000个连接,当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。

4、快照持久化(SNAPSHOTTING)

  • save <seconds> <changes>

    指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,Redis默认配置文件中提供了三个条件:

    • save 900 1
    • save 300 10
    • save 60 10000

    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

  • stop-writes-on-bgsave-error yes

    默认情况下,如果redis最后一次后台保存失败,redis将停止接受写操作。如果后台保存进程重新工作了,redis也将自动的允许写操作。建议改成no。

  • dir ./

    指定本地数据库存放目录

  • dbfilename dump.rdb

    指定本地数据库文件名,默认值为dump.rdb

  • rdbcompression yes

    指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,RDB会消耗CPU,但是可大幅度降低文件的体积,建议开启。

  • rdbchecksum yes

    读取和写入的时候是否支持CRC64校验,默认开启

5、安全相关(SECURITY)

  • requirepass foobared

    设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

6、AOF相关(APPEND ONLY MODE)

  • appendonly yes

    指定是否在每次更新操作后进行日志记录。Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

  • appendfilename appendonly.aof

    指定更新日志文件名,默认为appendonly.aof

  • appendfsync everysec

    指定日志刷到磁盘的机制,共有3个可选值:

    • no:由操作系统自行决定数据缓存何时刷到磁盘,相对较快。
    • always:每次更新操作后手动调用fsync()将数据写到磁盘,性能相对较慢,但是最安全。
    • everysec:每秒刷新到磁盘一次
  • no-appendfsync-on-rewrite no

    指定后台aof文件在rewrite期间会调用fsync,默认为no,表示要调用fsync。

  • auto-aof-rewrite-percentage 100

    表示redis触发aof文件rewrite的条件,默认100,表示与上次rewrite的aof文件大小相比,当aof的增长量超过上次aof文件大小的100%时就会触发backgroup rewrit。若配置为0,会禁用rewrite。

  • auto-aof-rewrite-min-size 64mb

    指定触发rewrite的aof文件大小,若aof文件小于该值,及时文件增量达到auto-aof-rewrite-percentage配置的值时,也不会触发rewrite。即这两个条件同时满足时才触发rewrite。

  • aof-load-truncated yes

    redis在执行恢复时,当最后一条指令被截断时,如果配置的yes时redis会记录日志并继续,如果设置为no时,redis会失败退出。

  • aof-rewrite-incremental-fsync yes

    AOF重写过程中,是否采用增量文件同步的策略。

7、复制相关(REPLICATION)

  • slaveof <masterip> <masterport>

    设置当本机为slav服务器时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步。

  • masterauth <master-password>

    当master服务设置了密码保护时,slav服务连接master的密码。

  • slave-serve-stale-data yes

    当slave与master失去连接之后,或者当数据正在复制传输的时候,slave可以继续接受客户端的请求,否则会返回给客户端如下信息:“SYNC with master in progress”

  • slave-read-only yes

    从库是否只读

  • repl-diskless-sync no

    全量同步时是否先把快照存于本地,如果存于本地会占用磁盘IO,但是可以服用RDB文件,如果不存于磁盘就会直接把RDB文件发给从库,复用性降低。从库较少时建议设置为yes,采用不存储磁盘的方式。

  • repl-diskless-sync-delay 5

    当repl-diskless-sync参数为yes时,采用不存储磁盘时,master等待一定时间,等待更多的从库要求增量复制,然后进行并行复制。

  • repl-disable-tcp-nodelay no

    向从库传输数据时,是否禁用socket的TCP_NODELAY选项。若配置为yes则禁用TCP_NODELAY,则TCP协议栈会合并小包统一发送,这样可以节省带宽,但是会造成从库的延迟。若配置为no,表明启用TCP_NODELAY,则TCP协议栈会实时传输数据,减少了从库的延迟,但是需要更大的带宽。建议配置为no以减少从库的延迟。

  • slave-priority 100

    从库的优先级。集群模式下,优先级越小越容易被选为主库,但是若配置为0,那么该slave永远不会成为master。

8、内存管理(MEMORY MANAGEMENT)

  • maxmemory <bytes>

    指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会根据maxmemory-policy清除策略先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再使用SET、LPUSH进行写入操作,但仍然可以进行GET操作。

  • maxmemory-policy提供了8种清除策略:

    • valatie-lru:从所有最近最少访问数据范围内查找设置了过期时间的数据进行淘汰。
    • allkeys-lru:从所有数据范围内查找最近最少使用的数据进行淘汰。
    • volatile-random:从设置了过期时间的数据范围内随机选择key进行删除。
    • allkeys-random:从所有数据范围内随机选择key进行删除。
    • Noevction:不执行任何淘汰策略,当达到内存限制后会报错。默认为此策略
    • volatile-ttl:从设置了过期时间的数据范围内挑选将要过期的数据进行淘汰。
    • Redis4.X版本开始支持LFU算法。
    • valatie-lfu:在设置了过期时间的键空间中,移除使用次数最少的key。
    • allkeys-lfu:在所有键空间范围内,移除使用次数最少的key。

9、慢日志(SLOW LOG)

  • slowlog-log-slower-than 10000

    慢查询被记录的阀值(单位微秒)

  • slowlog-max-len 128

    最多记录慢查询的条数。

10、集群参数(REDIS CLUSTER)

  • cluster-enabled yes

    开启集群功能

  • cluster-config-file nodes-6379.conf

    集群配置文件

  • cluster-node-timeout 15000

    集群节点超时时间(单位毫秒)

  • cluster-migration-barrier 1

    主从节点切换需要的最少从节点个数。

  • cluster-require-full-coverage yes

    集群是否需要所有的slot都分配给在线节点才能正常访问。

  • repl-ping-slave-period 10

    从服务器每隔一定时间向服务器发送ping探测,时间间隔由该参数配置。

  • cluster-slave-validity-factor 10

    从节点有效判断因子,当从节点与主节点最后通信时间超过(((cluster-node-timeout) * (slave-validity-factor)) + (repl-ping-slave-period))时,对应的从节点不具备故障转移资格,防止断线时间过长的从节点进行故障转移。设置为0表示从节点永不过期。

参考:

Linux Centos7下Redis6详细安装-单机

Redis部署及参数详解(吐血整理,建议收藏)

Redis 5.0之后版本的高可用集群搭建

Centos7.6部署redis6.0.8集群(redis cluster模式)

centos7 搭建redis6.0.6集群(3主3从)

linux下redis启动/关闭/重启服务配置

Redis集群密码设置

redis cluster(2)- redis集群常用命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值