本次实验由于资源限制,采用单节点多实例的模式部署集群。
多节点模式搭建原理类似。
文章目录
主从模式 | 端口 |
---|---|
主 | 7001 |
从 | 7002 |
从 | 7003 |
哨兵模式 | 端口 |
---|---|
主 | 6379 |
从 | 6378 |
哨兵1 | 26379 |
哨兵2 | 26380 |
redis 主从模式
要求1主2从。 端口7001-7003 ,需要手动部署
要求:端口监听正常,服务进程正常,能正常登陆客户端
1、编译安装redis
[root@docker_project02 redis]# wget http://download.redis.io/releases/redis-6.2.7.tar.gz
[root@docker_project02 redis]# tar xf redis-6.2.7.tar.gz -C /data/redis
[root@docker_project02 redis]# yum install gcc
cd /data/redis/redis-6.2.7 && make
cd /data/redis/redis-6.2.7/src && make install
2、配置文件
准备一份主库配置文件7001.conf,端口为7001
# 包含文件(redis-base.conf,文件从redis安装目录中拷贝的)
include /data/redis/redis-6.2.7/redis.conf
# bind 绑定地址修改,外网能访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 端口
port 7001
# 后台运行
daemonize yes
# pid文件
pidfile redis_7001.pid
# 日志文件
logfile "/data/redis/7001/log/redis-7001.log"
#节点名称,从节点不需要
masterauth mymaster
# 认证密码,最好两个都写,防止无法通讯
requirepass 123456
masterauth 123456
# 最大内存10M,一般为机器内存的3/4
maxmemory 10mb
# 内存达到最大时策略,可选择其他策略
maxmemory-policy volatile-lru
# 目录
dir /data/redis/7001
# 快照文件
dbfilename dump-7001.rdb
#开启持久化机制
appendonly yes
appendfsync always
准备两份从库配置文件,端口是7002,7003,在主配置文件的基础上,修改相应配置
# 包含文件(redis-base.conf,文件从redis安装目录中拷贝的)
include /data/redis/redis-6.2.7/redis.conf
# bind 绑定地址修改,外网能访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 端口
port 7002
# 后台运行
daemonize yes
# pid文件
pidfile redis_7002.pid
# 日志文件
logfile "/data/redis/7002/log/redis-7002.log"
# 认证密码
requirepass 123456
masterauth 123456
# 最大内存10M,一般为机器内存的3/4
maxmemory 10mb
# 内存达到最大时策略,可选择其他策略
maxmemory-policy volatile-lru
# 目录
dir /data/redis/7002
# 快照文件
dbfilename dump-7002.rdb
#开启持久化机制
appendonly yes
appendfsync always
# 从节点要跟随的主节点
replicaof 192.168.1.214 7001
# 主节点认证密码,如果设置了密码,就要设置
masterauth 123456
# 从库开放写的权限
slave-read-only no
目录结构如下:
3、启动
先启动主节点,然后启动从节点
主节点启动命令: /data/redis/redis-6.2.7/src/redis-server /data/redis/7001/7001.conf
从节点启动命令:
/data/redis/redis-6.2.7/src/redis-server /data/redis/7002/7002.conf
/data/redis/redis-6.2.7/src/redis-server /data/redis/7003/7003.conf
查看进程和端口是否启动
4、验证:
①、登录客户端
②、主从验证:
查看7001实例的info
7002及7003的信息
③、数据一致性
7001插入数据,7002,7003都可以查到
从其他库插入数据
redis哨兵模式
要求:主从模式,路径需要区分开来,主节点端口6379 从节点端口6378
端口监听正常,服务进程正常,能正常登陆客户端,主节点插入数据,要能在从节点查询主节点插入的数据。主节点发生故障后,从节点插入新的数据,并且恢复主节点,要能在主节点查询从节点插入的新数据
目录结构:
延续使用上文redis的主从配置文件,修改相应端口来启动redis服务。仅需开启两个。
1、配置文件
在主节点上和每个从节点上,创建一个哨兵配置文件,例如 7001-st.conf,并配置如下:不能有注释
port 26379 #端口需要修改
daemonize yes #后台运行
pidfile /data/redis/7001/redis-sentinel.pid
logfile "/data/redis/7001/log/sentinel_26379.log"
dir /data/redis/7001/
sentinel monitor mymaster 192.168.1.214 6379 2 #监控的Redis主节点6379,2个Redis Sentinel实例都认为主节点不可用时才会进行故障转移
sentinel down-after-milliseconds mymaster 30000 #定义了监控的主节点在多长时间没有回应后被认为是不可用的阈值。30000毫秒(30秒)
sentinel failover-timeout mymaster 180000 #定义了主节点故障转移的超时时间,即当主节点在一定时间内无法提供服务时,Sentinel会执行故障转移操作。这里设置为180000毫秒(180秒)。
sentinel deny-scripts-reconfig yes #指定是否允许在运行时修改Sentinel的配置。当设置为yes时,不允许修改配置。
sentinel auth-pass mymaster 123456 #必须项。连接主节点的密码,否则无法访问。
2、启动 Redis 哨兵:
先开启主节点的哨兵,再开从节点的哨兵
[root@docker_project01 src]# /data/redis/redis-6.2.7/src/redis-server /data/redis/7001/7001-st.conf --sentinel
[root@docker_project01 src]# /data/redis/redis-6.2.7/src/redis-server /data/redis/7002/7002-st.conf --sentinel
3、验证
①、端口及进程
②、验证主从
③、验证哨兵状态
手动关闭6379实例,主节点自动变更为6378实例
在6378插入数据
手动启动6379,并且查询cwc的值