1、什么叫平滑

在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问;

2、什么叫灰度

发布后让部分用户使用新版本,其它用户使用旧版本,逐步扩大影响范围,最终达到全部更新的发布方式 ;
灰度发布与平滑发布其实是关联的。当服务器的数量只有一台的时候,不存在灰度发布,一旦发布了就是所有用户都更新了,所以这个时候只有平滑发布。当服务器数量大于一台的时候,只要每台服务器都能达到平滑发布的方式,然后设定好需要发布的服务器占比数量,就可以实现灰度发布了。

单台服务器的平滑发布模式

单机状态下,应用的持续服务主要依靠Nginx的负载均衡及自动切换功能;为了能够切换应用,需要在服务器中创建两个相同的独立应用,分配两个不同的端口,例如:
app1,端口 801
app2,端口 802
在 Nginx 中,将 app1,app2 作为负载均衡加载:
创建对应发布目录,编辑配置文件
mkdir /app1 /app2 && echo “app1” >/app1/index.html && echo “app2” >/app2/index.html
在/etc/nginx/nginx.conf配置文件下的http模块儿下添加
upstream app{
server 192.168.188.129:801;
server 192.168.188.129:802;
}
在/etc/nginx/conf.d/下创建app.conf配置文件
server {
listen 801;
server_name localhost;
location / {
root /app1;
index index.html;
}
}
server {
listen 802;
server_name localhost;
location / {
root /app2;
index index.html;
}
}
server {
listen 80;
server_name locahost;
location / {
proxy_pass http://app;
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 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}
}
分别模拟801宕机及802宕机,修改相对应的配置文件
修改nginx.conf内容如下
801宕机:
upstream app {
server 192.168.188.129:801 down;
server 192.168.188.129:802;
}
然后nginx -s reload,从新加载配置文件,观察浏览器变化,然后修改app1中的index.html,恢复801,然后让802宕机;
802宕机:
upstream app {
server 192.168.188.129:801;
server 192.168.188.129:802 down;
}
同理,修改完毕之后,同时打开801,802,浏览器观察结果。

多台服务器平滑发布模式

l 有了单台平滑发布模式的基础,多台服务器就简单了。
l 每台服务器当作应用进行发布就可以了,由于nginx有宕机自动检测功能
l 只需要在每台服务器上先停止发布,然后更新文件,再启动就可以了
l 如果选择部分的服务器进行更新,那就是灰度了。