部署手册-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 | 从节点 |
两台服务器都要执行源码编译安装;仅配置文件区分主 / 从。

一、前置依赖(两台机器都执行)

bash
 
 
# 安装编译依赖
yum install -y gcc make tcl
 

二、源码编译安装(主、从两台机器完全一样)

bash
 
 
# 上传 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
复制官方配置文件模板
bash
 
 
cp /opt/redis-6.2.14/redis.conf /usr/local/redis/conf/redis.conf
 

三、主节点配置(192.168.1.100)

编辑 /usr/local/redis/conf/redis.conf
ini
 
 
# 监听所有网卡,允许从节点连接
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.conf
ini
 
 
bind 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)

五、防火墙放行(两台机器)

bash
 
 
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
firewall-cmd --list-ports
 
主从之间网络必须互通 6379 端口;从节点会主动向主节点建立同步连接。

六、启动服务(主先启动,再启动从)

1)主节点启动

bash
 
 
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
 

2)从节点启动

bash
 
 
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
 
查看进程
bash
 
 
ps -ef | grep redis
 

七、验证主从复制

登录主节点

bash
 
 
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a Redis@2026
# 查看复制信息
127.0.0.1:6379> info replication
 
主节点输出关键片段:
plaintext
 
 
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.101,port=6379,state=online,...
 

登录从节点

bash
 
 
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a Redis@2026
127.0.0.1:6379> info replication
 
从节点输出关键片段:
plaintext
 
 
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
ini
 
 
[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
 
加载生效
bash
 
 
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 集群。
application.properties 示例(只连主节点)
properties
 
 
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
 

十、常见故障排查

  1. master_link_status:down
    • 网络 telnet 从节点测试 telnet 主IP 6379
    • 确认masterauth密码和主节点requirepass完全一致
    • 主节点bind 0.0.0.0,关闭 protected-mode 或者配置允许访问 IP
  2. 主从数据不同步:看 redis 日志 logs/redis.log,排查磁盘满、权限问题
  3. 从节点可以写数据:确认配置 replica-read-only yes(6.2 默认开启)
说明:单纯主从没有故障自动转移能力;主节点宕机,从节点不会自动升级为主;如需自动故障切换,需要部署哨兵 Sentinel。
如果你需要,我可以补充一份 Redis‑6.2.14 哨兵 sentinel 部署文档。

----------------------------------------------------------------------nacos--------------------------------------------------------------------------------------------

------------------------------------------------------------------------xxl-job------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------nginx-------------------------------------------------------------------------------------

 

/usr/lib/systemd/system/nginx.service

/usr/lib/systemd/system/nginx.service

systemd 的 nginx 单元文件,系统级服务配置,不要直接编辑此文件,修改请用 systemctl edit nginx,会生成 /etc/systemd/system/nginx.service.d/override.conf 覆盖配置。

标准参考模板

ini
 
 
[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
 

关键字段说明

  1. Type=forking:nginx 默认后台 fork 子进程模式;部分编译版本用 Type=notify
  2. PIDFile=/run/nginx.pid:必须和 nginx.conf 里 pid 路径保持一致,否则 systemd 识别不到进程
  3. ExecStartPre:启动前校验配置语法,启动失败直接报错,避免坏配置启动
  4. ExecReload:平滑重载,不中断业务
  5. PrivateTmp=true:使用私有临时目录,安全加固

常用操作

bash
 
 
# 修改覆盖配置(推荐方式,不改动原文件)
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
 

常见问题

  1. 启动失败:PID 文件找不到
     
    检查 nginx.conf 中 pid 指令路径,和 service 的 PIDFile 必须一致。
bash
 
 
nginx -t
 
  1. 改了 nginx.service 不生效
     
    修改 /usr/lib/systemd/system/ 下文件后,必须执行 systemctl daemon-reload
  2. 区分两个路径
  • /usr/lib/systemd/system/nginx.service:软件包安装原始单元文件,升级包会覆盖
  • /etc/systemd/system/nginx.service:管理员自定义单元,优先级更高
如果你需要,我可以给你:
  • 生产加固版 nginx.service(限制权限、禁止内存 dump、沙箱限制)
  • 或者排查你当前机器上 nginx.service 的报错。

正确方案:firewalld 永久放行 80 端口

bash
 
 
# 放行http(80)
firewall-cmd --permanent --add-service=http
# 如果需要https 443也一并放行
firewall-cmd --permanent --add-service=https

# 重载防火墙生效
firewall-cmd --reload

# 查看已放行服务
firewall-cmd --list-services
 

验证

bash
 
 
# 启动防火墙
systemctl start firewalld
systemctl status firewalld
 
此时再访问 http:// 应该依然通。

排查命令,定位问题

bash
 
 
# 查看防火墙运行状态
systemctl status firewalld

# 查看当前运行时规则(不带permanent的内存规则)
firewall-cmd --list-all

# 确认nginx监听
ss -tlnp | grep :80

# 本机curl自测
curl http://
 

补充说明几个坑

  1. systemctl stop firewalld 临时关闭;systemctl disable firewalld 才是禁止开机自启,生产环境不建议禁用防火墙,优先放行端口。
  2. 如果服务器还有云安全组,firewalld 放行了 80,云平台安全组也要入方向放行 80,否则外部依旧访问不通。
  3. 如果是多网卡环境,确认防火墙 zone 是否正确(public)。

如果你想直接放行端口号方式(等价)

bash
 
 
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

--------------------------------------------------------------------------------jdk----------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------

posted @ 2026-09-09 10:07  hanease  阅读(5)  评论(0)    收藏  举报