银河麒麟V10ServerSP3下Redis7高可用集群部署实战指南

张开发
2026/6/20 4:50:22 15 分钟阅读
银河麒麟V10ServerSP3下Redis7高可用集群部署实战指南
1. 环境准备与基础安装在银河麒麟V10ServerSP3上部署Redis7高可用集群前需要做好系统环境准备。我建议先检查系统版本和基础依赖避免后续出现兼容性问题。执行以下命令确认系统版本cat /etc/kylin-release uname -aRedis7对gcc版本有较高要求实测需要5.3以上版本。银河麒麟V10ServerSP3默认可能不满足需要手动升级yum install -y devtoolset-9 scl enable devtoolset-9 bash gcc --version安装基础依赖时我发现银河麒麟的yum源有时会缺少某些包建议提前配置好官方源或本地镜像源。必须安装的依赖包括yum install -y tcl make wget tar gcc-c systemd-devel下载Redis源码时直接从官网获取最新稳定版。我遇到过github下载速度慢的问题可以先用下载工具获取后再上传服务器wget https://download.redis.io/releases/redis-7.0.12.tar.gz tar xzf redis-7.0.12.tar.gz cd redis-7.0.12编译时有个坑要注意银河麒麟默认的jemalloc可能不兼容建议在make时指定make MALLOClibc -j$(nproc)编译完成后别急着安装先做个快速测试验证基础功能make test如果出现测试失败特别是在虚拟机环境不用太担心只要主要功能测试通过即可。安装到系统目录make install安装后建议创建专用目录存放配置文件和数据我习惯放在/opt/redis下mkdir -p /opt/redis/{conf,data,logs} cp redis.conf sentinel.conf /opt/redis/conf/ chown -R redis:redis /opt/redis2. 单节点配置优化在搭建集群前需要先优化单节点配置。银河麒麟V10ServerSP3的默认内核参数可能需要调整特别是针对Redis的性能优化echo vm.overcommit_memory 1 /etc/sysctl.conf echo net.core.somaxconn 1024 /etc/sysctl.conf sysctl -pRedis7的配置文件有几个关键参数需要特别注意内存管理maxmemory 8GB maxmemory-policy allkeys-lru持久化配置根据业务需求选择appendonly yes appendfsync everysec安全设置必须修改requirepass YourStrongPassword rename-command FLUSHDB rename-command FLUSHALL 系统集成supervised systemd daemonize yes我强烈建议启用systemd管理创建/etc/systemd/system/redis.service[Unit] DescriptionRedis Data Store Afternetwork.target [Service] Userredis Groupredis ExecStart/usr/local/bin/redis-server /opt/redis/conf/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways LimitNOFILE65536 [Install] WantedBymulti-user.target启动前记得调整目录权限systemctl daemon-reload systemctl enable --now redis验证服务状态时除了检查systemctl status redis还应该用redis-cli实际测试redis-cli -a YourStrongPassword ping3. 主从复制配置Redis高可用的基础是主从复制。假设我们有三台服务器主节点192.168.1.101从节点1192.168.1.102从节点2192.168.1.103在主节点上需要确保配置允许复制replica-read-only yes repl-diskless-sync yes masterauth YourStrongPassword在两个从节点上配置文件需要添加replicaof 192.168.1.101 6379 masterauth YourStrongPassword replica-serve-stale-data yes配置完成后重启从节点服务systemctl restart redis验证复制状态很关键我常用的检查方法redis-cli -a YourStrongPassword info replication输出应该显示类似role:slave master_host:192.168.1.101 master_port:6379 master_link_status:up主节点上应该能看到connected_slaves:2 slave0:ip192.168.1.102,port6379,stateonline slave1:ip192.168.1.103,port6379,stateonline遇到复制问题时先检查防火墙是否开放6379端口密码认证是否一致主节点maxmemory配置是否足够银河麒麟的防火墙管理有时比较严格建议这样配置firewall-cmd --permanent --add-port6379/tcp firewall-cmd --reload4. 哨兵模式部署Redis Sentinel是官方推荐的高可用方案。我们需要在至少三个节点上部署哨兵建议部署在独立服务器上但资源有限时也可以和Redis实例同机部署。哨兵配置文件sentinel.conf关键配置port 26379 sentinel monitor mymaster 192.168.1.101 6379 2 sentinel auth-pass mymaster YourStrongPassword sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1注意几个重要参数quorum设置为2表示需要至少2个哨兵同意才能判定主节点失效down-after-milliseconds根据网络状况调整生产环境建议5000-10000msparallel-syncs控制故障转移后同时同步的从节点数量创建哨兵systemd服务文件/etc/systemd/system/redis-sentinel.service[Unit] DescriptionRedis Sentinel Afternetwork.target [Service] Userredis Groupredis ExecStart/usr/local/bin/redis-sentinel /opt/redis/conf/sentinel.conf ExecStop/usr/local/bin/redis-cli -p 26379 shutdown Restartalways [Install] WantedBymulti-user.target启动并验证哨兵systemctl daemon-reload systemctl enable --now redis-sentinel redis-cli -p 26379 sentinel masters哨兵部署常见问题排查时钟不同步会导致故障检测异常确保所有节点时间同步网络分区可能导致脑裂合理配置quorum值日志级别可以临时调整为verbose帮助排查问题5. 故障转移测试高可用集群必须经过充分测试。我建议按以下步骤验证模拟主节点宕机# 在主节点执行 systemctl stop redis观察哨兵日志journalctl -u redis-sentinel -f检查自动故障转移redis-cli -p 26379 sentinel get-master-addr-by-name mymaster验证数据一致性redis-cli -a YourStrongPassword --latency -i 1恢复原主节点并检查其变为从节点systemctl start redis redis-cli -a YourStrongPassword info replication测试时我发现几个常见现象需要注意故障转移期间会有短暂不可用通常10s大量写入时从节点同步可能延迟网络抖动可能导致误判6. 生产环境优化建议经过多次部署经验我总结出银河麒麟V10ServerSP3下的一些特别优化点内核参数追加echo net.ipv4.tcp_keepalive_time 60 /etc/sysctl.conf echo net.ipv4.tcp_keepalive_probes 3 /etc/sysctl.conf echo net.ipv4.tcp_keepalive_intvl 10 /etc/sysctl.confRedis配置优化repl-backlog-size 128mb repl-ping-replica-period 10 repl-timeout 60 cluster-node-timeout 5000监控配置使用redis_exporterPrometheus监控关键指标报警内存使用、连接数、延迟备份策略# 每日RDB备份 0 2 * * * /usr/local/bin/redis-cli -a YourStrongPassword bgsave安全加固禁用危险命令启用TLS加密Redis6支持限制绑定IP7. 常见问题解决方案在实际部署中我遇到过这些问题和解决方法启动时报jemalloc错误make MALLOClibc从节点无法同步检查主节点内存是否充足查看日志中的同步错误信息尝试手动执行sync哨兵无法达成共识检查哨兵节点间的网络连通性确保配置中的哨兵数量与实际一致验证时钟同步状态性能突然下降# 检查慢查询 redis-cli -a YourStrongPassword slowlog get # 监控内存碎片率 redis-cli -a YourStrongPassword info memory银河麒麟特有问题某些版本需要手动安装libatomicSElinux可能导致权限问题系统资源限制可能需要调整记得每次修改配置后都要先测试再应用到生产环境。可以用redis-benchmark做基础压测redis-benchmark -a YourStrongPassword -t set,get -n 100000 -c 50

更多文章