-
leiz 小试身手Lv3
发表于2022-7-6 19:12
楼主
产品集群需要redis支持,redis部署分为两种。一种是单redis部署,适应于可靠性不高的场景;另一种是redis哨兵部署,适应于可靠性要求非常高的场景;本文主要讲解redis哨兵部署的情况。
一、版本说明
以下配置仅供参考,一切以实际配置为准:
操作系统版本:CentOS-76
redis版本:redis-5.0.5
二、集群场景说明
Redis相关信息:
三、Redis安装
1、下载redis
可以自行去官网下载:https://redis.io/download/#redis-downloads
2、安装redis
1)解压安装包
2)由于Redis是使用C++编写的,需要安装C++环境(如已安装请忽略此步)
复制代码3)编译安装(进入到redis目录下执行)
复制代码
四、redis哨兵模式部署
下面以两台服务器一主一从三哨兵为例,进行redis哨兵模式的配置
1、进入到主节点redis安装目录下,编辑redis.conf文件参数:
2、进入到从节点redis安装目录下,编辑redis.conf文件参数:
3、进入到主节点redis安装目录下,编辑sentinel.conf文件参数:
4、进入到从节点redis安装目录下,编辑sentinel.conf文件参数:
5、进入到从节点redis安装目录下,复制一份sentinel.conf文件,命名为sentinel2.conf,编辑sentinel2.conf文件参数:
3)分别执行命令:redis-sentinel ../sentinel.conf
4)从节点执行命令:redis-sentinel ../sentinel2.conf
5)查询redis进程:ps -ef |grep redis
五、集群文件配置
各个工作目录的conf文件夹中放置cluster.properties,其中Server1为主控节点。
六、启动服务器
七、集群检查
一、版本说明
以下配置仅供参考,一切以实际配置为准:
操作系统版本: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++环境(如已安装请忽略此步)
- 安装命令:yum install gcc-c++
- 查看gcc版本:gcc -v
- 编译
- make
- 安装
- 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文件参数:
参数 | 默认值 | 修改后的值 | 描述 |
port | 26379 | 26380 | 同上 |
daemonize | no | yes | 同上 |
sentinelmonitor mymaster | 127.0.0.1 6379 2 | 24.80.176.44 16379 2 | 同上 |
5、进入到从节点redis安装目录下,复制一份sentinel.conf文件,命名为sentinel2.conf,编辑sentinel2.conf文件参数:
参数 | 默认值 | 修改后的值 | 描述 |
port | 26379 | 26381 | 同上 |
daemonize | no | yes | 同上 |
sentinel monitor mymaster | 127.0.0.1 6379 2 | 24.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 检查是否存在控制节点,且只有一个
1个回答
本帖最后由 zzqujw 于 2023-6-6 12:05 编辑
文中的sever1 、server2 都是用的tomcat 中间件吗?访问集群是 http://24.80.176.44:8080 和 http://24.80.179.27:8080 两个地址同时都可以吗? 如果想集中成1个访问地址,通过nginx 可行吗?