单机Redis、哨兵和Redis Cluster的搭建


本篇文章讲述了 Redis 单机环境、主备、哨兵 Sentinel 模式以及 Redis Cluster 集群模式下的操作步骤,关于这些操作我们没必要死记硬背,只需要总结下来,下次使用直接拿出来就好。

建议当作操作手册收藏。

安装单实例 Redis

编译Redis

1.下载Redis源码包 wget https://download.redis.io/releases/redis-5.0.13.tar.gz
2.解压文件tar -zxvf redis-5.0.13.tar.gz
3.cd redis-5.0.13
4.make 编译

1.如果遇到以下报错,需要安装依赖 yum install gcc
图片

2.如果遇到以下报错

在这里插入图片描述

分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。

而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。

但是如果你又没有jemalloc 而只有 libc 当然 make 出错。所以加这么一个参数,运行如下命令:

make MALLOC=libc

此时编译完成,文件目录下已经生成可执行文件。

图片

安装Redis服务

  1. 安装编译后的文件 make install PREFIX=/usr/local/redis5
  2. 编辑环境变量 vi /etc/profile
  3. 追加如下信息
export REDIS_HOME=/usr/local/redis5
export PATH=$PATH:$REDIS_HOME/bin

4.更新配置source /etc/profile

echo $PATH检查环境变量是否正确
图片

5.cd utils/
6.安装服务./install_server.sh然后出现如下输出

[root@node1 utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]  选择启动端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 设置配置文件目录
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 设置日志目录
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 设置数据库目录
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/redis5/bin/redis-server] 设置可执行文件目录
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/redis5/bin/redis-server
Cli Executable : /usr/local/redis5/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379 复制配置文件
Installing service... 安装服务
Successfully added to chkconfig! 设置开机启动
Successfully added to runlevels 345!
Starting Redis server... 启动服务
Installation successful!

7.service redis_6379 status 检查是否安装成功ps -ef|grep redis 检查正在运行的服务

图片

配置修改

1.修改 配置信息vi /etc/redis/6379.conf (这一步可选)

daemonize no # 前台方式运行 为了方便观察
#logfile /var/log/redis_6379.log #注释掉,前台输出 为了方便观察
appendonly yes # aof同步开启

2.启动 redis-server /etc/redis/6379.conf
3.启动客户端 redis-cli -p 6379

主备安装

1.使用install_server.sh再安装两个Redis实例,使用端口号在同一机器区分 这里分别使用6379,6380,6381,并且分别启动
2.登陆客户端 redis-cli -p 6381
3.输入命令 help SLAVEOF,6380端口实例操作同理。

redis-cli -p 6381 127.0.0.1:6381>help SLAVEOF
SLAVEOF host port
     summary: Make the server a replica of another instance, or promote it as master. Deprecated starting with Redis 5. Use REPLICAOF instead.
     since: 1.0.0
     group: server

   127.0.0.1:6381> REPLICAOF 127.0.0.1 6379
   OK
   127.0.0.1:6381> 

4.设置追随6379为主 REPLICAOF 127.0.0.1 6379

图片

6381变化:

图片

6379变化:

图片

25692:S 03 Sep 2021 20:19:53.182 * REPLICAOF 127.0.0.1:6379 enabled (user request from 'id=3 addr=127.0.0.1:42336 fd=7 name= age=113 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=44 qbuf-free=32724 obl=0 oll=0 omem=0 events=r cmd=replicaof')
25692:S 03 Sep 2021 20:19:54.146 * Connecting to MASTER 127.0.0.1:6379
25692:S 03 Sep 2021 20:19:54.146 * MASTER <-> REPLICA sync started
25692:S 03 Sep 2021 20:19:54.146 * Non blocking connect for SYNC fired the event.
25692:S 03 Sep 2021 20:19:54.147 * Master replied to PING, replication can continue...
25692:S 03 Sep 2021 20:19:54.147 * Trying a partial resynchronization (request 839fc4e0817f7c98e9fa8204c53aedf661c71bf1:1).
25692:S 03 Sep 2021 20:19:54.148 * Full resync from master: 4cff4bffe3e33adcca1864de53064480eb00c200:0
25692:S 03 Sep 2021 20:19:54.148 * Discarding previously cached master state.
25692:S 03 Sep 2021 20:19:54.251 * MASTER <-> REPLICA sync: receiving 176 bytes from master
25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Flushing old data  # 会先删除本节点老数据
25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Loading DB in memory
25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Finished with success

效果如下图:

图片

如果一个节点首次追随主节点,会执行RDB同步 如果从节点挂掉,启动直接追随先前的主节点,只做增量同步 但是如果节点挂掉,启动直接追随先前的主节点,同步方式为AOF,则会做RDB全量同步。。可能是因为AOF没有记录之前追随过谁
取消追随主节点:REPLICAOF no one

哨兵模式 Sentinel

配置 sentinel

1.从redis源码目录复制官网提供的配置文件

cp /root/soft/redis-5.0.13/sentinel.conf /etc/redis/sentinel_26379.conf

2.修改配置文件

port 26379
sentinel monitor mymaster 127.0.0.1 6379 2

3.启动sentinel实例redis-server /etc/redis/sentinel_26379.conf --sentinel 以此为例启动三台

图片

图片

4.设置 sentinel 成功

验证
1.此时杀死master 6379实例

图片

2.选举6380为新的主节点

图片

3.此时重启6379节点

redis-server /etc/redis/6379.conf

图片

其中一个sentinel输出如下

11035:X 04 Sep 2021 01:41:29.685 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
11035:X 04 Sep 2021 01:41:39.675 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380

原有的主节点已经切换为备用节点

Redis Cluster

配置集群
1.查看Redis cluster相关命令

redis-cli --cluster help
[root@node1 ~]# redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas <arg>
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight <node1=w1...nodeN=wN>
                 --cluster-use-empty-masters
                 --cluster-timeout <arg>
                 --cluster-simulate
                 --cluster-pipeline <arg>
                 --cluster-threshold <arg>
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id <arg>
  del-node       host:port node_id
  call           host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from <arg>
                 --cluster-copy
                 --cluster-replace

2.分别启动每个Redis实例

Redis 本身在Utils目录下提供了单机部署 cluster demo 的util脚本,可以快速一键部署。

cd /root/soft/redis-5.0.13/utils/create-cluster
vi create-cluster
#Settings
PORT=30000
TIMEOUT=2000
NODES=6 # 节点数
REPLICAS=1 # 备用节点数 此配置为3主3从
./create-cluster start 启动实例
./create-cluster create
3.redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1

图片

4.创建集群完成,客户端链接校验redis-cli -c -p 30001

图片

如果发生了自动重定向,则表示RedisCluster使用正常

检查Redis cluster状态

1.redis-cli --cluster check 127.0.0.1:30001

图片

reshrad Redis槽位

1.redis-cli --cluster reshard 127.0.0.1:30001

2.然后按照提示操作,首先选择要移动的槽位数量,然后选择接受节点

图片

3.再选择需要从哪些节点移出槽位

图片

4.最后输入done,然后yes确定
5.检查移动后的结果 redis-cli --cluster info 127.0.0.1:30001

图片

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值