大佬教程收集整理的这篇文章主要介绍了【❤️万字长文总结❤️】一篇学会Redis高可用✔集群✔搭建详细教程,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
大家好c;我是Lex 喜欢欺负超人那个Lex
擅长领域:python开发、网络安全渗透、Windows域控Exchange架构
今日重点:今天总结一下redis集群高可用的搭建流程
【惊喜推荐+优质资源 见 文末c;建议收藏!!!】
建议:收藏+实操c;一定要自己来一遍哦。
http://distfiles.macports.org/redis/redis-5.0.7.tar.gz
#解压redis
[root@open-falcon mnt]# tar -zxvf redis-5.0.7.tar.gz
#解压得到包如下
[root@open-falcon mnt]# cd redis-5.0.7
#包内文件如下
[root@open-falcon redis-5.0.7]# ls
00-RELEASENOTES CONTRIBUTinG deps Makefile README.md runtest runtest-moduleapi senTinel.conf tests
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-senTinel src utils
[root@open-falcon redis-5.0.7]#
#进入解压包
[root@open-falcon redis-5.0.7]# cd redis-5.0.7
#编译&安装
[root@open-falcon redis-5.0.7]# make && make install
redis高可用集群c;一般选三台服务器:这样c;我们在一台主节点挂了之后c;另外两台可以选举其中一台担任主节点master的角色。
①slave节点配置从master节点同步数据
②哨兵senTinel@R_179_10772@机制:每个redis节点搭建一个监控哨兵c;当redis的master节点挂掉之后:三个哨兵选举一个slave节点 成为master节点
#部署在同一台服务器上,使用3个端口对外提供服务
主节点master
1台
redis服务 192.168.154.145 6379
senTinel哨兵 192.168.154.145 26379
从节点slave
2台
redis服务 192.168.154.145 27001
senTinel哨兵 192.168.154.145 27002
由于现场没有三台服务器c;我们就在一台服务器上c;使用3个端口c;来给他搭一个"伪集群":
何为"伪集群"呢?
"伪集群" 架构与真正集群完全一样c;@R_179_10772@、高可用都可以。
只是搭建在一台服务器上c;使用3个端口对外提供服务。
生产环境下c;集群环境还是需要使用3台不同的服务器c;从而保证高可用。这里只是节约资源、方便搭建。
完整配置及步骤如下:
1、创建主节点工作目录 redis-6379
mkdir -p /usr/local/redis-6379
2、将配置文件拷贝到工作目录下
cp redis-5.0.7/redis.conf /usr/local/redis-6379
3、主节点 6379 端口配置
#打开主节点redis.conf
vim /usr/local/redis-6379/redis.conf
4、修改如下内容:左侧为修改的行数,方便大家查找
69 bind 0.0.0.0
92 port 6379
136 daemonize yes
158 pidfile /var/run/redis_6379.pid
171 logfile "/usr/local/redis-6379/redis-6379.log"
#默认配置不用修改
218 save 900 1
219 save 300 10
220 save 60 10000
#全量备份文件名
253 dbfilename redis-6379.rdb
#指定路径名
263 dir /usr/local/redis-6379
#设置redis密码
509 requirepass 123456
#开启增量备份
701 appendonly yes
705 appendfilename "appendonly-6379.aof"
注意c;从节点与主节点配置的区别主要在两个地方
①配置主节点:replicaof 192.168.154.145 6379
②配置主节点的登录密码masterauth 123456
完整配置及步骤如下:
1、创建从节点工作目录 redis-7001 和 redis-7002
mkdir -p /usr/local/redis-7001
mkdir -p /usr/local/redis-7002
2、将配置文件拷贝到工作目录下
cp redis-5.0.7/redis.conf /usr/local/redis-7001
cp redis-5.0.7/redis.conf /usr/local/redis-7002
3、从节点 7001 / 7002 端口配置
#分别打开从节点redis.conf
vim /usr/local/redis-7001/redis.conf
vim /usr/local/redis-7002/redis.conf
4、7001 从节点配置c;左侧为修改的行数,方便大家查找
69 bind 0.0.0.0
92 port 7001
136 daemonize yes
158 pidfile /var/run/redis_7001.pid
171 logfile "/usr/local/redis-7001/redis-7001.log"
#默认配置不用修改
218 save 900 1
219 save 300 10
220 save 60 10000
#全量备份文件名
253 dbfilename redis-7001.rdb
#指定路径名
263 dir /usr/local/redis-7001
#设置主节点 地址端口+主节点连接密码
286 replicaof 192.168.154.145 6379
293 masterauth 123456
#设置redis密码
509 requirepass 123456
#开启增量备份
701 appendonly yes
705 appendfilename "appendonly-7001.aof"
5、7002 从节点配置c;左侧为修改的行数,方便大家查找
69 bind 0.0.0.0
92 port 7002
136 daemonize yes
158 pidfile /var/run/redis_7002.pid
171 logfile "/usr/local/redis-7002/redis-7002.log"
#默认配置不用修改
218 save 900 1
219 save 300 10
220 save 60 10000
#全量备份文件名
253 dbfilename redis-7002.rdb
#指定路径名
263 dir /usr/local/redis-7002
#设置主节点 地址端口+主节点连接密码
286 replicaof 192.168.154.145 6379
293 masterauth 123456
#设置redis密码
509 requirepass 123456
#开启增量备份
701 appendonly yes
705 appendfilename "appendonly-7002.aof"
主节点哨兵:
6379端口redis主服务c;哨兵默认端口为26379
从节点哨兵:
7001端口redis服务c;哨兵使用27001端口
7002端口redis服务c;哨兵使用27002端口
为了方便管理c;我们把哨兵工作目录分别建在对应的redis工作目录下
注意:
①配置master的地址及命名(mymaster为集群名称):senTinel monitor mymaster 192.168.154.145 6379 2
②配置连接redis主节点的密码 senTinel auth-pass mymaster 123456
③日志目录一定要创建c;因为出问题c;方便查找原因。 logfile "/usr/local/redis-6379/senTinel/redis-senTinel.log"
1、创建主节点 senTinel工作目录
mkdir -p /usr/local/redis-6379/senTinel/
2、将配置文件拷贝到senTinel工作目录下
cp redis-5.0.7/senTinel.conf /usr/local/redis-6379/senTinel/
3、修改配置文件 左侧为修改的行数,方便大家查找
vim /usr/local/redis-6379/senTinel/senTinel.conf
#配置哨兵端口
21 port 26379
#配置进程id存储地址
32 pidfile "/usr/local/redis-6379/redis-senTinel-26379.pid"
#配置log路径
37 logfile "/usr/local/redis-6379/senTinel/redis-senTinel.log"
#配置哨兵工作目录
64 dir "/usr/local/redis-6379/senTinel"
#配置监控的redis主节点
112 senTinel monitor mymaster 192.168.154.145 6379 2
#配置主节点登录密码
120 senTinel auth-pass mymaster 123456
①从节点的配置c;除了工作目录不同及端口c;其余与主节点完全一致
1、创建从节点 senTinel工作目录
mkdir -p /usr/local/redis-7001/senTinel/
mkdir -p /usr/local/redis-7002/senTinel/
2、将配置文件拷贝到senTinel工作目录下
cp redis-5.0.7/senTinel.conf /usr/local/redis-7001/senTinel/
cp redis-5.0.7/senTinel.conf /usr/local/redis-7002/senTinel/
3、分别修改slave节点 哨兵配置文件
vim /usr/local/redis-7001/senTinel/senTinel.conf
vim /usr/local/redis-7002/senTinel/senTinel.conf
4、27001节点哨兵的配置 左侧为修改的行数,方便大家查找
#配置哨兵端口
21 port 27001
#配置进程id存储地址
32 pidfile "/usr/local/redis-7001/redis-senTinel-27001.pid"
#配置log路径
37 logfile "/usr/local/redis-7001/senTinel/redis-senTinel.log"
#配置哨兵工作目录
64 dir "/usr/local/redis-7001/senTinel"
#配置监控的redis主节点
112 senTinel monitor mymaster 192.168.154.145 6379 2
#配置主节点登录密码
120 senTinel auth-pass mymaster 123456
5、27002哨兵节点的配置 左侧为修改的行数,方便大家查找
#配置哨兵端口
21 port 27002
#配置进程id存储地址
32 pidfile "/usr/local/redis-7002/redis-senTinel-27002.pid"
#配置log路径
37 logfile "/usr/local/redis-7002/senTinel/redis-senTinel.log"
#配置哨兵工作目录
64 dir "/usr/local/redis-7002/senTinel"
#配置监控的redis主节点
112 senTinel monitor mymaster 192.168.154.145 6379 2
#配置主节点登录密码
120 senTinel auth-pass mymaster 123456
到此全部配置完成。
#分别启动三个节点的redis服务
[root@mail ~]# redis-server /usr/local/redis-6379/redis.conf
[root@mail ~]# redis-server /usr/local/redis-7001/redis.conf
[root@mail ~]# redis-server /usr/local/redis-7002/redis.conf
#启动时c;根据配置文件启动
[root@mail ~]# redis-senTinel /usr/local/redis-6379/senTinel/senTinel.conf
[root@mail ~]# redis-senTinel /usr/local/redis-7001/senTinel/senTinel.conf
[root@mail ~]# redis-senTinel /usr/local/redis-7002/senTinel/senTinel.conf
#如下图:三个redis服务+三个哨兵监控 全部启动成功
[root@mail ~]# ps aux|grep redis
root 50845 0.0 0.1 158068 3904 ? Ssl 07:50 0:42 redis-server 0.0.0.0:6379
root 50166 0.0 0.1 161652 3768 ? Ssl 07:39 0:43 redis-server 0.0.0.0:7001
root 50173 0.1 0.2 161652 4884 ? Ssl 07:40 0:53 redis-server 0.0.0.0:7002
root 50370 0.1 0.1 152436 3692 ? Ssl 07:43 1:14 redis-senTinel *:26379 [senTinel]
root 50375 0.1 0.0 152436 1748 ? Ssl 07:43 1:15 redis-senTinel *:27001 [senTinel]
root 50431 0.1 0.0 152436 1712 ? Ssl 07:43 1:14 redis-senTinel *:27002 [senTinel]
测试目标:master主节点 写入/修改/删除数据c;slave从节点会自动同步master的数据操作记录。
① redis-cli链接master主节点c;写入age和name 两个数据
#链接redis,设置两个值c;如下
[root@mail ~]# redis-cli -a 123456 -p 6379
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
127.0.0.1:6379> set age 25
OK
127.0.0.1:6379> set name lex
OK
② 登录slave从节点查看
#登录slave从节点
[root@mail ~]# redis-cli -a 123456 -p 7001
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
#查看所有数据
127.0.0.1:7001> keys *
1) "age"
2) "name"
#查看age数据
127.0.0.1:7001> get age
"25"
#尝试修改数据
127.0.0.1:7001> set age 30
(error) READONLY You can't write against a read only replica.
#修改失败c;slave从节点 数据只读
① 链接哨兵:查看master节点和slave节点的分配情况
② 链接命令:redis-cli -a 123456 -p 26379 c;同样使用redis-cli,只是链接到senTinel的端口即可
查看master主节点地址:6379端口服务
#链接哨兵senTinel 同样使用redis-cli
[root@mail ~]# redis-cli -a 123456 -p 26379
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
#查看mymaster(我们配置的集群名) 集群的master 是哪个
127.0.0.1:26379> senTinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "6379"
7) "runid"
8) "105cc1c986fcda65ad4ddba69012e8e6e0073e1f"
9) "flags"
10) "master"
...
③ 查看slave节点地址:两个slave节点分别是7001和7002服务c;可以看到两个slave节点指向的master节点为6379
#命令如下:
127.0.0.1:26379> senTinel slaves mymaster
1) 1) "name"
2) "192.168.154.145:7001"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "7001"
9) "flags"
10) "slave"
31) "master-link-status"
32) "ok"
33) "master-host"
34) "192.168.154.145"
35) "master-port"
36) "6379"
...
2) 1) "name"
2) "192.168.154.145:7002"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "7002"
9) "flags"
10) "slave"
31) "master-link-status"
32) "ok"
33) "master-host"
34) "192.168.154.145"
35) "master-port"
36) "6379"
...
测试目的:master主节点挂掉之后c;我们的senTinel集群可以通过选举机制c;重新在slave节点中选举一个作为新的master节点。
① 关闭主节点6379
#链接主节点c;shutdown关闭主节点
[root@mail ~]# redis-cli -a 123456 -p 6379
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
127.0.0.1:6379> shutdown
not connected>
② 查看此时的master节点
链接到哨兵c;查看主节点:此时c;经过三个哨兵的选举c;主节点变为 7002
#链接到哨兵c;查看主节点:主节点变为 7002
[root@mail ~]# redis-cli -a 123456 -p 26379
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
127.0.0.1:26379> senTinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "7002"
7) "runid"
8) "105cc1c986fcda65ad4ddba69012e8e6e0073e1f"
9) "flags"
10) "master"
...
127.0.0.1:26379>
③此时c;再查看slave节点的情况
发现slave节点变为:6379和7001两个c;而且6379的状态为 "s_down,slave,disconnected"c;因为我们关闭了6379
[root@mail ~]# redis-cli -a 123456 -p 26379
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
127.0.0.1:26379> senTinel slaves mymaster
1) 1) "name"
2) "192.168.154.145:6379"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "6379"
7) "runid"
8) "e740b7285067b2dbb8c2640745196099460f4bb3"
9) "flags"
10) "s_down,slave,disconnected"
...
2) 1) "name"
2) "192.168.154.145:7001"
3) "ip"
4) "192.168.154.145"
5) "port"
6) "7001"
7) "runid"
8) "19a7647509ba020adfd06b1eb40f1f35d06c549d"
9) "flags"
10) "slave"
...
127.0.0.1:26379>
① redis集群开启之后c;slave从节点的权限 默认是只读的;当然我们也可以开启slave节点的写入权限。
所以c;写数据:链接master主节点;读数据:链接slave从节点。
如下图:slave从节点c;没有写入权限
#登录slave从节点
[root@mail ~]# redis-cli -a 123456 -p 7001
Warning: Using a password with '-a' or '-u' option on the command linE interface may not be safe.
#查看所有数据
127.0.0.1:7001> keys *
1) "age"
2) "name"
#查看age数据
127.0.0.1:7001> get age
"25"
#尝试修改数据
127.0.0.1:7001> set age 30
(error) READONLY You can't write against a read only replica.
#修改失败c;slave从节点 数据只读
【python实战】前女友婚礼c;python破解婚礼现场的WIFIc;把名称改成了
【python实战】前女友发来加密的 “520快乐.pdf“c;我用python破解开之后c;却发现
【python实战】昨晚c;我用python帮隔壁小姐姐P证件照 自拍c;然后发现...
【python实战】女友半夜加班发自拍 python男友用30行代码发现惊天秘密
【python实战】python你TM太皮了——区区30行代码就能记录键盘的一举一动
【python实战】女神相册密码忘记了c;我只用Python写了20行代码~~~
python你TM太皮了——区区30行代码就能记录键盘的一举一动
白帽SQL注入实战过程记录(2)——根据information_scheR_227_11845@a组装SQL注入语句
https://download.csdn.net/download/weixin_42350212/15836285
一起来学pygame吧 游戏开发30例(四)——俄罗斯方块小游戏
一起来学pygame吧 游戏开发30例(二)——塔防游戏
PowerSHell自动化专栏
以上是大佬教程为你收集整理的【❤️万字长文总结❤️】一篇学会Redis高可用✔集群✔搭建详细教程全部内容,希望文章能够帮你解决【❤️万字长文总结❤️】一篇学会Redis高可用✔集群✔搭建详细教程所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。