实验:多实例节点 10.220.5.65(三个实例)
高可用节点:10.220.5.67
创建目录,将三个实例文件都放在这个目录中
[root@65 ~]# yum install redis -y
[root@65~]# mkdir /redis/{6379,6380,6381} -pv
查看目录
[root@65 ~]# ls /redis 6379 6380 6381 <<<三个实例所对应的端口号,为了方便理解这里每个文件名和对应的端口号一致
将/etc/redis.conf文件复制到每一个目录下
[root@65DRslave 6381]# cp /etc/redis.conf /redis/6379 [root@65DRslave 6381]# cp /etc/redis.conf /redis/63780 [root@65DRslave 6381]# cp /etc/redis.conf /redis/63781
修改每一个配置文件
[root@65DRslave 6381]# cp /etc/redis.conf /redis/6379
80 protected-mode yes 84 port 6379 128 daemonize yes <<<启用后台运行模式 150 pidfile /redis/6379/redis_6379.pid 163 logfile /redis/6379/redis.log <<<日志文件 200 # save "" 201 202 save 900 1 203 save 300 10 204 save 60 10000 247 dir /redis/6379
同理剩下两个配置文件和上边类似,只需该对应端口即可
启动实例
[root@65 ~]# redis-server /redis/6379/redis.conf [root@65 ~]# redis-server /redis/6380/redis.conf [root@65~]# redis-server /redis/6381/redis.conf
[root@65DRslave ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 12 128 *:6379 *:* LISTEN 0 128 10.220.5.65:6380 *:* LISTEN 0 128 10.220.5.65:6381 *:*
打开多个终端,分别登陆实例
[root@65 ~]# redis-cli -h 10.220.5.65 -p 6379
10.220.5.65:6379> [root@65 ~]# redis-cli -h 10.220.5.65 -p 6380
10.220.5.65:6380> [root@65 ~]# redis-cli -h 10.220.5.65 -p 6381
10.220.5.65:6381>
主从复制,让6381作为主,6379 和6380作为从
10.220.5.65:6380> slaveof 10.220.5.65 6381
OK
10.220.5.65:6379> slaveof 10.220.5.65 6381 OK
在主端创建数据,在从节点查看是否被复制了过来
10.220.5.65:6381> set age 29 OK <<<主端
10.220.5.65:6379> get age "29" <<<从端,说明已经复制
10.220.5.65:6380> get age "29" <<<从端,说明已经复制
主从复制已经做好,下面做redis的高可用
redis的高可用是用redis-sentinel,默认在redis中,需要修改配置文件
[root@67 ~]# vim /etc/redis-sentinel.conf
17 protected-mode no 98 sentinel monitor mymaster 10.220.5.65 6381 1 131 sentinel config-epoch mymaster 1
启动redis-sentinel
[root@67 ~]# systemctl start redis-sentinel <<<端口号为 26379
[root@67 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:26379 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::26379 :::* LISTEN 0 128 :::22 :::*
登录redistribute-sentinel,并查看主从节点信息
[root@67 ~]# redis-cli -h 10.220.5.67 -p 26379 10.220.5.67:26379>sentinel masters <<<主节点信息
1) 1) "name"
2) "mymaster"
3) "ip"
4) "10.220.5.65"
5) "port"
6) "6381"
.......
10.220.5.67:26379>sentinel slaves master <<<从节点信息
1) 1) "name"
2) "10.220.5.65:6380"
3) "ip"
4) "10.220.5.65"
5) "port"
6) "6380"
....
2) 1) "name"
2) "10.220.5.65:6379"
3) "ip"
4) "10.220.5.65"
5) "port"
6) "6379"
....
将主节点停掉,再看效果
[root@65DRslave ~]# ps aux |grep redis
redis 1169 0.3 0.7 142952 7320 ? Ssl 16:07 0:11 /usr/bin/redis-server 10.220.5.65:6379
root 1255 0.0 0.0 107988 612 pts/2 T 16:12 0:00 tail -f /redis/6381/redis.log
root 1288 0.3 0.7 142952 7504 ? Ssl 16:18 0:10 redis-server 10.220.5.65:6381
root 1298 0.0 0.5 22128 5212 pts/1 S+ 16:19 0:00 redis-cli -h 10.220.5.65 -p 6379
root 1338 0.3 0.5 142952 5440 ? Ssl 17:04 0:00 redis-server 10.220.5.65:6380
root 1344 0.0 0.5 22124 5128 pts/0 S+ 17:04 0:00 redis-cli -h 10.220.5.65 -p 6380
root 1346 0.0 0.0 112704 956 pts/2 R+ 17:04 0:00 grep --color=auto redis
[root@65DRslave ~]# kill -9 1288
在redis-sentinel端再次查看
10.220.5.67:26379> sentinel masters 1) 1) "name" 2) "mymaster" 3) "ip" 4) "10.220.5.65" 5) "port" 6) "6379" <<<此次主节点变成了 6379 ,这就是redis的高可用
查看从节点信息
10.220.5.67:26379> sentinel slaves mymaster 1) 1) "name" 2) "10.220.5.65:6381" 3) "ip" 4) "10.220.5.65" 5) "port" 6) "6381"
10) "s_down,slave,disconnected" <<<6381停掉后变成了从,状态是未连接 2) 1) "name" 2) "10.220.5.65:6380" 3) "ip" 4) "10.220.5.65" 5) "port" 6) "6380"