携程Apollo统一配置管理中心
# Apollo统一配置管理中心 [TOC] ## 可用性说明 | 场景 | 影响 | 降级 | 原因 | | --------------------- | ---------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 某台配置服务下线 | 无影响 | | 配置服务无状态,客户端重连其他配置服务 | | 所有配置服务下线 | 客户端无法读取最新配置,门户无影响 | 客户端重启时,可以读取本地缓存配置文件。如果是新扩容的机器,可以从其他机器上获取已缓存的配置文件。 | | | 某台Admin Service下线 | 无影响 | | Admin Service无状态,Portal重连其他Admin Service | | 所有管理服务下线 | 客户端无影响,门户无法更新配置 | | | | 某台Portal下线 | 无影响 | | 门户网站通过SLB绑定多台服务器,重试后可以的服务器 | | 全部门户下线 | 客户端无影响,门户无法更新配置 | | | | 某数据中心下线 | 无影响 | | 数据中心部署,数据完全同步,Meta Server/Portal域名通过SLB自动切换到另外的数据中心 | | 数据库地图机 | 客户端无影响,门户无法更新配置 | 配置服务开启配置缓存后,对配置的读取数据库进程影响 | | ## 官方文档 https://www.apolloconfig.com/#/zh/usage/apollo-user-guide ## 快速安装 1. 准备一下软件/环境 1. [Java](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) => JDK 1.8+ 2. [MySQL](https://www.mysql.com/downloads/) => 5.6.6+ 3. [Gitbash](https://gitforwindows.org/) 4. [Apollo QuickStart](https://github.com/nobodyiam/apollo-build-scripts) 2. 安装Java JDK, MySQL与Git 3. 解压缩QuickStart,在Mysql库中执行**sql文件夹中的两个.sql文件**。会生成两个Apollo所需的两个数据库 4. 将demo.sh中数据库的信息改为自己的mysql,主要是**url**、**username**与**password** ```go # apollo config db info apollo_config_db_url=jdbc:mysql://192.168.80.70:3306/ApolloConfigDB?characterEncoding=utf8 apollo_config_db_username=root apollo_config_db_password=213224591 # apollo portal db info apollo_portal_db_url=jdbc:mysql://192.168.80.70:3306/ApolloPortalDB?characterEncoding=utf8 apollo_portal_db_username=root apollo_portal_db_password=213224591 ``` 5. 通过以下命令启动(切换到quickstart的目录中),后续可以将其作为Windows服务 ```go cmd>cd C:\Apollo\apollo-build-scripts-master cmd>demo.sh start ``` 启动后会最终显示以下信息: ```go ==== starting service ==== Service logging file is ./service/apollo-service.log Started [3099] Waiting for config service startup....... Config service started. You may visit http://localhost:8080 for service status now! Waiting for admin service startup.... Admin service started ==== starting portal ==== Portal logging file is ./portal/apollo-portal.log Started [4071] Waiting for portal startup...... Portal started. You can visit http://localhost:8070 now! ``` 6. 配置中心管理地址:http://localhost:8070,默认账号apollo,密码admin 7. 创建自己的项目,APPId是和应用程序关联的主要标识。 8. 创建命名空间(Namespace),选择公用(public)即可。 9. 新增配置项,例:DocumentTitle,值为【测试文档】。 10. 点击提交、发布。 ## 应用程序连接Apollo 1. 安装**Com.Ctrip.Framework.Apollo.Configuration**程序包。 2. 修改appsettings.json,添加apollo节点 ```json "apollo": { "AppId": "Cajer", // 刚才创建的AppId "MetaServer": "http://192.168.80.70:8080" // 更改为刚才部署环境的IP } ``` 3. 更改Program.cs ```c# public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, builder) => { builder .AddApollo(builder.Build().GetSection("apollo")) .AddDefault() .AddNamespace("TEST1.application"); // 部门.命名空间 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); ``` 4. 将系统中读取配置文件的代码,改为Apollo中配置的键即可。例: ```c# Appsettings.app(new string[] { "AppSettings", "DocumentTitle" }).ToString() // 改为 Configuration.GetValue<string>("DocumentTitle") ``` 5. 运行项目查看**DocumentTitle**的值,appsettings.json中的值会被Apollo中的覆盖。 6. 修改Apollo中配置的值并发布,重新刷新页面,发现系统中会立即生效。 7. 中途Apollo服务中断后,程序会加载最后一次获取的键值对来运行,不会发生异常。
----搬砖,砖来自