CentOS环境搭建Redis哨兵模式集群
AI-摘要
切换
Tianli GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
1. 安装yum添加epel源
yum install epel-release
2.安装redis
yum install redis
3.搭建哨兵模式
在/etc目录下创建文件/文件夹
# 在/etc目录下创建文件夹
mkdir /etc/redis-sentinel
mkdir /etc/redis
mkdir /etc/redis/{6380,6381,6382}
mkdir /etc/redis-sentinel/{26380,26381,26382}
#复制redis.conf配置文件
cp /etc/redis.conf /etc/redis/6380/redis_6380.conf
cp /etc/redis.conf /etc/redis/6381/redis_6381.conf
cp /etc/redis.conf /etc/redis/6382/redis_6382.conf
#复制sentinel.conf配置文件
cp /etc/redis-sentinel.conf /etc/redis-sentinel/26380/sentinel_26380.conf
cp /etc/redis-sentinel.conf /etc/redis-sentinel/26381/sentinel_26381.conf
cp /etc/redis-sentinel.conf /etc/redis-sentinel/26382/sentinel_26382.conf
数据节点配置
#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis_6380.pid
#指定Redis监听端口,默认端口为6379
port 6380
#绑定的主机地址(bind 0.0.0.0允许跨网络访问)
bind 0.0.0.0
#日志记录方式,默认为标准输出,日志输出至指定日志文件
logfile /var/log/redis/redis_6380.log
#指定本地数据库存放目录
dir /var/lib/redis/6380
#当master服务设置了密码保护时,slave服务连接master的密码,可以不设置(可选)。设置在slave上,指定master的密码。
masterauth admin.123
#设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭,可以不设置(可选),设置在master上,指定master密码。
requirepass admin123
#因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly yes
#设置当本机为slave服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步(本例以6380端口的为主,6381和6382为从,故以下只需在6381和6382配置中即可)。
slaveof 127.0.0.0 6380
哨兵配置
#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes
#指定sentinel端口。(其它哨兵配置需要改否则引起端口冲突)
port 26380
#指定本地数据库存放目录。(其它哨兵配置需要改成对应路径)
dir /tmp/redis-sentinel/26380
#日志记录方式,默认为标准输出,日志输出至指定日志文件。(其它哨兵配置需要改成对应路径和文件)
logfile /var/log/redis/sentinel_26380.log
#指定别名 主节点地址 端口 哨兵个数(有几个哨兵监控到主节点宕机执行转移)。所有的哨兵都指向主节点地址和端口。注意如果是服务器127.0.0.1需要改成服务器ID地址,否则通过Java连接不成功。
sentinel monitor mymaster 127.0.0.0 6380 1
#如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒
sentinel down-after-milliseconds mymaster 3000
#选举出新的主节点之后,可以同时连接从节点的个数
sentinel parallel-syncs mymaster 1
#如果10秒后,master仍没活过来,则启动failover,默认180s
sentinel failover-timeout mymaster 10000
#配置连接redis主节点密码(可选),所有哨兵配置文件都要加上,如果master主节点配置了密码。
sentinel auth-pass mymaster admin123
启动配置文件修改
# redis-6380.service
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis/6380/redis_6380.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
# redis-sentinel-26380.service
[Unit]
Description=Redis Sentinel
After=network.target
[Service]
ExecStart=/usr/bin/redis-sentinel /etc/redis-sentinel/26380/sentinel_26380.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown redis-sentinel
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
# 更新启动项
systemctl daemon-reload
# 设置开机自启(其他配置依次执行)
systemctl enable redis-6380.service
systemctl enable redis-6381.service
systemctl enable redis-6382.service
systemctl enable redis-sentinel-26380.service
systemctl enable redis-sentinel-26381.service
systemctl enable redis-sentinel-26382.service
# 服务启动(先主后从)
systemctl start redis-6380.service
systemctl start redis-6381.service
systemctl start redis-6382.service
# 启动哨兵
systemctl start redis-sentinel-26380.service
systemctl start redis-sentinel-26381.service
systemctl start redis-sentinel-26382.service
查看进程
3个redis-server进程,3个sentinel进程
遇到问题:
在/tmp文件夹下创建/tmp/redis-sentinel/26380目录
Could not create server TCP listening socket 0.0.0.0:6380: bind: Permission denied
# 停止firewalld服务
systemctl stop firewalld
# 禁用firewalld服务,确保其在系统重新启动后不会自动启动
systemctl disable firewalld
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 ivioc
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果