配置服务 apollo 部署实践

前言

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

  • github 地址:https://github.com/ctripcorp/apollo
  • 服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器
  • Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持
  • .Net客户端不依赖任何框架,能够运行于所有.Net运行时环境
  • 以上摘抄自官方文档,该框架目前已达 9000 多个 star,而且目前已经支持了 .netcore 客户端

安装

服务器环境安装检查

????由于本次是按照正式环境来模拟一次部署,所以,按照官方指引,正式环境部署并不建议使用 Quick Start;接下来打开官方“分布式部署”指引文档: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

  • 首先是检查服务器是否安装了 Java 环境,在服务器输入 java -version

  • 可以看到,服务已经安装,如果没有安装,这输入 yum install java-1.8.0-openjdk(本次使用的服务器为 Centos 7.0)。
数据库检查

????官方要求数据库为 MySQL,版本要求:5.6.5+,我在这里使用了 MariaDB 10.3,效果相同,安装好数据库后,下载官方 SQL 文件,执行,创建 apollo 所需的数据库。数据库文件一共有两个

  • ApolloPortalDB 同理,可以看到,数据库已经成功安装
安装服务和 web 管理控制台

????服务一共有 3 个实例,都从这里下载:https://github.com/ctripcorp/apollo/releases,我直接下载作者编译好的 zip 文件

下面简单介绍各个服务以及用途

  • apollo-configservice apollo 配置文件服务,该服务直接对外提供服务,同时需要在 portal 进行元数据注册,下面修改该服务的数据库配置文件。
    修改配置文件 /apollo-configservice-1.1.2/config/application-github.properties 为刚才数据库的配置
spring.datasource.url = jdbc:mysql://127.0.0.1:3406/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
  • apollo-adminservice-1.1.2 web 管理服务,同样修改其配置文件 apollo-adminservice-1.1.2/config/application-github.properties 为 ApolloConfigDB 数据库的地址,同上。
  • apollo-portal-1.1.2 元数据服务,修改配置文件 apollo-portal-1.1.2/config/application-github.properties,注意,这里的数据必须为 ApolloPortalDB ,如下:
spring.datasource.url = jdbc:mysql://127.0.0.1:3406/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
  • 最后,还需要修改 apollo-portal-1.1.2/config/apollo-env.properties 文件,将 configservice 都注册到 portalservice 中
local.meta=http://localhost:8080
dev.meta=http://172.16.1.220:8080
fat.meta=http://172.16.1.220:8080
uat.meta=http://172.16.1.220:8080
lpt.meta=${lpt_meta}
pro.meta=http://172.16.1.227:8080

启动和修改配置

????在上面做好三个服务端配置后,下面我们就可以逐一的启动各个服务了,各自服务端监听端口都位于 xxx/scripts/startup.sh 中

  • 执行 sh apollo-configservice-1.1.2/scripts/startup.sh 启动 config 服务,监听端口默认:8080
  • 执行 sh apollo-portal-1.1.2/scripts/startup.sh 启动 portal 服务,监听端口默认:8070
  • 执行 sh apollo-adminservice-1.1.2/scripts/startup.sh 启动 admin 服务,监听端口默认:8090

如果输出看到以上三个服务都输出信息为,证明服务启动成功

Waiting for server startup....
Mon Nov 19 11:07:15 CST 2018 Server started in 20 seconds!

  • 输入默认账号密码:apollo/admin 登录 web 控制台进行查看。

  • 为了方便演示,首先创建一个项目 webapplication1

  • 进入 webapplication1,

  • 点击左侧按钮“添加Namespace”,创建一个公共的命名空间,取名为:common

  • 创建成功,返回项目主页

  • 在 dotnet.versin 命名空间下点击“新增配置”按钮,增加一个配置节点

  • 创建完成后,可以看到,该节点状态为 “未发布”

  • 点击该命名空间下的“发布”按钮,将其进行发布

  • 使用以上方法,在默认的命名空间“application” 下也创建一个名为“connectionstring" 的节点,同样将其发布
  • 此时,恭喜你,已完成服务器部署发布,接下来,我们通过创建一个 web 应用程序访问该配置服务

客户端访问

  • 首先创建 web 项目,完成后在 nuget 包管理器上引用 apollo 的 .netcore 客户端 Com.Ctrip.Framework.Apollo.Configuration

  • 打开 Program.cs 文件,将刚才在 apollo 服务上创建的命名空间加入到管道中
 public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            var hostBuilder = WebHost.CreateDefaultBuilder(args)
                   .UseStartup<Startup>()
                   .ConfigureAppConfiguration((context, builder) =>
            {
                builder.AddApollo(builder.Build().GetSection("apollo"))
                       .AddDefault()
                       .AddNamespace("dotnet.version")
                       .AddNamespace("application");
            });

            return hostBuilder;
        }
  • 以上代码中有一个方法 AddApollo ,这里传入了本地配置文件节点 builder.Build().GetSection("apollo"),其配置如下
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "apollo": {
    "AppId": "webapplication1",
    "MetaServer": "http://172.16.1.220:8080"
  }

}
  • AppId 对于 我们创建的在 apollo web 控制台上创建的项目ID webapplication1,元数据服务指向 8080 端口,正是 configservice 的监听端口
  • 在 HomeController 的操作 Action 中,获取配置节点,并输出到客户端
  public IActionResult Index()
        {
            this.ViewBag.ConnectionString = this.cfg["connectionstring"];
            this.ViewBag.LastVersion = this.cfg["last-version"];
            return View();
        }
  • 启动项目,可以看到

  • 至此,测试完成

结语

  • apollo 项目官方部署指引非常复杂,原因就在于整个官方文档都是大片大片的文字进行铺排,圣人说:看图就会,见字想睡,本文希望通过自己的测试能帮助更多想应用 apollo 配置管理服务的朋友
  • 注意,安装完成默认只有 DEV 配置环境,如果需要增加环境,可直接修改数据库 apolloportaldb.serverconfig 表,字段名称为 apollo.portal.envs 的列值,多个环境以逗号分隔,保存,重启服务即可

原文地址:https://www.cnblogs.com/viter/p/9982452.html

时间: 2024-08-26 22:50:10

配置服务 apollo 部署实践的相关文章

基于winserver的Apollo配置中心分布式&amp;集群部署实践(正确部署姿势)

前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候,每一步都踩着坑过来的.因此写文档与需要的朋友分享. 此篇文章不代表官方部署流程,只是自己的部署的实践方式,屏蔽了一些官方的多余的部署讲解.如果有问题还请到Apollo的wiki文档进行查看: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

NFS服务部署实践过程

NFS服务端部署流程:第一个里程:检查服务软件是否安装rpm -qa|egrep "nfs-utils|rpcbind" 第二个里程:进行软件服务安装 yum install -y nfs-utils rpcbind 补充说明:nfs-utils 和 rpcbind两个软件大礼包 rpm -ql nfs-utils /etc/rc.d/init.d/nfs <-- nfs服务启动脚本文件 /usr/sbin/showmount <-- 检查nfs服务共享目录信息 rpm -

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)

1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操作流程,在整个 Rest 架构里面,会存在有大量的微服务的信息. 在 SpringCloud 之中使用了大量的 Netflix 的开源项目,而其中 Eureka 就属于 Netflix 提供的发现服务组件,所有的微服务在使用之中全部向 Eureka 之中进行注册,而后客户端直接利用 Eureka 进

Ubuntu 16.04下配置nginx与nodejs以及服务的部署

title: Ubuntu 16.04下配置nginx与nodejs以及服务的部署 date: 2019-05-05 22:45:49 tags: Linux --- 第一步:安装nginx sudo apt-get update sudo apt-get install nginx 如果遇到依赖问题,尝试执行sudo apt-get -f install命令 第二步:配置nginx 首先备份原先的配置文件:sudo cp /etc/nginx/sites-available/default /

kubernetes实战-配置中心(三)配置服务使用apollo配置中心

使用配置中心,需要开发对代码进行调整,将一些配置,通过变量的形式配置到apollo中,服务通过配置中心来获取具体的配置 在配置中心修改新增如下配置: 项目信息: 配置: 重新打包镜像,使用apollo版本的代码: 修改dp.yaml,将镜像使用我们刚刚打包的这个: 应用资源配置清单: # kubectl apply -f http://k8s-yaml.od.com/dubbo-server/dp.yaml 创建dubbo服务消费者: apollo中新建一个项目:dubbo-demo-web,新

rsync服务的部署配置

rsync服务的部署 一:服务端部署就是一个命令 一直在运行进程,守护进程,rsync --deamon 启动服务就是服务端 (1)检查软件是否存在rpm -qa|grep rsyncrsync-3.0.6-12.el6.x86_64如果rsync软件不存在yum install -y rsync (2)编写rsync软件的配置文件vim /etc/rsyncd.conf ---rsyncd.conf是rsync服务的默认配置文件,默认并不存在 #rsync_config#created by

Hadoop部署实践: &nbsp; 离线安装 CDH5.1 &nbsp; (待完成)

配置主机映射关系 [[email protected] ~]$ cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 10.15.5.200 master.hadoop 10.15.5.201 slave01.hadoop 10.15.5.202 slave02.hadoop 10.15.5.203 slave03.hadoop 如上有4台主机,每台hosts都已

微服务架构与实践及云原生等相关概念

微服务架构与实践 笔记:<微服务架构与实践> 王磊 著 一 单块架构 1 定义:对于这种功能集中.代码和数据中心化.一个发布包.部署后运行在同一进程的应用程序,我们通常称之为单块架构应用,并非物理上的分层. 2 单层架构:数据 逻辑 页面 混合 3 三层架构: 1)表示层:数据显示和用户交互 2)业务逻辑层:业务逻辑处理 3)数据访问层:数据存储访问 4 优势: 比较适合小项目 易于开发:开发简单直接,集中式管理,基本不会重复开发,集成工具适合 易于测试:单进程 易于部署:单项目包,功能都在本

微服务架构与实践-王磊

(原文地址:http://www.infoq.com/cn/articles/microservice-and-continuous-delivery) 摘选书中节选-微服务与持续交付 十年以前,软件在一年之内的交付次数屈指可数. 过去的十年间,交付的过程一直被不断地优化和改进.从早期的RUP模型.敏捷.XP.Scrum,再到近几年的精益创业.DevOps,都力求能更有效地降低交付过程所耗费的成本并提高效率,从而尽早实现软件的价值. 持续交付是一种软件开发策略,用于优化软件交付的流程,以尽快得到