docker apollo配置中心分布式部署

zhouhaoxi 2021-03-05 原文


docker apollo配置中心分布式部署


Apollo 简介

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

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。

.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。

更多产品介绍参见Apollo配置中心介绍

 

Apollo配置中心架构剖析

https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ

 

docker分布式部署(多环境)

官方分布式部署参见分布式部署指南https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

 

1.准备机器2台

l192.168.101.14

l192.168.101.15

 

实现效果:通过apollo管理本地环境zglocal和测试环境zgdev配置文件

 

1.创建数据库

创建ApolloConfigDB

通过各种MySQL客户端导入apolloconfigdb.sql即可,每个环境一个数据库,因为我们有两个环境zglocal和zgdev,所以需要新建两个数据库zg_apolloconfigdb_dev 和 zg_apolloconfigdb_local。导入的sql是同一份sql数据就行

 

创建ApolloPortalDB

通过各种MySQL客户端导入apolloportaldb.sql即可,因为Portal是配置管理界面,所以只需要一个就可以管理多个环境

 

效果如下:

 

 

2.docker安装apollo

// 安装启动zgdev环境ConfigService和AdminService

docker run -p 8080:8080 \

    -e SPRING_DATASOURCE_URL=”jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8″ \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e eureka_instance_ip_address=192.168.101.14 \

    -d -v /tmp/logs:/opt/logs –name apollo-configservice-dev apolloconfig/apollo-configservice:1.7.1

 

    docker run -p 8090:8090 \

    -e SPRING_DATASOURCE_URL=”jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8″ \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e eureka_instance_ip_address=192.168.101.14 \

    -d -v /tmp/logs:/opt/logs –name apollo-adminservice-dev apolloconfig/apollo-adminservice:1.7.1

 

 

//安装启动zglocal环境ConfigService和AdminService

    docker run -p 8080:8080 \

    -e SPRING_DATASOURCE_URL=”jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8″ \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15 \

    -d -v /tmp/logs:/opt/logs –name apollo-configservice-local apolloconfig/apollo-configservice:1.7.1

 

    docker run -p 8090:8090 \

    -e SPRING_DATASOURCE_URL=”jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8″ \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

     -e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15  \

    -d -v /tmp/logs:/opt/logs –name apollo-adminservice-local apolloconfig/apollo-adminservice:1.7.1

 

参数说明:

lSPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址

lSPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名

lSPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码

lEUREKA_INSTANCE_IP_ADDRESS: 对应的网络策略,如果实际部署的机器有多块网卡(如docker),或者存在某些网卡的IP是Apollo客户端和Portal无法访问的(如网络安全限制),那么我们就需要在apollo-configservice和apollo-adminservice中做相关限制以避免Eureka将这些网卡的IP注册到Meta Server,所以这里我们要使用我们宿主机的ip注册到到Eureka注册中心,而不是默认的容器ip

 

//安装启动Portal

    docker run -p 8070:8070 \

    -e SPRING_DATASOURCE_URL=”jdbc:mysql://192.168.101.20:3306/zg_apolloportaldb?characterEncoding=utf8″ \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -d -v /tmp/logs:/opt/logs –name apollo-portal apolloconfig/apollo-portal:1.7.1

 

参数说明:

lSPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址

lSPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名

lSPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码

lAPOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置

lDEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准

 

启动后效果:

 

 

 

 

 

3.修改配置参数

 

3.1修改Portal容器参数

执行命令进入容器

docker exec -it apollo-portal sh

cd /apollo-portal/config

vi apollo-env.properties修改环境参数,如图:

 

 

 

 

3.2修改数据库参数

调整ApolloConfigDB配置

不管是apollo-configservice还是apollo-adminservice都需要向eureka服务注册,所以需要配置eureka服务地址。 按照目前的实现,apollo-configservice本身就是一个eureka服务,所以只需要填入apollo-configservice的地址即可,如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。

 

 

 

 

 

调整ApolloPortalDB配置

配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以通过管理员工具 – 系统参数页面进行配置,无特殊说明则修改完一分钟实时生效。

 

 

 

进行这些调整后重启这几个docker服务即可,访问Portal界面

 

 

通过系统信息查看是否zglocal和zgdev环境的apollo-configservice还是apollo-adminservice是否允许正常

 

发表于
2021-03-05 15:54 
周浩西(zhx_19930412) 
阅读(0
评论(0
编辑 
收藏

 

版权声明:本文为zhouhaoxi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhouhaoxi/p/14486685.html

docker apollo配置中心分布式部署的更多相关文章

  1. Java 遍历List的4种方式

    1 package com.tiandy.core.rest; 2 3 import java.util.Ar […]...

  2. JAVA各种OOM代码样例及解决方法

      周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情 […]...

  3. C、C++、Java、JavaScript、PHP、Python有啥区别,终于搞清楚了 – cq指尖代码

    C、C++、Java、JavaScript、PHP、Python有啥区别,终于搞清楚了 c语言主要用于底层和驱 […]...

  4. Java的ThreadContext类加载器

    疑惑   以前在看源码的时候,总是会遇到框架里的代码使用Thread.currentThread.getCon […]...

  5. 2万字长文包教包会 JVM 内存结构 保姆级学习笔记

    写这篇的主要原因呢,就是为了能在简历上写个“熟悉JVM底层结构”,另一个原因就是能让读我文章的大家也写上这句话 […]...

  6. Docker 安装和配置

    #centos 6 需要另外安装 yum install lxc libcgroup device-mappe […]...

  7. Java中的Throable类是不是受查异常?

    Q: Throable是不是受查异常? A: 是 在Java规范中,对非受查异常和受查异常的定义是这样的: T […]...

  8. Elastic 技术栈之 Filebeat

    Elastic 技术栈之 Filebeat 简介 Beats 是安装在服务器上的数据中转代理。 Beats 可 […]...

随机推荐

  1. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

    《ASP.NET Core 微服务实战》译者序:https://blog.jijiechen.com/post […]...

  2. Elasticsearch 为了搜索

    Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础 […]...

  3. 多重序列比对 CLUSTALX

    【实验目的】 1、熟悉构建分子系统发生树的基本过程,获得使用不同建树方法、建树材料和建树参数对建树结果影响的正 […]...

  4. 74HC595的中文资料

    74HC595——具有三态输出锁存功能的8位串行输入、串行/并行输出移位寄存器 本文翻译自NXP的74HC59 […]...

  5. win10安装java以及java配置遇到的坑

      这是我的第一篇博文,请多多指教 1.下载java的网址 https://www.oracle.com/te […]...

  6. 刷脸即可解锁让iDevice取证不再难如登天

    最近有则取证相关的消息,链接如下,光看标题便知道与Apple的Face ID有关. https://www.c […]...

  7. 【转】五大绝招复制不能复制的网页文字 – wi100sh

    【转】五大绝招复制不能复制的网页文字 原文网址:http://www.6699fa.cn/windows/wu […]...

  8. 实习第一天——做一个录音上传服务器的小功能pttp协议post发送文件和参数到服务器,解析返回的json数据

    来公司实习的第一天,因为之前和他们在网上有联系,没来之前就给了我一个小任务。 实现一个录音同时将录音上传到服务 […]...

展开目录

目录导航