三公机器人

牛牛机器人,三公撑船机器人,微信牛牛机器人

微信牛牛机器人 3个哨兵实例分别部署在上述3台服务器中

一、前置部署基础准备

1. 环境规划

建议至少筹备3台相互独立的物理节点服务器,从架构层面规避单点故障引发的全集群不可用风险,基础IP与服务角色的分配参考方案如下:

  • 主节点:192.168.1.100:6379

  • 从节点1:192.168.1.101:6379

  • 从节点2:192.168.1.102:6379

  • 3个哨兵实例分别部署在上述3台服务器中,默认使用26379端口 所有服务器需提前完成防火墙规则配置,可选择直接关闭防火墙,或单独放行6379、26379两个服务端口,保障节点之间内网全链路互通;同时严禁将哨兵服务绑定到127.0.0.1回环地址,否则不同哨兵实例之间将无法完成正常通信。

2. 基础依赖安装

所有节点需统一安装完全相同版本的Redis服务,避免跨版本兼容性问题引发的运行异常,以CentOS操作系统为例,可依次执行以下安装命令:

yum install -y redis
systemctl stop redis

提前关闭操作系统默认启动的单机版Redis服务,后续所有实例将基于自定义配置文件统一启动。

二、主从节点配置与ACL权限落地

1. 主节点redis.conf核心配置

修改主节点的Redis配置文件,开启ACL访问控制功能并配置核心运行参数:

# 仅绑定内网IP,彻底规避公网直接访问的安全风险
bind 192.168.1.100
port 6379
# 开启后台守护进程模式
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis-6379.log
dir /data/redis/6379

# 启用ACL访问控制功能,指定ACL规则持久化存储文件路径
aclfile /etc/redis/users.acl

# 禁用默认用户的所有访问权限,从根源杜绝未授权连接
user default on nopass ~* +@all
user default off

# 配置管理员账号,仅允许哨兵节点所属IP段登录,持有服务全量操作权限
user admin on >YourStrongAdminPass 192.168.1.* ~* +@all

# 配置业务读写账号,仅允许操作指定biz前缀的业务Key,禁用所有高危操作命令
user app_rw on >AppReadWritePass 192.168.*.* ~biz:* +@read +@write -@dangerous

# 配置业务只读账号,仅开放读操作权限,禁止所有写入与服务管理类命令
user app_ro on >AppReadOnlyPass 192.168.*.* ~biz:* +@read -@write -@admin

提前创建对应的数据存储目录与ACL规则文件,完成主节点Redis服务的启动:

mkdir -p /data/redis/6379 /var/log/redis
touch /etc/redis/users.acl
redis-server /etc/redis.conf

2. 从节点配置与同步

两台从节点的redis.conf基础运行参数需与主节点保持完全一致,额外补充主从同步专属配置项:

replicaof 192.168.1.100 6379
# 从节点执行主从数据同步时,使用主节点预先配置的管理员账号完成身份校验
masterauth YourStrongAdminPass

两台从节点启动完成后,登录主节点执行info replication命令,确认两个从节点的运行状态正常,主从数据同步链路成功建立。

三、哨兵节点部署配置

在3台服务器上分别创建sentinel.conf配置文件,核心配置项参考如下:

# 绑定当前节点对应的内网IP
bind 192.168.1.100
port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile /var/log/redis/sentinel.log
dir /data/redis/6379

# 配置主节点监控规则,判定主节点客观下线需至少获得2个哨兵实例的共识
sentinel monitor mymaster 192.168.1.100 6379 2
# 主节点连续30秒无响应时,哨兵将标记其为主观下线状态
sentinel down-after-milliseconds mymaster 30000
# 故障转移操作的超时时间设置为3分钟
sentinel failover-timeout mymaster 180000
# 故障转移完成后,新主节点同步数据时最多仅允许1个从节点并行同步,避免占用过多内网带宽
sentinel parallel-syncs mymaster 1

# 哨兵实例连接Redis主从节点时,使用预先配置的管理员账号完成身份校验
sentinel auth-pass mymaster YourStrongAdminPass

3个哨兵实例可任选以下两种方式之一完成启动:

redis-sentinel /etc/redis-sentinel.conf
# 或通过Redis服务端直接指定哨兵模式启动
redis-server /etc/redis-sentinel.conf --sentinel

任选一个哨兵实例登录,执行sentinel master mymaster命令,确认返回结果中主节点信息、从节点总数、哨兵实例总数均识别正确,整套哨兵集群的搭建流程即全部完成。

四、生产级安全与运维校验

  1. ACL权限验证使用业务账号登录Redis服务,尝试执行FLUSHDBCONFIG等高危操作命令,确认请求被系统拦截;同时尝试操作非biz前缀的Key,确认无访问权限,验证所有ACL规则均已正常生效。

  2. 故障转移测试手动终止主节点的Redis进程,实时查看哨兵服务的运行日志,确认30秒后哨兵集群完成主节点选举,将其中一台从节点提升为新的主节点,剩余从节点将自动切换同步链路指向新主节点,整个故障切换过程业务侧几乎无感知。

  3. 权限持久化校验在线修改任意一条ACL规则后,确认规则自动同步写入预先指定的users.acl持久化文件,Redis服务重启后所有配置的权限规则不会丢失。


Powered By Z-BlogPHP 1.7.3

三公机器人,牛牛机器人,三公撑船机器人,微信牛牛机器人