帮我写一个两台linux 服务器部署redis主从的高可用部署文档,配置要详细
时间: 2025-06-08 15:42:31 浏览: 17
<think>好的,用户让我写一个关于两台Linux服务器部署Redis主从高可用的详细配置文档。首先,我得确认用户的需求是什么。他们可能需要在两台服务器上配置Redis的主从复制,并且确保高可用性。这可能涉及到主从切换、故障恢复等方面的配置。
首先,我需要考虑Redis主从的基本配置。主服务器负责写操作,从服务器复制主服务器的数据。但仅仅是主从可能还不够高可用,因为如果主服务器宕机,需要手动切换从服务器为主节点,或者使用哨兵模式(Sentinel)来自动处理故障转移。用户可能指的是使用哨兵来实现高可用,所以需要确认这一点。不过用户可能对Redis的高可用方案不太熟悉,可能需要我明确说明两种方案的差异,或者直接提供哨兵配置。
接下来,我需要确定服务器的基本信息。用户提到的是两台服务器,但通常Redis哨兵模式建议至少三个哨兵实例,以防止脑裂问题。不过可能用户只有两台服务器,每台服务器上运行一个Redis实例和一个哨兵实例。这种情况下,需要明确说明如何在两台服务器上部署Redis和哨兵,以及如何配置哨兵来监控主节点。
然后,我需要考虑网络配置,比如防火墙是否开放相应的端口,Redis默认是6379,哨兵是26379。用户可能需要确保这些端口在服务器之间是可达的。此外,安全配置如设置密码认证也是重要的,避免未授权访问。
文档的结构需要清晰,分步骤说明。可能包括环境准备、安装Redis、配置主从、配置哨兵、验证配置等部分。每个步骤需要详细的命令和配置文件示例,确保用户能够按图索骥进行操作。
另外,需要注意Redis版本,不同版本的配置可能略有不同,所以需要指定版本号,比如Redis 6.x。同时,系统服务配置部分,可能需要提供systemd的unit文件,方便用户管理Redis和哨兵服务。
用户可能还会关心如何测试高可用性,比如手动停止主节点,观察哨兵是否自动切换,以及客户端如何重新连接到新的主节点。这部分需要包含测试步骤,确保配置的正确性。
最后,可能还需要一些注意事项,比如数据持久化配置、内存管理、监控等,但用户主要需求是高可用部署,所以这些可以作为补充内容简要提及。
总结下来,我需要按照以下步骤来构建文档:
1. 环境准备,包括服务器信息、软件版本、防火墙设置。
2. 安装Redis,两台服务器都安装相同版本的Redis。
3. 配置主从复制,设置主节点和从节点的配置文件。
4. 配置哨兵,在两台服务器上分别配置哨兵,监控主节点。
5. 启动服务并验证主从复制和哨兵监控。
6. 测试故障转移,确保高可用性。
7. 提供客户端连接示例和注意事项。
需要确保每个步骤的命令和配置准确无误,特别是bind地址、密码、守护进程模式等关键配置项。同时,解释每个配置的作用,帮助用户理解为何需要这样设置,比如关闭保护模式、允许后台运行等。
可能遇到的问题包括主从无法同步,哨兵无法检测到故障,这时候需要检查日志文件,查看是否有连接拒绝或认证失败的错误。因此,在文档中加入常见问题排查步骤也是有帮助的。
最后,确保使用中文,术语准确,格式美观,代码块和配置示例清晰易读,符合用户的要求。</think># Redis主从高可用部署文档(哨兵模式)
## 一、环境准备
### 1.1 服务器信息
| 角色 | IP地址 | 主机名 | Redis端口 | 哨兵端口 |
|-------------|-------------|---------|-----------|----------|
| Master+Sentinel | 192.168.1.10 | master | 6379 | 26379 |
| Slave+Sentinel | 192.168.1.11 | slave | 6379 | 26379 |
### 1.2 软件版本
- Redis:6.2.12
- 操作系统:CentOS 7.9
### 1.3 前置条件
```bash
# 两台服务器均执行
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
```
## 二、Redis安装配置
### 2.1 安装Redis(两台服务器)
```bash
yum install -y gcc make
wget https://download.redis.io/releases/redis-6.2.12.tar.gz
tar xzf redis-6.2.12.tar.gz
cd redis-6.2.12
make && make install
```
### 2.2 主节点配置(192.168.1.10)
```bash
mkdir -p /etc/redis /var/log/redis /var/lib/redis
cat > /etc/redis/6379.conf <<EOF
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis.log"
dir /var/lib/redis
requirepass RedisMasterPass123
masterauth RedisMasterPass123
appendonly yes
protected-mode no
EOF
```
### 2.3 从节点配置(192.168.1.11)
```bash
mkdir -p /etc/redis /var/log/redis /var/lib/redis
cat > /etc/redis/6379.conf <<EOF
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis.log"
dir /var/lib/redis
requirepass RedisSlavePass123
masterauth RedisMasterPass123
replicaof 192.168.1.10 6379
appendonly yes
protected-mode no
EOF
```
## 三、哨兵配置
### 3.1 主节点哨兵配置
```bash
cat > /etc/redis/sentinel.conf <<EOF
port 26379
daemonize yes
logfile "/var/log/redis/sentinel.log"
dir /var/lib/redis
sentinel monitor mymaster 192.168.1.10 6379 1
sentinel auth-pass mymaster RedisMasterPass123
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
protected-mode no
EOF
```
### 3.2 从节点哨兵配置
```bash
cat > /etc/redis/sentinel.conf <<EOF
port 26379
daemonize yes
logfile "/var/log/redis/sentinel.log"
dir /var/lib/redis
sentinel monitor mymaster 192.168.1.10 6379 1
sentinel auth-pass mymaster RedisMasterPass123
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
protected-mode no
EOF
```
## 四、服务启动
### 4.1 启动Redis服务
```bash
# 两台服务器分别执行
redis-server /etc/redis/6379.conf
```
### 4.2 启动哨兵服务
```bash
# 两台服务器分别执行
redis-sentinel /etc/redis/sentinel.conf
```
## 五、验证部署
### 5.1 主从复制验证
```bash
# 在主节点执行
redis-cli -a RedisMasterPass123 info replication
# 应显示 connected_slaves:1
# 在从节点执行
redis-cli -a RedisSlavePass123 info replication
# 应显示 role:slave 和 master_host:192.168.1.10
```
### 5.2 哨兵状态检查
```bash
redis-cli -p 26379 info sentinel
# 应显示 sentinel_masters:1 和 num_other_sentinels:1
```
## 六、故障转移测试
1. 停止主节点Redis服务
```bash
redis-cli -a RedisMasterPass123 shutdown
```
2. 等待约10秒后检查从节点状态
```bash
redis-cli -a RedisSlavePass123 info replication
# 应显示 role:master
```
3. 检查哨兵日志
```bash
tail -f /var/log/redis/sentinel.log
# 应显示 +switch-master 切换记录
```
## 七、客户端连接示例
```python
from redis.sentinel import Sentinel
sentinel = Sentinel([('192.168.1.10', 26379),
('192.168.1.11', 26379)],
socket_timeout=0.5)
master = sentinel.master_for('mymaster',
password='RedisMasterPass123',
db=0)
slave = sentinel.slave_for('mymaster',
password='RedisMasterPass123',
db=0)
```
## 八、注意事项
1. 生产环境建议部署3个及以上哨兵节点
2. 建议配置持久化策略:`appendfsync everysec`
3. 监控重要指标:内存使用率、连接数、OPS
4. 定期检查哨兵和Redis日志
5. 重要操作前做好数据备份
> 所有配置文件的路径和密码请根据实际情况修改,防火墙配置需根据实际网络环境调整。生产环境建议使用非默认端口并启用TLS加密。
阅读全文
相关推荐


















