[运维] 远程回家方式小结

  • 端口映射
  • Nginx反向代理
  • OpenVPN
  • SSH隧道
ssh -p 2233 -L 3389:192.168.0.100:3389 your_username@public_server_ip -N

只要执行ssh命令的终端开启,连接本机的3389端口就会穿透到192.168.0.100:3389

施工中:

upstream home_server {
    server your-ddns-domain.com:port max_fails=3 fail_timeout=10s;
    server localhost:backup-port backup;
}

server {
    listen 80;
    location / {
        proxy_pass http://home_server;
    }
}

• max_fails=3和fail_timeout=10s设置当家用服务器连续3次请求失败后,将流量切换到备选的本地服务(例如显示“服务暂时不可用”或提供缓存内容)。

#!/bin/bash
if ping -c 1 -W 1 your-ddns-domain.com >/dev/null; then
    echo "Home server is reachable"
else
    echo "Switching to local backup"
    # 启动本地服务或显示离线页面
    # 可以重启Nginx或者更新Nginx配置以激活备用服务
    systemctl reload nginx
fi

在这种场景下,通过企业服务器作为中间代理,可以实现高可用性方案。方案的核心是在企业服务器上部署反向代理,同时对家用路由器的服务可达性进行监控,当家用路由器的公网IP失效时自动切换到企业服务器,使访问不中断。以下是方案的设计和实现细节:

架构设计

1.	家用服务器和路由器
•	家用服务器设置在家用路由器后,主要负责实际服务的提供。
•	路由器通过DDNS(动态域名服务)提供公网访问。
•	使用健康检查脚本(例如通过Ping或HTTP请求)在企业服务器上检查家用服务器的可达性。
2.	企业服务器
•	部署反向代理(如Nginx、HAProxy)和健康检查脚本,用于检测家用服务器的健康状态。
•	如果家用服务器的DDNS无法访问,则切换流量至企业服务器本地服务或提供缓存数据,尽量减少服务中断时间。

方案实现

1.	反向代理配置
•	在企业服务器上部署反向代理(Nginx、HAProxy等),配置为通过家用服务器的DDNS域名进行转发,并设置健康检查。
•	反向代理示例(假设使用Nginx):

upstream home_server {
server your-ddns-domain.com:port max_fails=3 fail_timeout=10s;
server localhost:backup-port backup;
}

server {
listen 80;
location / {
proxy_pass http://home_server;
}
}

•	max_fails=3和fail_timeout=10s设置当家用服务器连续3次请求失败后,将流量切换到备选的本地服务(例如显示“服务暂时不可用”或提供缓存内容)。

2.	健康检查脚本
•	企业服务器上编写健康检查脚本定时检查家用服务器的可达性。
•	若DDNS域名不可用,则向代理服务(Nginx等)发送信号切换到本地服务。
•	可使用Shell脚本来定期执行检查:

!/bin/bash

if ping -c 1 -W 1 your-ddns-domain.com >/dev/null; then
echo "Home server is reachable"
else
echo "Switching to local backup"
# 启动本地服务或显示离线页面
# 可以重启Nginx或者更新Nginx配置以激活备用服务
systemctl reload nginx
fi

3.	DNS解析方案
•	使用智能DNS解析,先尝试解析家用路由器的DDNS域名,如果失败则切换到企业服务器的IP。
•	或者在企业服务器上设置CNAME解析,以提供同一个域名对外,自动切换路由。

选择理由

•	简洁性:反向代理方案配置简单,且企业服务器的固定IP避免了因DDNS解析不稳定导致的故障。
•	容错能力:通过健康检查和反向代理的组合,企业服务器可以在家用服务器不可达时快速提供服务。
•	可扩展性:该方案可以在家庭服务器恢复后自动切换回原有服务,不需要手动干预,便于维护。
posted @ 2024-10-09 20:39  夜歌乘年少  阅读(48)  评论(0)    收藏  举报