Redis

Redis

修改母盘

1G 一个CPU

10

20

30

源码安装

[root@redis-node2 ~]# tar zxf redis-7.4.0.tar.gz 
[root@redis-node2 ~]# cd redis-7.4.0/
[root@redis-node2 redis-7.4.0]# dnf install make gcc initscripts -y
[root@redis-node2 redis-7.4.0]# make && make install

如果出现问题,直接删除目录,重新解压编译

[root@redis-node1 ~]# ls
anaconda-ks.cfg  Downloads  Public              Templates
Desktop          Music      redis-7.4.0         Videos
Documents        Pictures   redis-7.4.0.tar.gz
[root@redis-node1 ~]# rm -rf redis-7.4.0
​

修改配置文件

[root@redis-node1 utils]# cd /root/redis-7.4.0/utils/
[root@redis-node2 utils]#  vim install_server.sh
#bail if this system is managed by systemd
_pid_1_exe="$(readlink -f /proc/1/exe)"
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
#       echo "This systems seems to use systemd."
#       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
#       exit 1
#fi
[root@redis-node1 utils]# ./install_server.sh 
#全部空格,默认
[root@redis-node1 utils]#  vim /etc/redis/6379.conf
bind * -::* 
protected-mode no
[root@redis-node1 ~]# /etc/init.d/redis_6379 restart
[root@redis-node1 ~]# redis-cli
127.0.0.1:6379> 
127.0.0.1:6379> set key1 value
OK
127.0.0.1:6379> get key1
"value"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get key1
(nil)
127.0.0.1:6379[1]> 

拷贝redis

提前下载

[root@redis-node2&3 ~]# dnf install initscripts -y
[root@redis-node2&3 ~]# dnf install rsync -y
[root@redis-node1 ~]# scp -r redis-7.4.0 root@172.25.254.20:/root
[root@redis-node1 ~]# scp -r redis-7.4.0 root@172.25.254.30:/root
​
[root@redis-node3 ~]# cd redis-7.4.0/
[root@redis-node3 redis-7.4.0]# cd utils/
[root@redis-node3 utils]# ./install_server.sh 
[root@redis-node3 utils]# vim /etc/redis/6379.conf
bind * -::* 
protected-mode no
[root@redis-node3 utils]# /etc/init.d/redis_6379 restart

主从复制

slave修改配置文件

20 30

[root@redis-node3 ~]# vim /etc/redis/6379.conf 
protected-mode no
replicaof 172.25.254.10 6379
[root@redis-node2 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server..

主测试

主从同步原理

要补课

哨兵

监管

master
[root@redis-node1 ~]# cd redis-7.4.0/
[root@redis-node1 redis-7.4.0]# cp sentinel.conf /etc/redis/
[root@redis-node1 redis-7.4.0]# vim /etc/redis/sentinel.conf
protected-mode no #关闭保护模式
port 26379 #监听端口
daemonize no #进入不打如后台
pidfile /var/run/redis-sentinel.pid #sentinel进程pid文件
loglevel notice #日志级别
92 sentinel monitor mymaster 172.25.254.10 6379 2 #创建sentinel监控监控master主机,2表示必须得到2票
133 sentinel down-after-milliseconds mymaster 10000 #master中断时长,10秒连不上视为master下线
sentinel parallel-syncs mymaster 1 #发生故障转移后,同时开始同步新master数据的slave数量
sentinel failover-timeout mymaster 180000 #整个故障切换的超时时间为3分钟
[root@redis-node1 redis-7.4.0]# redis-sentinel /etc/redis/sentinel.conf
sentinel monitor mymaster 172.25.254.10 6379 2
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 1
# Default is 3 minutes.
sentinel failover-timeout mymaster 180000
复制
[root@redis-node1 ~]# scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/sentinel.conf
[root@redis-node1 ~]# scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/sentinel.conf
备份

10 20 30

哨兵模式会更改配置模式

[root@redis-node3 redis]# cp sentinel.conf sentinel.conf.bak
启用哨兵
[root@redis-node1 redis]# redis-sentinel /etc/redis/sentinel.conf
[root@redis-node1 redis]# vim sentinel.conf
检测20

恢复故障

在后台运行哨兵
[root@redis-node1 redis]# vim sentinel.conf
# daemonized.
daemonize yes
存在的问题

当master挂掉的时候,可能还会有数据传入,所以这个时候就得禁止写入数据

#临时
[root@redis-node2 redis]# redis-cli
127.0.0.1:6379>  CONFIG GET min-slaves-to-write
1) "min-slaves-to-write"
2) "0"
127.0.0.1:6379>  CONFIG set min-slaves-to-write 2
OK
127.0.0.1:6379> CONFIG GET min-slaves-to-write
1) "min-slaves-to-write"
2) "2"
#最少slave必须为2,否则禁止写入
#永久更改
[root@redis-node2 redis]# vim sentinel.conf
# protected from the outside world via firewalling or other means.
protected-mode no
min-slaves-to-write 2

下午的最后一个实验

卸载redis

进入目录 停止服务

110

120

130

redis cluster

卸载

[root@redis-node1 ~]# cd redis-7.4.0/
[root@redis-node1 redis-7.4.0]# killall -9 redis-server
[root@redis-node1 redis-7.4.0]# make uninstall 
cd src && make uninstall
make[1]: Entering directory '/root/redis-7.4.0/src'
rm -f /usr/local/bin/{redis-server,redis-benchmark,redis-cli,redis-check-rdb,redis-check-aof,redis-sentinel}
make[1]: Leaving directory '/root/redis-7.4.0/src'

环境主机

10 20 30

110 120 130

编辑配置文件
vim /etc/redis/redis.conf
bind * -::*
cluster-enabled yes
masterauth "123456"
requirepass "123456"
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
[root@redis-node1 ~]# systemctl restart redis.service 
[root@redis-node1 ~]# netstat -antlupe | grep redi
tcp        0      0 0.0.0.0:26379           0.0.0.0:*               LISTEN      0          74276      38409/redis-sentine 
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      978        85408      39314/redis-server  
tcp        0      0 172.25.254.10:54654     172.25.254.10:6379      ESTABLISHED 0          85436      38409/redis-sentine 
tcp        0      0 172.25.254.10:6379      172.25.254.10:54654     ESTABLISHED 978        85440      39314/redis-server  
tcp6       0      0 :::26379                :::*                    LISTEN      0          74277      38409/redis-sentine 
tcp6       0      0 :::6379                 :::*                    LISTEN      978        85409      39314/redis-server  
[root@redis-node1 ~]# for i in 20 30 110 120 130 ; do scp /etc/redis/redis.conf root@172.25.254.$i:/etc/redis/redis.conf; done
创建redis-cluster
创建之前一定不能写入数据!
[root@redis-node1 ~]# redis-cli --cluster create -a '123456' 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379--cluster-replicas 1
#yes

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379
#查看集群节点信息

[root@redis-node1 ~]# redis-cli -a 123456 --cluster info 172.25.254.10:6379
#查看集群信息

分布式集群,内容互相是看不见的

集群扩容

50 150

增加集群

#添加master
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node
172.25.254.40:6379 172.25.254.10:6379

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379
#查看集群节点信息

#分配槽位
[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard
172.25.254.20:6379
4096
ID (M 50)
all
yes

#添加salve7.7 clsuter集群维护添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除。
[root@redis-master1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.20:6379 --cluster-slave --cluster-master-id 009571cb206a89afa6658b60b2d403136056ac09

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.20:6379

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.150:6379
集群维护
#移除要下线主机的哈希槽位
[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.20:6379

#删除master
[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node
172.25.254.120:6379 d458f34fa900d83212c021dc1e65396e490b5495

[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node
172.25.254.10:6379 5ab2e93f4f0783983676f7bd118efaacfb202bd1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值