一、安装redis
可以到官网进行下载,这里我下载的是最新版的redis6.2.6版本
wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar xvf redis-6.2.6.tar.gz cd redis-6.2.6 make cd src make install
安装编译完成后,执行下面命令
cp redis.conf /etc/ vim /etc/redis.conf #搜索 daemonize no 这⾥把no 修改为yes,这样可以让redis后台运⾏ [root@ecs-3950 redis-6.2.6]# redis-server /etc/redis.conf [root@ecs-3950 redis-6.2.6]# redis-cli 127.0.0.1:6379>
二、redis集群部署
集群环境
系统版本:linux centerOS 7.6
Redis版本:6.2.6
Redis集群的⽅式:主从集群
主节点服务器 地址 192.168.0.10
从节点服务器 地址 192.168.0.11, 192.168.0.12
主从集群的特点
redis集群有下⾯三种模式
1.主从模式
2.Sentinel模式
3.Cluster模式
主从集群有以下特点:
主数据库可以进⾏读写操作,当读写操作导致数据变化时会⾃动将数据同步给从数据库
从数据库⼀般都是只读的,并且接收主数据库同步过来的数据
⼀个master可以拥有多个slave,但是⼀个slave只能对应⼀个master
slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来
master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务
master挂了以后,不会在slave节点中重新选⼀个master
主从集群的部署
主节点上⾯修改 /etc/redis.conf,修改下⾯这些参数
mkdir -p /data/redis vi /etc/redis.conf bind 192.168.0.10 #监听ip,多个ip⽤空格分隔 daemonize yes #允许后台启动 logfile "/root/redis-6.2.6/redis.log" #⽇志路径 dir /data/redis #数据库备份⽂件存放⽬录 masterauth 123456 #slave连接master密码,master可省略 requirepass 123456 #设置master连接密码,slave可省略 appendonly yes #在/data/redis/⽬录⽣成appendonly.aof⽂件,将每⼀次写操作请求 都追加到appendonly.aof ⽂件中
从节点192.168.0.11上面修改配置文件
mkdir -p /data/redis vi /etc/redis.conf bind 192.168.0.11 #监听ip,多个ip⽤空格分隔 daemonize yes #允许后台启动 logfile "/root/redis-6.2.6/redis.log" #⽇志路径 dir /data/redis #数据库备份⽂件存放⽬录 replicaof 192.168.0.10 6379 masterauth 123456 #slave连接master密码,master可省略 requirepass 123456 #设置master连接密码,slave可省略 appendonly yes
从节点192.168.0.12上面修改配置文件
mkdir -p /data/redis vi /etc/redis.conf bind 192.168.0.12 #监听ip,多个ip⽤空格分隔 daemonize yes #允许后台启动 logfile "/root/redis-6.2.6/redis.log" #⽇志路径 dir /data/redis #数据库备份⽂件存放⽬录 replicaof 192.168.0.10 6379 masterauth 123456 #slave连接master密码,master可省略 requirepass 123456 #设置master连接密码,slave可省略 appendonly yes
4.主从集群的验证
(1)重启redis
killall redis-server
(2)集群状态查看
在主节点上查看
[root@ecs-f4f6-0001 redis]# redis-server /etc/redis.conf [root@ecs-f4f6-0001 redis]# redis-cli -h 192.168.0.10 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe 192.168.0.10:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=192.168.0.11,port=6379,state=online,offset=210,lag=0 slave1:ip=192.168.0.12,port=6379,state=online,offset=210,lag=0 master_failover_state:no-failover master_replid:31893062e1e498918c10f5e0e97c0cf485cef75a master_replid2:0000000000000000000000000000000000000000 master_repl_offset:210 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:210
在从节点上查看
从节点192.168.0.11上数据显示
[root@ecs-f4f6-0002 ~]# cd redis-6.2.6 [root@ecs-f4f6-0002 redis-6.2.6]# redis-server /etc/redis.conf [root@ecs-f4f6-0002 redis-6.2.6]# redis-cli -h 192.168.0.11 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.0.11:6379> info replication # Replication role:slave master_host:192.168.0.10 master_port:6379 master_link_status:up master_last_io_seconds_ago:8 master_sync_in_progress:0 slave_read_repl_offset:280 slave_repl_offset:280 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:c4eb5428b1c29979ee40bd68ced4820339fc3faa master_replid2:0000000000000000000000000000000000000000 master_repl_offset:280 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:280
(数据演示)
主节点上操作写⼊数据 192.168.0.10:6379> keys * (empty array) 192.168.0.10:6379> set key1 100 OK 192.168.0.10:6379> set key2 200 OK 192.168.0.10:6379> keys * 1) "key2" 2) "key1" 从节点上操作数据显示 192.168.0.11:6379> keys * 1) "key1" 2) "key2" 192.168.0.11:6379> get key1 "100" 192.168.0.11:6379> set key3 111 (error) READONLY You can't write against a read only replica. 192.168.0.12:6379> keys * 1) "key1" 2) "key2" 192.168.0.12:6379> get key1 "100" 192.168.0.12:6379> get key2 "200" 192.168.0.12:6379> set key3 111 (error) READONLY You can't write against a read only replica.
可以看到,在master节点写⼊的数据,很快就同步到slave节点上,⽽且在slave节点上⽆法写⼊数据。 ⾄此 redis的 主从集群就已经完成。