哨兵一般是 一主两从,去中心化则是三主三从
由于我开的虚拟机过多所以
内存满了 先清虚拟机内存 你们可以跳过清理这一步骤
free -m 查看总内存 以及已用和可用内存
1.清理页面缓存:
echo 1 > /proc/sys/vm/drop_caches
这个命令会释放页面缓存。
2.清理 dentries 和 inodes:
echo 2 > /proc/sys/vm/drop_caches
这个命令会清除目录项和索引节点,这通常用于释放由文件元数据占用的内存。
3.清理所有缓存:
echo 3 > /proc/sys/vm/drop_caches
这个命令会清除所有缓存,包括页面缓存、目录项和索引节点。
请注意,这些操作会暂时降低系统性能,因为缓存被清除后,系统需要重新构建缓存以优化性能。通常,除非确切知道在做什么,并且有特定的需求,否则不建议手动清理缓存。
另外,free -m 命令显示的 available 内存是内核估计的,它包括了未被使用的缓存内存,所以即使 free 列显示的内存不多,系统可能仍然有足够的可用内存。
在的情况下,的系统内存使用看起来是正常的,没有迹象表明需要清理缓存。
清理缓存后:
等待一小段时间,让系统有机会重新分配内存,然后再次执行 free -m 查看内存使用情况
关于清理缓存的频率,这主要取决于的系统使用情况和需求:
·对于大多数系统:通常不需要定期清理缓存。Linux 内核设计有很好的内存管理机制,能够自动处理缓存的使用,以优化系统性能。手动清理缓存可能会干扰内核的优化决策。
·特定情况:如果的系统有特殊需求,比如在进行内存密集型任务之前,可能希望释放尽可能多的内存给当前任务使用。在这种情况下,可以在任务开始前清理缓存。
·监控和自动清理:如果确实需要监控缓存使用情况并考虑自动清理,可以编写脚本定期检查内存使用情况,并在特定条件下执行清理命令。但这种情况比较少见,因为通常不推荐这样做。
make install 会将 Redis 的可执行文件(例如 redis-server 和 redis-cli)安装到 /usr/local/bin/ 目录下。这意味着可以在任何地方通过命令行直接调用这些命令。
可执行文件位置:
redis-server: /usr/local/bin/redis-server
redis-cli: /usr/local/bin/redis-cli
配置文件和数据目录:
配置文件通常需要手动创建,可以在任意位置存放,例如 /etc/redis/redis.conf。
数据目录可以根据的需求设置,通常可以放在 /var/lib/redis/ 或者其他地方
在使用 redis-server /etc/redis/redis.conf 启动 Redis 服务器后,退出或停止 Redis 服务器,有以下几种方法:
1. 使用 Ctrl+C
如果是在终端中直接运行 redis-server 命令,通常可以通过按 Ctrl+C 来停止 Redis 服务器。这会发送一个中断信号,导致 Redis 实例正常关闭。
2. 使用 Redis 客户端命令
如果希望通过 Redis 客户端命令停止服务器,可以使用以下步骤:
打开一个新的终端窗口。
连接到 Redis 服务器:
redis-cli -h 127.0.0.1 -p 6379
如果的 Redis 服务器在其他主机或端口上,请相应地调整 -h 和 -p 参数。
在 Redis CLI 中输入以下命令以关闭服务器:
SHUTDOWN
3. 使用系统服务管理(如果以服务方式运行)
如果是通过系统服务(如 systemd)启动 Redis 服务器的,可以使用以下命令停止它:
sudo systemctl stop redis
4. 使用 kill 命令
如果以上方法都无法工作,可以通过查找进程 ID (PID) 并使用 kill 命令强制停止 Redis 服务器:
查找 Redis 进程:
ps aux | grep redis-server
找到进程的 PID(通常是第一列),然后使用 kill 命令:
sudo kill <PID>
如果进程没有停止,可以使用更强制的方法:
sudo kill -9 <PID>
总结
最常见的退出方法是直接在运行 redis-server 的终端使用 Ctrl+C。如果是以服务方式运行,则使用 systemctl stop redis 命令。确保在关闭 Redis 之前,
1. 安装Redis哨兵模式
假设已经下载了`redis-6.2.7.tar.gz`包并将其解压缩,现在可以在每台虚拟机上进行安装。
# 1.1 解压并编译Redis
tar xzf redis-6.2.7.tar.gz
cd redis-6.2.7
make
# 1.2 安装
sudo make install
2. 配置Redis主从和哨兵模式
2.1 配置Redis主从复制
在每台虚拟机上创建一个配置文件`redis.conf`。 /etc/redis/redis.conf。
mkdir /etc/redis
mkdir /var/lib/redis
vim /etc/redis/redis.conf
主节点配置(10.8.165.8)
bind 0.0.0.0
port 6379
dir /var/lib/redis
appendonly yes
# 关闭保护模式
protected-mode no
从节点配置(10.8.165.9和10.8.165.26)
# 允许所有ip
bind 0.0.0.0
# 端口可改
port 6380
dir /var/lib/redis
replicaof 10.8.165.8 6379
appendonly yes
# 关闭保护模式
protected-mode no
2.2 配置哨兵(Sentinel)
在每台虚拟机上创建一个哨兵配置文件`sentinel.conf`
这两个文件可以自定义位置,我放在了新建的目录 /etc/redis/里面
/etc/redis/sentinel.conf /etc/redis/redis.conf
哨兵配置(所有节点都相同)
port 26379
dir /tmp
sentinel monitor mymaster 10.8.165.8 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
2.3 启动Redis服务器
redis-server /etc/redis/redis.conf
先启动主 挨个启动从。
然后出现大段空白
Ctrl C 退出

2.4 启动哨兵进程
redis-sentinel /path/to/sentinel.conf
先启动主 挨个启动从。
然后出现大段空白
Ctrl C 退出
3. 持久化配置与性能调优
持久化是Redis中的一个重要方面,主要有两种方式:RDB和AOF。
3.1 RDB(Redis Database Backup)
RDB会在指定的时间间隔内生成数据库的快照,优点是适合大数据恢复,但会有一定的数据丢失风险。
在`redis.conf`中添加:
save 900 1 # 每900秒至少有1个key发生变化时生成RDB快照
save 300 10 # 每300秒至少有10个key发生变化时生成RDB快照
save 60 10000 # 每60秒至少有10000个key发生变化时生成RDB快照
3.2 AOF(Append Only File)
AOF会记录每个写操作,可以更细粒度地恢复数据,但文件会比较大,写入性能相对较低。
在`redis.conf`中添加:
appendonly yes # 开启AOF持久化
appendfilename “appendonly.aof”
appendfsync everysec # 每秒同步一次AOF文件(权衡了性能和数据安全)
3.3 同时开启RDB和AOF
可以同时开启RDB和AOF以获得数据恢复和写入性能的平衡:
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
4.性能调优建议
1. 最大内存限制:设置Redis实例的最大内存使用,防止系统内存不足。
maxmemory 4gb
maxmemory-policy allkeys-lru # 当达到maxmemory时,使用LRU策略删除key
2. 后台线程数:适当调整后台线程数来提高写入性能。
io-threads-do-reads no # 默认关闭IO线程读取功能,可以根据需要打开
io-threads 4 # 设置IO线程数为4,可以根据机器的CPU核心数进行调整
3. TCP参数优化:调整网络参数以提高传输性能。
tcp-keepalive 60 # 设置TCP连接的keepalive时间为60秒
4. 日志级别:适当调整日志级别以减少磁盘IO。
logfile “/var/log/redis.log”
loglevel notice # 设置日志级别为notice,以减少磁盘IO负担
示例配置文件
redis.conf里面
bind 0.0.0.0
port 6379
dir /var/lib/redis
# RDB持久化配置
save 900 1
save 300 10
save 60 10000
# AOF持久化配置
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
# 性能调优配置
maxmemory 4gb
maxmemory-policy allkeys-lru
tcp-keepalive 60
logfile “/var/log/redis.log”
loglevel notice
sentinel.conf里面
port 26379
dir /tmp
# 哨兵监控配置
sentinel monitor mymaster 10.8.165.8 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
5.故障转移过程详解:
当哨兵检测到主服务器 s1:6379 不可用时,会自动发起故障转移。假设 s2:6380 被提升为新的主服务器:
哨兵会在 s2:6380 上执行 SLAVEOF NO ONE 将其提升为主服务器。
其他从服务器(如 s3.102:6381)会被重新配置为从新的主服务器 s2:6380 进行同步。
客户端可以通过哨兵 API 获取当前活跃的主服务器地址,并进行重新连接。
Redis 支持两种持久化机制:
RDB (Redis Database File) 和 AOF (Append Only File)。可以单独使用其中一种,也可以同时开启这两种持久化方式。
RDB 持久化配置
RDB 持久化会在指定的时间间隔内生成数据快照,将数据写入磁盘。以下是一些常用的 RDB 配置:
# RDB 文件的保存路径
dir /var/lib/redis
# RDB 文件名
dbfilename dump.rdb
# 配置快照的触发条件
# 在 `save` 指令中指定:在 n 秒内有 m 次写操作,就触发 RDB 快照
save 900 1 # 在 900 秒内如果有至少 1 次写操作,就触发快照
save 300 10 # 在 300 秒内如果有至少 10 次写操作,就触发快照
save 60 10000 # 在 60 秒内如果有至少 10000 次写操作,就触发快照
AOF 持久化配置
AOF 持久化会将每次写操作记录在一个日志文件中,实现更高的数据持久性。以下是一些常用的 AOF 配置:
# 启用 AOF 持久化
appendonly yes

# AOF 文件名
appendfilename “appendonly.aof”
# AOF 文件的刷新策略
# appendfsync always # 每次写操作都会立即同步到 AOF 文件(最安全,但性能较差)
# appendfsync everysec # 每秒同步一次(默认选择,权衡了性能和安全)
# appendfsync no # 不进行同步,由操作系统决定何时同步(性能**,但最不安全)
appendfsync everysec
# 是否在重写 AOF 文件时删除旧的、无用的命令
no-appendfsync-on-rewrite no
# AOF 手动重写触发条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
同时开启 RDB 和 AOF
可以在 Redis 配置文件中同时开启 RDB 和 AOF 持久化机制,这样在某种机制失效时,另一种机制可以提供数据的恢复。如:
# RDB 配置
dir /var/lib/redis
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
# AOF 配置
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Redi持久化后日常操作
在 Redis 启动后,可以通过 Redis 命令与持久化机制进行交互:
手动触发 RDB 快照:`BGSAVE` 命令会在后台生成 RDB 快照。
手动触发 AOF 重写:`BGREWRITEAOF` 命令会在后台对 AOF 文件进行重写。
恢复数据
当 Redis 启动时,它会根据以下顺序恢复数据:
1. 如果配置了 AOF 并且 AOF 文件存在,Redis 会优先使用 AOF 文件恢复数据。
2. 如果没有配置 AOF 或者 AOF 文件不存在,Redis 会使用 RDB 文件恢复数据。
总结
同时开启 RDB 和 AOF 可以提供更加可靠的数据持久化方案。RDB 提供了一种数据快照的方式,适合用于数据恢复的基线,而 AOF 通过记录每次写操作提供了更加细粒度的数据持久性。两者结合使用,可以在系统性能和数据安全性之间取得平衡。
性能调优
对Redis哨兵(Sentinel)模式进行性能调优是保证系统高可用性和高性能的关键。
常见的性能调优策略:
1. 配置优化
#Redis服务器配置
1. 内存管理:确保Redis实例的内存配置合理,避免过多的内存使用导致系统性能下降。使用 `maxmemory` 配置来限制Redis使用的最大内存。
maxmemory 4gb
maxmemory-policy noeviction
2. 持久化配置:选择合适的RDB和AOF策略,平衡性能和数据持久性。
vim /etc/redis/redis.conf
# RDB配置
save 900 1
save 300 10
save 60 10000
# AOF配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
3. 网络配置:调整网络缓冲区大小,减少网络延迟。
vim /etc/redis/redis.conf
# 网络配置调整网络缓冲区
tcp-backlog 511
tcp-keepalive 300
#哨兵配置
1. 故障检测和切换:调整哨兵的监控和故障切换参数。
vim /etc/redis/sentinel.conf
sentinel monitor mymaster主机IP 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
2. 哨兵数量:至少配置3个哨兵节点,以保证高可用性。
2. 系统资源优化
#CPU和内存
1. 多核CPU:利用多核CPU来处理Redis的高并发请求。可以通过配置多个Redis实例来更好地利用多核资源。
2. 内存优化:尽量使用物理内存,避免使用交换分区(swap),因为交换分区性能较差。
vm.overcommit_memory = 1
#磁盘I/O
1. SSD:使用SSD替代HDD,以提高磁盘I/O性能。
2. 文件系统:选择合适的文件系统(如ext4),并进行优化。
mount -o noatime,nodiratime,barrier=0 /dev/sdX /mnt/redis
3. 网络优化
1. 网络带宽:确保网络带宽足够,避免拥塞。
2. 网络延迟:减少网络延迟,使用低延迟网络硬件和配置。
3. 连接优化:合理设置客户端和服务器的连接数和超时。
timeout 0
tcp-keepalive 300
4. 客户端优化
1. 连接池:使用连接池来减少连接建立和释放的开销。
2. 批量操作:使用批量操作(如Pipeline)来减少网络往返次数,提高吞吐量。
3. Lua脚本:使用Lua脚本,将多个命令合并为一个命令,减少网络延迟和命令处理时间。
5. 监控与日志
1. 监控:使用监控工具(如Prometheus、Grafana)监控Redis和哨兵节点的健康和性能。
2. 日志:启用和分析日志,排查性能瓶颈和异常情况。
logfile /var/log/redis/redis-server.log
loglevel notice
6. 定期维护
1. 数据备份:定期备份Redis数据,确保数据安全。
2. 重启与升级:定期重启Redis服务器和哨兵节点,应用最新的补丁和版本。
通过以上策略,可以有效提升Redis哨兵模式集群的性能和稳定性。在实际应用中,需根据具体的业务场景和需求,灵活调整配置和策略。
给我点点关注 和点点赞 点点收藏吧给我点点关注 和点点赞 点点收藏吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199098.html