Featured image of post Redis安装和高可用集群搭建

Redis安装和高可用集群搭建

# Redis安装和高可用集群搭建

# 安装步骤

官网下载:https://redis.io/download

# CentOS 7

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装 GCC GC++
yum -y install gcc
yum -y install gcc-c++
yum -y install tcl

# 下载,解压至/usr/local,切换目录
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz -C /usr/local
cd /usr/local
cd redis-5.0.5

# 编译安装
make 
make PREFIX=/usr/local/redis-cluster install

# Ubunt 18.04

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 安装 GCC GC++
sudo apt update
sudo apt install make
sudo apt install tcl
sudo apt install gcc

# 下载,解压至/usr/local,切换目录
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz -C /usr/local
cd /usr/local
cd redis-5.0.5

# 编译安装
make 
make PREFIX=/usr/local/redis-cluster install
  • 复制配置文件到 /usr/local/redis-cluster/bin 目录,修改的 redis.conf 配置
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# ip绑定
# bind 192.168.137.200

# 是否限制ip
protected-mode no

# 是否需要密码
# requirepass xxxxxx

# 启动端口
port 6379

# 后台启动
daemonize yes

# 是否开启持久化
# save "" 

stop-writes-on-bgsave-error yes

# 数据目录
dir ../6379/data/

replica-read-only yes

# 最大内存限制
# maxmemory <bytes>

# 内存淘汰策略
# 当超出最大内存时触发
# volatile-lru: 仅限设置了 expire 的部分; 优先删除最近最少使用(Least recently used ,LRU) 的 key。
# allkeys-lru -> 优先删除最近最少使用
# volatile-lfu -> 仅限设置了 expire 的部分; 优先删除最近使用频率最低(Least Frequently Used)
# allkeys-lfu -> 优先删除最近使用频率最低
# volatile-random: 仅限设置了 expire 的部分; 随机删除一部分 key。
# allkeys-random: 所有key通用; 随机删除一部分 key。
# volatile-ttl: 仅限设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key
# noeviction -> 不删除策略, 超出最大内存限制直接返回错误信息。
#
# LRU LFU TTL 都是近似时间,非精确值
maxmemory-policy volatile-lru

appendonly yes
# 是否开启集群
cluster-enabled yes

cluster-config-file nodes-6379.conf
  • 开始运行
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 切换到目录
cd /usr/local/redis-cluster/bin

# 指定配置文件启动
 ./redis-server ../6379/redis.conf
 
#验证启动是否成功
ps -ef | grep redis

# 进入redis客户端
 ./redis-cli -p 6379
  • 退出服务

    1
    2
    3
    4
    5
    
    kill redis-server
    
    kill 进程号
    
    src/redis-cli shutdown
    

# 集群搭建

最低 3主 或者 3主3从

按照生产3台机器部署,每台2个实例。 可以把上面redis.conf 文件复制一份,涉及端口 6379 的地方修改端口为6380。另外2台同样操作。

举例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 192.168.137.101
cd /usr/local/redis-cluster/bin
./redis-server ../6379/redis.conf
./redis-server ../6380/redis.conf

# 192.168.137.200
cd /usr/local/redis-cluster/bin
./redis-server ../6379/redis.conf
./redis-server ../6380/redis.conf

# 192.168.137.201
cd /usr/local/redis-cluster/bin
./redis-server ../6379/redis.conf
./redis-server ../6380/redis.conf
  • 用 redis-cli 创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)

    1
    2
    
    cd /usr/local/redis-cluster/bin/
    ./redis-cli  --cluster create --cluster-replicas 1 192.168.137.101:6379 192.168.137.101:6380 192.168.137.200:6379 192.168.137.200:6380 192.168.137.201:6379 192.168.137.201:6380
    
  • 如果之前redis集群给全部停掉了,这时候再建立集群时,会出现如下的情况

    1
    
    [ERR] Node 192.168.5.100:8001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    

这个时候需要将每个节点下的这几个文件给删掉(测试情况删掉,实际应用不要删,这是备份文件以及节点信息,按实际的情况进行处理):

1
appendonly.aof  dump.rdb  nodes-8001.conf

# 集群连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
cd /usr/local/redis-cluster/bin
./redis-cli -c -h 192.168.137.101 -p 6379

# 查看集群信息
cluster info

# 查看节点信息
cluster nodes

# 逐个进行关闭
./redis-cli -a xxx -c -h 192.168.137.101 -p 6379 shutdown
./redis-cli -a xxx -c -h 192.168.137.101 -p 6380 shutdown
./redis-cli -a xxx -c -h 192.168.137.200 -p 6379 shutdown
./redis-cli -a xxx -c -h 192.168.137.200 -p 6380 shutdown
./redis-cli -a xxx -c -h 192.168.137.201 -p 6379 shutdown
./redis-cli -a xxx -c -h 192.168.137.201 -p 6380 shutdown
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计