基于Linux搭建开源配置管理中心apollo

什么是apollo

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

应用什么场景

项目在不同环境对应的配置不同

Apollo优点

1.统一管理不同环境、不同集群的配置

Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。

同一份代码部署在不同的集群,可以有不同的配置,比如zk的地址等

通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖

2.配置修改实时生效(热发布)

用户在 Apollo 修改完配置并发布后,客户端能实时(1 秒)接收到最新的配置,并通知到应用程序。

3.版本发布管理

所有的配置发布都有版本概念,从而可以方便地支持配置的回滚。

4.灰度发布

支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。

5.权限管理、发布审核、操作审计

应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。所有的操作都有审计日志,可以方便地追踪问题。

6.客户端配置信息监控

可以在界面上方便地看到配置在被哪些实例使用。

7.提供 Java 和.Net 原生客户端,同时提供HTTP接口

提供了 Java 和.Net 的原生客户端,方便应用集成,同时提供了 Http 接口,非 Java 和.Net 应用也可以方便地使用。

go、python、nodejs、PHP等开发语言也提供客户端使用的案例,参考地址

8. 提供开放平台 API

Apollo 自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。不过 Apollo 出于通用性考虑,不会对配置的修改做过多限制,只要符合基本的格式就能保存,不会针对不同的配置值进行针对性的校验,如数据库用户名、密码,Redis 服务地址等。对于这类应用配置,Apollo 支持应用方通过开放平台 API 在 Apollo 进行配置的修改和发布,并且具备完善的授权和权限控制。

9.部署简单

配置中心作为基础服务,可用性要求非常高,这就要求 Apollo 对外部依赖尽可能地少,目前唯一的外部依赖是 MySQL,所以部署非常简单,只要安装好 Java 和 MySQL 就可以让 Apollo 跑起来。Apollo 还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数。

测试系统介绍

系统 Centos7
java环境 java1.8
数据库 MariaDB-10.2.9
IP 192.168.1.5

Quick Start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。

# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
# mysql -V
mysql  Ver 15.1 Distrib 10.2.9-MariaDB, for Linux (x86_64) using readline 5.1

安装apollo

下载Quick Start安装包

安装包共50M,如果访问github网速不给力的话,可以从百度网盘下载。

  1. 从GitHub下载

    • checkout或下载apollo-build-scripts项目
    • 由于Quick Start项目比较大,所以放在了另外的repository,请注意项目地址
      • https://github.com/nobodyiam/apollo-build-scripts
  2. 从百度网盘下载

    • 通过网盘链接下载,提取码: 9wwe
    • 下载到本地后,在本地解压apollo-quick-start.zip
  3. 为啥安装包要58M这么大?

    • 因为这是一个可以自启动的jar包,里面包含了所有依赖jar包以及一个内置的tomcat容器
cd /data/wwwroot/web/
git clone https://github.com/apolloconfig/apollo-build-scripts.git
由于网络原因下载比较慢wget http://js.funet8.com/centos_software/apollo-build-scripts-master.zip
unzip apollo-build-scripts-master.zip
mv apollo-build-scripts-master apollo.chuanqu.ltd
cd apollo.chuanqu.ltd

创建数据库

# mysql -u root -h192.168.1.5 -P 3306 -p123456
# 导入数据 ApolloPortalDB
> source /data/wwwroot/web/apollo.chuanqu.ltd/sql/apolloportaldb.sql
# 验证
> select `Id`, `AppId`, `Name` from ApolloPortalDB.App;# 导入 ApolloConfigDB
> source /data/wwwroot/web/apollo.chuanqu.ltd/sql/apolloconfigdb.sql> select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;

配置数据库连接信息

Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。

注意:填入的用户需要具备对ApolloPortalDB和ApolloConfigDB数据的读写权限。

# vi demo.sh#apollo config db info
apollo_config_db_url="jdbc:mysql://192.168.1.5:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=root
apollo_config_db_password=123456# apollo portal db info
apollo_portal_db_url="jdbc:mysql://192.168.1.5:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=root
apollo_portal_db_password=123456

执行启动脚本

./demo.sh start

显示

# ./demo.sh start
==== starting service ====
Service logging file is ./service/apollo-service.log
Application is running as root (UID 0). This is considered insecure.
Started [32028]
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
Application is running as root (UID 0). This is considered insecure.
Started [32251]
Waiting for portal startup....
Portal started. You can visit http://localhost:8070 now!

访问8080端口

访问 http://IP+8070

输入用户名apollo,密码admin后登录

运行客户端程序

运行./demo.sh client启动Demo客户端,忽略前面的调试信息,可以看到如下提示:

Apollo Config Demo. Please input key to get the value. Input quit to exit.

输入timeout,会看到如下信息:

> timeout
> [SimpleApolloConfigDemo] Loading key : timeout with value: 100
修改配置之后
> Changes for namespace application
Change - key: timeout, oldValue: 100, newValue: 250, changeType: MODIFIED
> timeout
Loading key : timeout with value: 250

配置nginx反向代理

域名:

apollo.chuanqu.ltd (接口)

apollo-houtai.chuanqu.ltd (后台)

server {listen       80;server_name  apollo-houtai.chuanqu.ltd;#root /data/wwwroot/web/;access_log /data/wwwroot/log/apollo.chuanqu.ltd-access.log main_aliyun;error_log off;location / {index index.php index.html;proxy_pass      http://192.168.1.5:8070;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}server {listen       80;server_name  apollo.chuanqu.ltd;#root /data/wwwroot/web/;access_log /data/wwwroot/log/apollo.chuanqu.ltd-access.log main_aliyun;error_log off;location / {index index.php index.html;proxy_pass      http://192.168.1.5:8080;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

使用新的项目

应用接入Apollo

这部分可以参考Java应用接入指南 https://www.apolloconfig.com/#/zh/usage/java-sdk-user-guide

运行客户端程序

由于使用了新的项目,所以客户端需要修改appId信息。

编辑client/META-INF/app.properties,修改app.id为你新创建的app id。

app.id=你的appId

运行./demo.sh client启动Demo客户端即可。

创建应用

设置appid为 1001,

新增配置

设置,redis_ip和 value为192.168.1.12

点击发布

vim client/META-INF/app.properties
把app.id改成刚才新增的应用的ID
app.id=1001运行客户端,输入对应key值,看是否能获取到value值。
./demo.sh client
Apollo Config Demo. Please input key to get the value. Input quit to exit.
> redis_ip
Loading key : redis_ip with value: 192.168.1.12
> redis_passwd
Loading key : redis_passwd with value: 123456新增一个redis_port的KEY
> Changes for namespace application
Change - key: redis_port, oldValue: null, newValue: 6379, changeType: ADDED
> redis_port
Loading key : redis_port with value: 6379

基于Centos7搭建开源配置管理中心apollo,完成。

参考地址

官网文档

分布式部署指南

GitHub仓库

Gitee仓库

知乎:携程开源配置中心Apollo的设计与实现

携程Apollo的PHP客户端

基于Linux搭建开源配置管理中心apollo相关推荐

  1. 携程开源配置管理中心Apollo简介

    一.为什么需要配置中心? 由于程序日益复杂,相应的配置也越来越多,对配置的期望也会变高(比如实时性,分环境管理),因此我们需要一个配置中心去管理我们的配置. 二.Apollo是什么? Apollo是携 ...

  2. linux 拍照软件有哪些,六款基于Linux的开源照片管理软件推荐

    六款基于Linux的开源照片管理软件推荐,哪吒游戏网给大家带来详细的六款基于Linux的开源照片管理软件推荐介绍,大家可以阅读一下,希望这篇六款基于Linux的开源照片管理软件推荐可以给你带来参考价值 ...

  3. Android是基于Linux的开源操作系统也是Linux内核

    Android是基于Linux的开源操作系统也是Linux内核 亿仁网 发布时间: 18-08-2023:46山西亿仁电子商务官方帐号 Android是基于Linux的开源操作系统,主要用于嵌入式设备 ...

  4. 为什么Android操作系统是基于LInux的开源操作系统,却使用java开发

    Android是基于linux的开源操作系统,而linux是使用标准C语言开发的操作系统,所以android底层驱动以及操作系统内核使用C语言以及汇编开发的. 但是 Android操作系统本身是使用J ...

  5. 开源配置管理平台-Apollo

    Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端. Apollo官网地址 转载于:https://www.cnblog ...

  6. 基于Linux搭建Web网站

    网站需求: 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别 ...

  7. 基于Linux搭建一个类似Qik手机录像直播平台(服务器端:feng streaming server + web server,客户端:Android手机应用)

    一.服务器端 基于Feng开源的流媒体服务器增加一个Web server,用来接收客户端上传的视频数据,然后通过RTSP/RTP直播到手机终端上去 二.客户端应用 1. 介绍 客户端应用主要是基于 A ...

  8. Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心【转载】

    Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心 原创 高效开发运维 架构头条 2019-02-28 作者 | 中国民生银行大数据基础平台运维组团队 编辑 | 张婵 随着 IT 业 ...

  9. Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心

    作者 | 中国民生银行大数据基础平台运维组团队 编辑 | 张婵 随着 IT 业务系统的迅速发展,中国民生银行需要考虑实现一套完整并适用于民生银行的日志文件智能分析与处理的解决方案.本文详细介绍了中国民 ...

最新文章

  1. mybatis 创建session, 缓存, 执行SQL
  2. java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)
  3. windows 2012 apache php mysql_Windows Server 2012 R2搭建 Apache+PHP+MYSQL环境
  4. future.channel().closeFuture().sync()作用 bind(port).sync()作用
  5. Android Java 自定义异常
  6. PHP 获取页面地址参数详解整理
  7. 学习响应式BootStrap来写融职教育网站,Bootsrtap第四天Header处理
  8. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器
  9. 脉脉第一干货贴,互联网职场那点事,关于面试、绩效、晋升、职业规划。
  10. Firefox 97.0.2 修复两个已遭利用的0day
  11. Inception 模型
  12. android studio插件 统计代码行数
  13. 爬虫 | 破解APP中阿里云滑动验证码
  14. PPT之背景与标题搭配
  15. java两周期的正选函数,在 Java 中如何计算双曲正弦,余弦和正切?
  16. C++ 推箱子小游戏
  17. “概率模型与计算机视觉” 林达华
  18. 戴尔G3游戏本蓝屏现象频繁解决方案(最新篇)
  19. 微信小程序云函数中的数据处理后返回
  20. ubuntu永中office的快捷键

热门文章

  1. Mac 将恢复系统添加到目的磁盘时发生错误
  2. S3C6410触摸屏驱动分析
  3. 基于C#的图像扭曲变形数值分析设计
  4. 查找排序二叉树的最小值,最大值,Next指针,并逆序打印
  5. 硬件设计-功放(三)
  6. 2020淘宝双11超级星秀猫怎么踢人 最强星秀猫怎么退出队伍
  7. 区块链技术如何对抗疫情
  8. matlab生成西门子plc源文件,西门子PLC把DB快做成源文件步骤
  9. 利用python制作拼图_利用python制作拼图小游戏的全过程
  10. 丝绸之路也可以是科技传播之路