分享 / 1 / 2 / 创建于 4年前
网站如何发布一个版本让一部分人,先更新,然后没有问题在统一更新
假如网站共服务100个客户,可以先挑选20个客户做标记。接下来将你的其中一台服务器的代码更新到最新版本,通过nginx配置,将那20个做过标记的客户的请求转发到这台更新过代码的服务器。
关键词搜索:灰度(金丝雀)部署、蓝绿部署、滚动部署
@lijizheng 再具体说下我的这个方案细节吧。
grayscale_test
1
0
grayscale_env
server { listen 8008; server_name www.xxx.com; index index.html index.htm index.php; # 开启下划线支持 underscores_in_headers on; location / { # 测试 header 转发,这里的 header 多了 http_ 前缀 if ($http_grayscale_env = "1") { # 转发到你的新服务器上 proxy_pass 39.123.123.123:80; } } }
优点是:如果代码真有问题,也只是这 20 个测试用户会无法使用。可以把影响牢牢的控制在这 20 个客户之中,其他用户无感。
@lijizheng 最简单的就是楼下兄弟说的,加一个负载均衡。如果你有5个服务器实例,在负载均衡中配置更新过代码的服务器权重为1,其他四个旧服务器权重为2。这样就会有将近11%的用户请求会进入新服务器。接下来跟踪一段时间新服务器,是否有错误日志,有就改BUG,没有就将其他四个服务器也都更新。
优点是:如果新服务器代码真有问题,用户体验上不会总是报错,因为每次请求是从备选的 5 个服务器随机选择的。
原理都是差不多的,如楼上,例如负载均衡,CDN不同的客户分流到不同的服务器!
我要举报该,理由是:
推荐文章: