共计 1466 个字符,预计需要花费 4 分钟才能阅读完成。
背景
当时该模块服务为物理机,需要迁移到内部云上,该业务是在nginx上通过proxy_pass代理了该模块接口服务,类似如下
location /authxxxx/ {
proxy_pass http://192.168.44.56:18080/;
}
迁移挺简单的,将地址改为私云新地址即可,后面nginx -s reload
就好了,但甲方baba说不确定后续还会不会迁移,因为他们也是第一次上私云,循序渐进安排项目迁移。。。。一听到可能多次,就裂开,因为这种变更得去客户现场操作,所以得想个方式动态变更,剧本已经想好:
- 第一次迁移:物理机->云
- 云上环境部署
- 前端nginx切流
- 第n次迁移:云->云
- 利用私云上快照快速克隆创建
- 利用reslover+域名代理,后面切换dns解析即可
以后对于甲方集群机器挪动得变更,博主这里要做得事情就会轻松很多,因为私云上得甲方操作,只有服务器上得操作才需要我
nginx reslover
reslover指令语法
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location
The address can be specified as a domain name or IP address, with an optional port (1.3.1, 1.2.2). If port is not specified, the port 53 is used. Name servers are queried in a round-robin fashion
该指令用于指定nginx得dns服务器:
- address:可以用ip或域名(这个域名则用本地配置得dns进行解析获得最终dns服务器地址)。
- valid:配置nginx缓存dns记录过期时间,不配置则用源记录得ttl,否则覆盖源纪录ttl
- ipv6:配置解析域名ipv6地址,nginx默认会从dns服务器解析域名ipv4和ipv6,如果不需要ipv6则off关闭
resolver_timeout指令语法
Syntax: resolver_timeout time;
Default:
resolver_timeout 30s;
Context: http, server, location
该指令是配置dns解析超时时间
reslover配置样例
此处需要提前准备内网dns解析服务,此处博主也不需要建,直接申请使用私云内网域解析域名服务即可。读者则可以使用dnsmasq或bind9搭建dns服务,可以参考:https://www.xadocker.cn/archives/1539.html
server {
# 略
resolver 10.xxx.xx.x 600s ipv6=off;
resolver_timeout 5s;
location /authxxxx/ {
proxy_pass http://sva-xxxproject-clusterxx.aaabbb.com:18080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 1600k;
proxy_buffers 4 3200k;
}
}
正文完