注意 key 为全大写,且中间是_分隔
启动进入对应安装包的 script 目录,执行 startup.sh 文件。
我的启动顺序为:
192.168.10.101 启动 Portal
192.168.10.102 启动 ConfigService 再启动 AdminService
192.168.10.104 启动 ConfigService 再启动 AdminService
访问:192.168.10.102:8080 和 192.168.10.104:8080 看看 Eureka 以及各服务是否正常启动,如下:
最后,在页面发布配置信息的同时,可以通过查看日志的方式,查看高可用环境是否搭建成功,日志存放在 /opt/appId/xxx.log。
灰度发布在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。
为了解决这些问题,人们研究出了多种发布策略,比如蓝绿部署、滚动发布、灰度发布等,Apollo 采用的是灰度发布的特性。
介绍灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。
在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的 A/B 测试。
当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。
实践我们使用 apollo-demo 中的 order-service 和 order-service02 两个实例来实践,order-service 在 Windows 端运行,order-service02 在 Linux 端运行。
配置文件order-service 的配置文件。
server: port: 9090 # 端口 spring: application: name: order-service # 应用名称 # apollo 相关配置 app: id: order-service # 与 Apollo 配置中心中的 AppId 一致 apollo: meta: :8080,:8080 # Apollo 中的 Eureka 注册中心地址 #cluster: SHAOY # 指定 Apollo 集群,默认为 default,相同集群实例使用对应集群的配置 #cacheDir: # 配置缓存目录,网络不可用时任然可提供配置服务 bootstrap: enable: true # 启用 apollo env: DEV # 指定环境 # 自定义配置 name: order-service-dev mysql: host: localhost port: 3306 username: root password: rootorder-service02 的配置文件。
server: port: 9091 # 端口 spring: application: name: order-service02 # 应用名称 # apollo 相关配置 app: id: order-service # 与 Apollo 配置中心中的 AppId 一致 apollo: meta: :8080,:8080 # Apollo 中的 Eureka 注册中心地址 #cluster: SHAOY # 指定 Apollo 集群,默认为 default,相同集群实例使用对应集群的配置 #cacheDir: # 配置缓存目录,网络不可用时任然可提供配置服务 bootstrap: enable: true # 启用 apollo env: DEV # 指定环境 # 自定义配置 name: order-service-dev mysql: host: localhost port: 3306 username: root password: root最终效果如下:
创建灰度点击右上角灰度按钮,点击确定创建灰度。
新增灰度配置 新增灰度规则 灰度发布 测试 放弃灰度确认放弃灰度以后会删除该灰度版本,并恢复为主版本的配置信息。
全量发布全量发布将会把灰度版本的配置合并到主分支,并发布。
发布历史可以通过发布历史来查看所有的发布记录,比如主版本发布,主版本回滚,灰度操作、灰度规则等等。