docker-compose 一键部署分布式配置中心Apollo

简介

说起分布式肯定要想到分布式配置中心、分布式日志、分布式链路追踪等

在分布式部署中业务往往有很多配置比如: 应用程序在启动和运行时需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等,都需要去维护和配置,但不可能一台台服务器登录上去配置
今天我要跟大家分享一下分布式配置中心Apollo:

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

搭建

官方文档中有两种搭建方式一种是下载源代码进行搭建,一种是使用Docker或者K8S进行搭建,今天我们使用Docker来进行搭建,毕竟Docker对于开发者来说更友好一些。

如果已有Mysql服务,推荐已有Mysql服务或者云服务RDS来当数据库使用,毕竟数据无价。

version: "3"
services:apollo-configservice: #Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端image: apolloconfig/apollo-configservice:1.8.1restart: always#container_name: apollo-configservicevolumes:- ./logs/apollo-configservice:/opt/logsports:- "8080:8080"environment:- TZ='Asia/Shanghai'    - SERVER_PORT=8080- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- EUREKA_INSTANCE_HOME_PAGE_URL=http://xxx.xxx.xxx.xxx:8080- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!apollo-adminservice: #Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)image: apolloconfig/apollo-adminservice:1.8.1restart: always#container_name: apollo-adminservicevolumes:- ./logs/apollo-adminservice:/opt/logsports:- "8090:8090"depends_on:- apollo-configserviceenvironment:- TZ='Asia/Shanghai'    - SERVER_PORT=8090- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!apollo-portal: #管理界面image: apolloconfig/apollo-portal:1.8.1restart: alwayscontainer_name: apollo-portalvolumes:- ./logs/apollo-portal:/opt/logsports:- "8070:8070"depends_on:- apollo-adminserviceenvironment:- TZ='Asia/Shanghai'    - SERVER_PORT=8070- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- APOLLO_PORTAL_ENVS=dev- DEV_META=http://xxx.xxx.xxx.xxx:8080- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!

从以上docker-compose.yaml中可以看出共包含3个服务,分别为:

  1. Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端

  2. Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

  3. Portal(管理界面)
    如果想了解它们之间的运行方式推荐查看官方文档

日志挂载到外部./logs目录下

大家可以看到上方并没有给出Mysql的部署,如果需要使用容器部署Mysql可以参照下方docker-compose.yaml

version: '3'services: mysql: # myslq 数据库image: 'mysql/mysql-server'container_name: 'mysql'restart: alwayscommand: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1environment: #环境变量MYSQL_ROOT_HOST: "%" MYSQL_ROOT_PASSWORD: passwordMYSQL_USER: brookMYSQL_PASSWORD: passwordports:- "3306:3306"

上述mysql的docker-compose.yaml 仅供测试使用

初始化数据库
初始化

[apolloconfigdb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloconfigdb.sql) 和 [apolloportaldb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloportaldb.sql)


数据库初始化后,记得修改apolloconfigdb库中serverconfig表的 eureka.service.url 否则 apollo-adminservice无法注册到eureka

修改后切换到Apollo docker-compose.yaml目录 然后使用

docker-compose up -d #启动文件中的三个服务并且后台运行


查看启动情况

docker-compose ps


访问 http://10.0.0.53:8070/ #Apollo管理端

默认用户名:apollo
默认密码:admin

创建一个测试项目

测试

创建一个.NetCore项目 添加Apollo.net client

添加Apollo

配置Apollo

配置如上

添加测试内容
代码中获取Apollo

启动程序 请求/weatherforecast/apollotest

发现并未获取到apollo中设置的配置

检查Apollo发现配置的值并没有发布

所以大家配置或者修改了Apollo一定记得发布,我们发布后再次刷新浏览器

发现数据已经是新的数据了,我们再次修改一下Apollo的Value

刷新

致此 Apollo已经搭建完毕并且可以正常使用了

代码

示例中的代码在

https://github.com/yuefengkai/Brook.Apollo

欢迎大家Start

注意如果程序启动后无法拉取配置,可以打开Apollo的日志,在控制台中可以看到详细的配置 放到Program.cs Main函数第一行即可!

LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);

参考

1.https://github.com/apolloconfig/apollo.net
2.https://github.com/apolloconfig/apollo
3.https://github.com/apolloconfig/apollo/tree/master/scripts/docker-quick-start

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python调用gpu进行运算_用python做GPU计算(1)——安装以及配置

实验小白鼠:联想Y470 显卡 GT550M 操作系统 ubuntu12.04 64位 python2.7ubuntu12.04 需要重新安装显卡驱动,不过可以直接安装cuda_5.0.35_linux_64_ubuntu11.10-1.run 程序包,会一并更新显卡驱动这是官方的下载地址https://developer.nvidia.…

Sharepoint Designer 2007 Workflow

参考 http://office.microsoft.com/en-us/sharepoint-designer-help/collect-data-from-a-user-in-a-workflow-HA010209808.aspx 注意 这里的Review Document是一个Task List, 应该在site里面创建一个task list,可以用默认的Tasks.转载于:https://www.cnblogs.com/F…

各种排序算法及其实现总结

排序算法总结 1.插入排序 一般来说,插入排序 都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序&…

uva705--slash maze

/*这道题我原本是将斜线迷宫扩大为原来的两倍,但是在这种情况下对于在斜的方向上的搜索会变的较容易出错,所以参考了别人的思路后将迷宫扩展为原来的3倍,这样就变成一般的迷宫问题了*/ 1 #include"iostream"2 #include"stdio.…

重磅公开!集14位名师教案的《最全高中数学解题思想方法汇编》

全世界只有3.14 % 的人关注了爆炸吧知识解数学题,除了掌握有关的数学知识之外,最好掌握一定的解题技巧甚至知道点解题思想。要知道高考试题的解答过程中蕴含着重要的数学思想方法,如果能有意识地在解题过程中加以运用,势必会取得很…

极域课堂管理系统软件如何取消控制_智慧物流自动化智能仓储管理架构分析

现阶段,智慧物流(ztmapinfo.com.)成为了时事热点,获得物流界广泛关注。许多 物流自动化系统、物流自动化设备都打出了智慧物流的幌子,在刚结束了的CeMAT亚洲物流展上,宣传展现智慧物流技术与商品的公司增加…

控制 Redis stream 的消息数量

控制 Redis stream 的消息数量IntroRedis Stream 是 Redis 5.0 引入的一个新的类型,之前我们介绍过使用 Redis Stream 来实现消息队列,可以参考之前的文章 使用 Redis Stream 实现消息队列,而 Stream 的消息会持久化地内存中,如果…

java oom-killer_与Linux OOM-killer的第一次亲密接触

From1、最近一段时间(更换了预发机器后)我负责的一个应用的预发环境(线上稳定得像个婴儿~)特别不稳定,最先是应用频频的过几天就发现提供的接口不工作了,但容器Jetty还在跑得欢,于是jstack/jmap看,发现没有一个线程在跑我的war包中…

CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)

呵呵!觉得有必要把今晚的装lighttpd的经验和过程给记录下来! 第一次写这样的文章,有什么不足的地方请高手们指出并给与修正!下面开始! 第一步:系统的安装! 菜鸟的朋友们,可以先去lin…

vpx8运行待解决问题

一开始运行的时候是因为找不到HAVE_CONFIG_H他的定义,所以编译无法通过,找了好久还是没有找到,所以就先把它给注释掉了,结果运行的时候还是无法通过,运行的结果如下: 希望赶紧找到解决的办法 1>------ B…

led灯具供货合同

美高森美与索尼合作推出首款具3D功能的定时控制器与局部调光LED背光组合解决方案在刚刚结束的第十一届国际集成电路研讨会暨展览会(IIC-China 2011)上,美高森美公司(Microsemi)展示了与索尼合作推出的目前市场上首款具有3D功能的定时控制器与…

startindex 不能大于字符串长度_玩转云端丨redis的5种对象与8种数据结构之字符串对象(下)...

引言本文是对《redis设计与实现(第二版)》中数据结构与对象相关内容的整理与说明。本篇文章只对对象结构,1种对象——字符串对象。以及字符串对象所对应的两种编码——raw和embstr,进行了详细介绍。表达一些本人的想法与看法,也希望更多朋友一…

网友半夜差点被沐浴露吓死,众人:原来不止我胆小....

全世界只有3.14 % 的人关注了爆炸吧知识微博上有网友爆料说,他半夜上厕所差点被沐浴露吓死!这么看可能不明显但是关灯的时候.....啊啊啊啊啊~结果引来众多网友的共鸣,原来大家都有类似遭遇....比如,你有被饮水机吓到过…

.NET 6 RC1 正式发布

昨天晚上微软发布了.NET 6的两个RC版本中的第一个版本,该版本将于11月正式发布,作为在开源MIT协议下整合所有不同的.NET开发模组件的开源跨平台实现。这是一个从2014年开始,持续多年的,以改变应用开发游戏规则的努力,由…

Winform开发中另一种样式的OutLookBar工具条

很早的时候,曾经写了一篇随笔《WinForm界面开发之“OutLookBar”工具条》介绍了OutLookBar样式的工具条,得到很多同行的热烈反馈,我个人也比较喜欢这样的工具条布局,因此我很多共享软件中,都经常看到这种OutLookBar的工…

常用小知识

在linux 上生成一个字符串的MD5 ,可以直接用linux 上的命令:#md5sumecho -n ’123456′ | md5sum 这样及可。vi 使用:^ 到行首$ 到行尾yy 复制一行p 粘贴u 回退-------------------------------------------------------------------she…

重构的小故事 Change Value to Reference or Vice Verse

值和引用&#xff0c;有时候程序员因为熟悉而忽略了它们之间的区别&#xff0c;因此使用的时候也就不做选择信手拈来。得到预期结果就行&#xff0c;得不到预期结果就换下试试&#xff0c;毕竟两者有其一。那到底是值还是引用呢&#xff1f;有这样一个生活中的故事。<?xml:…

r语言主成分分析_PCA主成分分析

PCA主成分分析最近遇到了主成分分析法这个东西&#xff0c;一开始我觉得简直天才啊&#xff0c;这个想法虽然从经济意义上来解释有点奇怪&#xff0c;毕竟是数学方法计算出来的解释因子&#xff0c;但鉴于没人知道现实世界究竟被多少因素影响&#xff0c;这种方法可以将最主要的…

宫崎骏动画里的新垣结衣见过没?简直美呆!

全世界只有3.14 % 的人关注了爆炸吧知识本文经机器之心&#xff08;ID&#xff1a;almosthuman2014&#xff09;授权转载参与&#xff1a;肖清、思尽管最近 2019 年的图灵奖颁给了计算机图形学、颁给了皮克斯 3D 动画&#xff0c;但很多人可能认为二维动漫更有意思一些。像宫崎…

更了吗?Windows 11 22000.184 推送

面向 Beta 频道的 Windows 预览体验成员&#xff0c;微软现已发布 Windows 11 预览版 Build 22000.184。Windows 11 Insider Preview Build 22000.184 主要变化如下&#xff1a;1.微软现已修复在Windows 11 OOBE&#xff08;开箱体验&#xff09;阶段了解 Windows Hello 更多详…