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

浙公网安备 33010602011771号