部署手册-redis-nacos-xxl-job-nginx-等
--------------------------------------------------------------------redis----------------------------------------------------------------------------------------------
Redis‑6.2.14.tar.gz 源码编译部署【主从复制】安装文档
环境:银河麒麟 V10(x86_64 /aarch64 ARM),OpenJDK8,redis‑6.2.14.tar.gz架构:1 主 + 1 从,无哨兵;主节点写,从节点只读同步。机器规划示例| 节点 | IP | 端口 | 角色 ||---|---|---|---||redis‑master|192.168.1.100|6379 | 主节点 ||redis‑slave|192.168.1.101|6379 | 从节点 |
两台服务器都要执行源码编译安装;仅配置文件区分主 / 从。
一、前置依赖(两台机器都执行)
# 安装编译依赖
yum install -y gcc make tcl
二、源码编译安装(主、从两台机器完全一样)
# 上传 redis‑6.2.14.tar.gz 到 /opt
cd /opt
tar -zxvf redis-6.2.14.tar.gz
cd redis-6.2.14
# 编译底层依赖(ARM架构必须执行,x86建议也执行)
cd deps
make hiredis lua jemalloc linenoise
cd ..
# 编译
make -j$(nproc)
# 安装到指定目录
make install PREFIX=/usr/local/redis
# 创建目录
mkdir -p /usr/local/redis/{conf,logs,data}
- 程序目录:
/usr/local/redis/bin - 配置目录:
/usr/local/redis/conf - 数据持久化:
/usr/local/redis/data - 日志目录:
/usr/local/redis/logs
cp /opt/redis-6.2.14/redis.conf /usr/local/redis/conf/redis.conf
三、主节点配置(192.168.1.100)
/usr/local/redis/conf/redis.conf# 监听所有网卡,允许从节点连接
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
# pid、日志、数据目录
pidfile /usr/local/redis/redis.pid
logfile "/usr/local/redis/logs/redis.log"
dir /usr/local/redis/data
# 设置redis密码(主从密码保持一致)
requirepass Redis@2026
# 从节点连接主节点需要认证,主节点开启
masterauth Redis@2026
# 持久化
appendonly yes
appendfilename "appendonly.aof"
主节点不需要replicaof 配置。
四、从节点配置(192.168.1.101)
/usr/local/redis/conf/redis.confbind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /usr/local/redis/redis.pid
logfile "/usr/local/redis/logs/redis.log"
dir /usr/local/redis/data
requirepass Redis@2026
# 重点:指定主节点IP和端口
replicaof 192.168.1.100 6379
# 从节点连接主节点的密码,必须和主节点requirepass一致
masterauth Redis@2026
appendonly yes
redis6 版本关键字:replicaof,不要写旧版slaveof(向下兼容,但官方推荐 replicaof)
五、防火墙放行(两台机器)
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
firewall-cmd --list-ports
主从之间网络必须互通 6379 端口;从节点会主动向主节点建立同步连接。
六、启动服务(主先启动,再启动从)
1)主节点启动
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
2)从节点启动
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ps -ef | grep redis
七、验证主从复制
登录主节点
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a Redis@2026
# 查看复制信息
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.101,port=6379,state=online,...
登录从节点
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a Redis@2026
127.0.0.1:6379> info replication
role:slave
master_host:192.168.1.100
master_port:6379
master_link_status:up
master_link_status:up代表主从同步正常;down 代表同步失败,检查网络、密码、bind、防火墙。
读写测试
- 主节点写:
set test_key 123 - 从节点读:
get test_key,可以读到数据代表复制生效。
默认从节点只读,直接在从节点执行 set 会报错。
八、systemd 系统服务配置(开机自启,推荐)
/etc/systemd/system/redis.service[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/redis/redis.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a Redis@2026 shutdown
Restart=no
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 开机自启
systemctl enable redis
# 状态查看
systemctl status redis
九、SpringBoot2.7.18 连接主从注意点
spring‑boot‑starter‑data‑redis(lettuce 客户端)普通主从模式,应用只连接主节点 IP;写请求走主,读请求默认依旧走主;如果需要读写分离,需要使用 Redis Sentinel 哨兵或者 Redis Cluster 集群。
spring.redis.host=192.168.1.100
spring.redis.port=6379
spring.redis.password=Redis@2026
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=2
spring.redis.lettuce.pool.max-wait=-1
十、常见故障排查
master_link_status:down- 网络 telnet 从节点测试
telnet 主IP 6379 - 确认
masterauth密码和主节点requirepass完全一致 - 主节点
bind 0.0.0.0,关闭 protected-mode 或者配置允许访问 IP
- 网络 telnet 从节点测试
- 主从数据不同步:看 redis 日志
logs/redis.log,排查磁盘满、权限问题 - 从节点可以写数据:确认配置
replica-read-only yes(6.2 默认开启)
说明:单纯主从没有故障自动转移能力;主节点宕机,从节点不会自动升级为主;如需自动故障切换,需要部署哨兵 Sentinel。
----------------------------------------------------------------------nacos--------------------------------------------------------------------------------------------
------------------------------------------------------------------------xxl-job------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------nginx-------------------------------------------------------------------------------------
/usr/lib/systemd/system/nginx.service
systemd 的 nginx 单元文件,系统级服务配置,不要直接编辑此文件,修改请用systemctl edit nginx,会生成/etc/systemd/system/nginx.service.d/override.conf覆盖配置。
标准参考模板
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
关键字段说明
Type=forking:nginx 默认后台 fork 子进程模式;部分编译版本用Type=notifyPIDFile=/run/nginx.pid:必须和 nginx.conf 里pid路径保持一致,否则 systemd 识别不到进程ExecStartPre:启动前校验配置语法,启动失败直接报错,避免坏配置启动ExecReload:平滑重载,不中断业务PrivateTmp=true:使用私有临时目录,安全加固
常用操作
# 修改覆盖配置(推荐方式,不改动原文件)
systemctl edit nginx
# 修改完重载systemd
systemctl daemon-reload
# 查看服务状态
systemctl status nginx
# 启动/重启/重载/停止
systemctl start nginx
systemctl restart nginx
systemctl reload nginx
systemctl stop nginx
# 开机自启
systemctl enable nginx
常见问题
- 启动失败:PID 文件找不到
检查 nginx.conf 中
pid指令路径,和 service 的PIDFile必须一致。
nginx -t
-
改了 nginx.service 不生效修改
/usr/lib/systemd/system/下文件后,必须执行systemctl daemon-reload。 -
区分两个路径
/usr/lib/systemd/system/nginx.service:软件包安装原始单元文件,升级包会覆盖/etc/systemd/system/nginx.service:管理员自定义单元,优先级更高
- 生产加固版 nginx.service(限制权限、禁止内存 dump、沙箱限制)
- 或者排查你当前机器上 nginx.service 的报错。
正确方案:firewalld 永久放行 80 端口
# 放行http(80)
firewall-cmd --permanent --add-service=http
# 如果需要https 443也一并放行
firewall-cmd --permanent --add-service=https
# 重载防火墙生效
firewall-cmd --reload
# 查看已放行服务
firewall-cmd --list-services
验证
# 启动防火墙
systemctl start firewalld
systemctl status firewalld
http:// 应该依然通。排查命令,定位问题
# 查看防火墙运行状态
systemctl status firewalld
# 查看当前运行时规则(不带permanent的内存规则)
firewall-cmd --list-all
# 确认nginx监听
ss -tlnp | grep :80
# 本机curl自测
curl http://
补充说明几个坑
systemctl stop firewalld临时关闭;systemctl disable firewalld才是禁止开机自启,生产环境不建议禁用防火墙,优先放行端口。- 如果服务器还有云安全组,firewalld 放行了 80,云平台安全组也要入方向放行 80,否则外部依旧访问不通。
- 如果是多网卡环境,确认防火墙 zone 是否正确(public)。
如果你想直接放行端口号方式(等价)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
--------------------------------------------------------------------------------jdk----------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------

浙公网安备 33010602011771号