SQLServer数据同步 + Nginx代理自动切换SFTP和Web网站

场景:当A服务器挂掉后,B服务器需要接收各厂商的文件,但是域名无法自动切换过来,将会导致各厂商无法上传订单文件。业务需要对服务器的双机热备,站点异常切换,保证站点的正常运行。

场景+方案:(目前仅有两台服务器:服务器A和服务器B)

A:服务器A
B:服务器B

场景:当A服务器挂掉后,B服务器需要接收各厂商的文件,但是域名无法自动切换过来,将会导致各厂商无法上传订单文件。
方案: 方案1:采购一台云服务器作为代理,如下图的【云服务器/主机(代理)】,当服务器A的服务器挂掉后,可以自动切换到服务器B。(这里的域名需要切换到代理服务器上。) 方案2:两台机子相互监测是否挂掉,是的话发送异常,并电话通知相关负责人进行切换处理。(这里可以异地备份到公司,通知公司相关人员的启用处理。) 方案3:采购一台云服务器作为数据集合地,服务器A和服务器B的数据都从这台云服务器里进行同步获取。 (建议先给出需要晚上发通知的数据条件,然后根据实际情况,将需要发送订单/拨打电话的数据进行同步处理。) 附:这里附加考虑服务器B是否需要移动到公司,做异地备份使用。 方案特点说明: 方案1:花钱,事后需要数据还原(人力),操作较为复杂,数据传输可能变慢(因为数据都是通过代理服务器),由于不能让两台正常的服务器同时作业,建议给出针对性的数据备份。 方案2:省钱,但是非工作时间异常需要人员处理。(网管+开发人员),操作较为简单,但是数据延迟较长,建议和相关处理人员确认。 方案3:操作较为简单,但是云服务器依赖性较高,代码改动较大。

 

需求1,SQLServer数据【复制】订阅/发布同步:(这里对SQLServer的一个数据实时同步)

 

参阅:https://blog.csdn.net/weixin_45130813/article/details/118962670

 

需求2,访问和数据接收正常:

目前有服务器A、服务器B,预计外加一台云服务器作为Nginx代理服务器使用(简称云服务器)。

Nginx下载:https://nginx.org/en/download.html(建议稳定版)

 

nginx.conf的配置:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

#解析自动切换Web
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    upstream webSvr{
        server 服务器A的IP;
        server 服务器B的IP backup;
    }

    server {
        listen       80;
        server_name  云服务器的IP;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        location / {
            proxy_pass http://webSvr;#注意这里的http(有可能是https)
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        }
    }

}
#解析自动切换SFTP
stream {
        upstream sftp{
                #hash $remote_addr consistent;
                #server 服务器A的IP max_fails=3 fail_timeout=60s;  #服务器的ip:sftp服务器的端口
                server 服务器A的IP;  #服务器的ip:sftp服务器的端口
                server 服务器B的IP backup;  #服务器的ip:sftp服务器的端口
        }
        #sftp代理
        server {
                listen 10022; #随意设置本地的监听端口(需要在安全组中开放)
                proxy_connect_timeout 300s;
                proxy_timeout 300s;
                proxy_pass sftp;
        }
}

图例:

 

 

感谢:https://cloud.tencent.com/developer/article/1858914

https://www.cnblogs.com/hi-lijq/p/17875207.html

https://blog.csdn.net/qq_41918107/article/details/140815306

 

posted @ 2025-07-07 15:46  蜗牛的礼物  阅读(13)  评论(0)    收藏  举报