Spring Cloud 系列之 Apollo 配置中心(四)

Spring Cloud 系列之 Apollo 配置中心(一)

Spring Cloud 系列之 Apollo 配置中心(二)

Spring Cloud 系列之 Apollo 配置中心(三)

本篇文章讲解 Apollo 高可用环境搭建,灰度发布,教大家搭建企业中真实环境的配置中心。

高可用环境搭建

点击链接观看:Apollo 高可用环境搭建视频(获取更多请关注公众号「哈喽沃德先生」)

分析 数据库高可用

方案很多,比如双主结构、主从结构、异地备份等等,还可以选择第三方云数据库服务,让云服务厂商去保证数据库的高可用性,这样不仅比自己实现起来更可靠、更轻松,而且还方便管理等。

AdminService 高可用

在 Apollo 中所有的 Admin Service 都会注册到 Eureka 里,所以我们只需要配置多台 AdminService,数据库采用同一套即可。

ConfigService 高可用

在 Apollo 的设计中每个 ConfigService 也是一个 Euerka 的注册中心,所以保证 ConfigService 高可用的前提是保证 Eureka 的高可用,Eureka 的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。

实践

再来一台机器 192.168.10.104 然后将 apollo-configservice-x.x.x-github.zip 和 apollo-adminservice-x.x.x-github.zip 上传至该机器,解压以后都配置 102 机器的数据库,我们搭建一个 DEV 的高可用环境。

配置数据库

将 ConfigService 和 AdminService 上传至 192.168.10.104

解压

打开config目录下的application-github.properties文件

填写正确的 ApolloConfigDB 数据库连接串信息,注意用户名和密码后面不要有空格!

修改完的效果如下:

# DataSource spring.datasource.url = jdbc:mysql://192.168.10.102:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 1234 调整服务端配置

Eureka 注册中心地址存储在 ApolloConfigDB.ServerConfig 表中,如下图,在③Value的地方添加多个地址即可。

Spring Cloud 系列之 Apollo 配置中心(四)

配置 apollo-portal 的 meta service 信息

Apollo Portal 需要在不同的环境访问不同的 meta service(apollo-configservice) 地址,所以我们需要在配置中提供这些信息。默认情况下,meta service 和 config service 是部署在同一个JVM进程,所以 meta service 的地址就是 config service 的地址。

对于 1.6.0 及以上版本,可以通过 ApolloPortalDB.ServerConfig 中的配置项来配置 Meta Service 地址。

新版本配置方式

通过 apollo.portal.meta.servers 添加 meta service(apollo-configservice) 地址,类似以下方式,修改完需要重启生效。

Spring Cloud 系列之 Apollo 配置中心(四)

{ "DEV":"http://192.168.10.102:8080,:8080", "PRO":"http://192.168.10.103:8080" } 旧版本配置方式

打开apollo-portal-x.x.x-github.zip中config目录下的apollo-env.properties文件。

假设 DEV 的 apollo-configservice 未绑定域名,地址是 1.1.1.1:8080,FAT 的 apollo-configservice 绑定了域名 apollo.fat.xxx.com,UAT 的 apollo-configservice 绑定了域名 apollo.uat.xxx.com,PRO 的 apollo-configservice 绑定了域名 apollo.xxx.com,那么可以如下修改各环境 meta service 服务地址,格式为${env}.meta=http://${config-service-url:port},如果某个环境不需要,也可以直接删除对应的配置项,参考案例如下:

dev.meta=http://1.1.1.1:8080 fat.meta=http://apollo.fat.xxx.com uat.meta=http://apollo.uat.xxx.com pro.meta=http://apollo.xxx.com

如果采用旧版本配置方式,本小节配置方案如下:

#local.meta=http://localhost:8080 dev.meta=http://192.168.10.102:8080,:8080 #fat.meta=http://fill-in-fat-meta-server:8080 #uat.meta=http://fill-in-uat-meta-server:8080 #lpt.meta=${lpt_meta} pro.meta=http://192.168.10.103:8080

除了通过apollo-env.properties方式配置 meta service 以外,apollo 也支持在运行时指定 meta service(优先级比apollo-env.properties高):

通过 Java System Property ${env}_meta

可以通过 Java 的 System Property ${env}_meta来指定

如java -Ddev_meta=http://config-service-url -jar xxx.jar

也可以通过程序指定,如System.setProperty("dev_meta", "http://config-service-url");

通过操作系统的 System Environment ${ENV}_META

如DEV_META=http://config-service-url

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspjdd.html