redis哨兵模式部署ABI集群环境

1814
1

leiz 小试身手Lv3

发表于2022-7-6 19:12

楼主
  产品集群需要redis支持,redis部署分为两种。一种是单redis部署,适应于可靠性不高的场景;另一种是redis哨兵部署,适应于可靠性要求非常高的场景;本文主要讲解redis哨兵部署的情况。

一、版本说明

  以下配置仅供参考,一切以实际配置为准:
操作系统版本:CentOS-76
redis版本:redis-5.0.5


二、集群场景说明
集群2个节点部署在两台服务器上,对应的服务器IP、端口、工作目录如下。Redis哨兵模式部署和应用服务器部署在一起。以双机双节点的配置ABI集群为例,说明在ABI中如何配置集群。
ABI相关信息:
服务器
节点名称
IP地址
端口号
工作目录
abi1
server1
24.80.176.44
8080
/opt/abi/abiworkdir
abi2
server2
24.80.179.27
8080
/opt/abi/abiworkdir

     Redis相关信息:
服务器
安装软件
IP地址
端口号
abi1
Redis(主)
24.80.176.44
16379
abi2
Redis(从)
24.80.179.27
16380
abi1
Sentinel
24.80.176.44
26379
abi2
Sentinel
24.80.179.27
26380
abi2
Sentinel2
24.80.179.27
26381


三、Redis安装
1、下载redis
可以自行去官网下载:https://redis.io/download/#redis-downloads


2、安装redis
1)解压安装包

2)由于Redis是使用C++编写的,需要安装C++环境(如已安装请忽略此步)
  1. 安装命令:yum install gcc-c++
  2. 查看gcc版本:gcc -v
复制代码
3)编译安装(进入到redis目录下执行
  1. 编译
  2. make
  3. 安装
  4. make install
复制代码
Redis安装成功后,可进行下一步的配置。



四、redis哨兵模式部署
下面以两台服务器一主一从三哨兵为例,进行redis哨兵模式的配置


1、进入到主节点redis安装目录下,编辑redis.conf文件参数:
参数
默认值
修改后的值
描述
bind
127.0.0.1
#127.0.0.1
绑定redis服务器网卡ip,默认为127.0.0.1,即本地环回地址。这样的话,访问redis只能通过本地的客户端连接,而无法通过远程连接。一般会将该参数注释掉,接受所有来自于可用网络接口的连接
port
6379
16379
指定redis运行的端口
protected-mode
yes
no
是否开启保护模式。要是配置里没有指定bind和密码,开启该参数后,redis只能进行本地访问,拒绝外地访问,一般会设置为no
daemonize
no
yes
daemonize设置为yes(默认为no),redis就将会在后台运行

2、
进入到从节点redis安装目录下,编辑redis.conf文件参数:
参数
默认值
修改后的值
描述
bind
127.0.0.1
#127.0.0.1
同上
port
6379
16380
同上
protected-mode
yes
no
同上
daemonize
no
yes
同上
slaveof
<masterip> <materport>
slaveof 24.80.176.44 16379
声明主节点

3、进入到主节点redis安装目录下,编辑sentinel.conf文件参数:
参数
默认值
修改后的值
描述
daemonize
no
yes
daemonize设置为yes(默认为no),redis就将会在后台运行
sentinelmonitor mymaster
127.0.0.1 6379 2
24.80.176.44 16379 2
mymaster表示哨兵名称,24.80.176.44 16379是主节点的ip和端口,表示监控主节点,最后的数字2是哨兵用来判断某个 redis 服务器是否下线的参数,表示投票需要的"最少法定人数",比如有10个sentinal哨兵都在监控某一个主节点,如果需要至少6个哨兵发现主节点挂掉后,才认为主节点真正down掉,那么这里就配置为6,最小配置1台主节点,1台从节点。

4、进入到从节点redis安装目录下,编辑sentinel.conf文件参数:
参数默认值修改后的值描述
port2637926380同上
daemonizenoyes同上
sentinelmonitor mymaster127.0.0.1 6379 224.80.176.44 16379 2同上

5、进入到从节点redis安装目录下,复制一份sentinel.conf文件,命名为sentinel2.conf,编辑sentinel2.conf文件参数:
参数默认值修改后的值描述
port2637926381同上
daemonizenoyes同上
sentinel monitor mymaster127.0.0.1 6379 224.80.176.44 16379 2同上
注:sentinel.conf的哨兵名称要与后面集群文件里的哨兵名称保持一致

6、启动redis服务和哨兵服务
1)分别进入到主节点和从节点的redis安装目录:cd /opt/abi/redis-5.0.5/src
2)分别执行命令:redis-server ../redis.conf启动redis服务
3)分别执行命令:redis-sentinel ../sentinel.conf
4)从节点执行命令:redis-sentinel ../sentinel2.conf
5)查询redis进程:ps -ef |grep redis

五、集群文件配置
各个工作目录的conf文件夹中放置cluster.properties,其中Server1为主控节点。
参考最简配置,其中cluster.redis.sentinel参数为哨兵的名称,要与哨兵配置文件中的哨兵名称保持一致
以下为详细配置内容,只做参考:
  
节点名称
  
配置内容
Server1
#charset  UTF-8
  
#必须配置的属性:
  
cluster.enabled=true
  
cluster.iscontrol=true
  
cluster.type=redis
  
cluster.group=group
  
cluster.nodeid=node1
  
cluster.name=server1
  
  
#mymaster为哨兵名称
  
cluster.redis.sentinel=mymaster
  
cluster.redis.nodes=24.80.176.44:26379, 24.80.179.27:26380,  24.80.179.27:26381
  
  
#视情况配置的属性:
  
#如果redis设置了密码,则配置
  
#cluster.redis.password=123
  
  
#可以不配置的属性:
  
#集群服务器与redis最大时间差 默认120s
  
#cluster.health.maxtimegap=120
  
#两次心跳间隔时间默认3s
  
#cluster.health.interval=3000
  
#离开时间间隔算离开 默认30s
  
#cluster.health.leavetime=30
  
#加入时间算加入 默认8s
  
#cluster.heath.jointime=8
  
#是否使用连接池
  
#cluster.redis.usepool=false
Server2
#charset  UTF-8
  
#必须配置的属性:
  
cluster.enabled=true
  
cluster.iscontrol=false
  
cluster.type=redis
  
cluster.group=group
  
cluster.nodeid=node2
  
cluster.name=server2
  
  
#mymaster为哨兵名称
  
cluster.redis.sentinel=mymaster
  
cluster.redis.nodes=24.80.176.44:26379, 24.80.179.27:26380,  24.80.179.27:26381
  
#视情况配置的属性:
  
#如果redis设置了密码,则配置
  
#cluster.redis.password=123
  
  
#可以不配置的属性:
  
#集群服务器与redis最大时间差 默认120s
  
#cluster.health.maxtimegap=120
  
#两次心跳间隔时间默认3s
  
#cluster.health.interval=3000
  
#离开时间间隔算离开 默认30s
  
#cluster.health.leavetime=30
  
#加入时间算加入 默认8s
  
#cluster.heath.jointime=8
  
#是否使用连接池
  
#cluster.redis.usepool=false

六、启动服务器
集群配置文件完成后,先启动server1,待server1启动完成后,再启动server2


七、集群检查

以admin身份登录ABI,依次进入“系统设置”->“性能与维护”->“集群信息”,检查如下信息:
l 检查所有配置节点是否存在
l 检查所有节点在线状态
l 检查所有节点同步状态
l 检查是否存在控制节点,且只有一个


最近看过此主题的会员

guchenghe

esen_4XW9QT2XNS

esen_4Y3L5ADO80

1个回答

只看楼主

zzqujw 小试身手Lv3

发表于2023-6-6 12:04

只看该作者

取消 关注该作者的回复

沙发

本帖最后由 zzqujw 于 2023-6-6 12:05 编辑

文中的sever1 、server2 都是用的tomcat 中间件吗?访问集群是 http://24.80.176.44:8080  和  http://24.80.179.27:8080 两个地址同时都可以吗? 如果想集中成1个访问地址,通过nginx 可行吗?

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号