qt做网站,公司注册地址可以跨市变更吗,网站中数据库教程,网站建设版面分几页合适前言 Apollo#xff08;阿波罗#xff09;是携程开源的分布式配置管理中心。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验 特点
成熟#xff0c;稳定支持管理多环境/多集群/多命名空间的配置配置修改发布实时#xff08;1s#xff09;通知到应用程序支…前言 Apollo阿波罗是携程开源的分布式配置管理中心。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验 特点
成熟稳定支持管理多环境/多集群/多命名空间的配置配置修改发布实时1s通知到应用程序支持权限控制、配置继承版本管理灰度发布使用监控等官方提供了 。NET/Java/Go 的 SDK 以及 Http 接口国产中文文档友好大厂背书使用方案成熟使用简单支持 Docker K8S官方也提供多种高可用方案参考
使用情况
目前在微服务项目中做为配置中心表现稳定体验良好内存情况新安装启动在 100M 左右工作中实际 20 项目80 客户端使用时三个服务占 1.5G 左右测试环境和生产环境分开安全及避免错误操作为什么选择 Apollo稳定简单虽然比不上 Nacos 的性能也没有服务发现功能但是稳定啊在我自己部署前会觉得这个东西好难好重好麻烦。写这篇文章的时候的感受只有两个字牛*
实践
准备 当前版本v2.1 apollo-dbmysql 5.6.6 数据库 默认端口3306依赖两个数据库ApolloPortalDBApolloConfigDB默认账号/密码apollo/admin apollo-configserviceConfig Service 提供配置的读取、推送等功能。 默认端口8080应用程序端连接到此服务使用 apollo-adminservice: Admin Service 提供配置的修改、发布等功能 默认端口8090管理界面使用此服务 apollo-portalPortal 提供 Web 界面用来管理配置 默认端口8070Web 管理界面默认账号/密码apollo/admin Deureka提供服务注册和发现 Config Service 和 Admin Service 会向 Eureka 注册服务并保持心跳在 Admin Service 需要指定 eureka.service.url 服务配置方式的优先级从高到低分别为系统参数环境变量外部配置文件
使用 Docker Compose 安装 本篇文章基于 Docker V24 及 Docker Compose V2安装可以参考之前的文章 配置说明
挂载了日志文件到。/logs 目录固定了镜像版本 mysql v5.7 apollo v2.1.0指定 MySql 账号密码 root devops666 修改了端口映射 13306:3306挂载 MySql 数据初始化脚本文件夹 。/initsqlv2.1 脚本Apollo 服务中使用服务名 apollo-db 连接 MySqlSPRING_DATASOURCE_URL:...apollo-db:3306/...设置先启动数据库depends_on:apollo-dbapollo-configservice 服务中指定向 DeurekaApollo 服务发现组件注册的地址http://192.168.123.214:8080apollo-adminservice 服务中指定向 Deureka 注册的服务地址http://192.168.123.214:809apollo-adminservice 服务需指定 Deureka 服务地址-Deureka.service.urlhttp://192.168.123.214:8080/eureka/指定网络devopsnetwork (docker network create devopsnetwork)web 管理端默认账号密码apollo admin登录后修改
配置文件 compose.yml 准备好 compose.yml 及 。/initsql/初始化脚本修改其中的 IP 拷贝到服务器 然后运行docker compose up -d即可 version: 3.1services:# Apollo数据库apollo-db:image: mysql:5.7container_name: apollo_db_5_7restart: alwaysenvironment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: devops666ports:- 13306:3306volumes:- ./initsql:/docker-entrypoint-initdb.d- ./data:/var/lib/mysqlnetworks:- devopsnetwork# Apollo 服务发现注册中心apollo-configservice:container_name: apollo_configservice_2_1image: apolloconfig/apollo-configservice:2.1.0restart: alwaysdepends_on:- apollo-dbenvironment:SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloConfigDB?characterEncodingutf8SPRING_DATASOURCE_USERNAME: rootSPRING_DATASOURCE_PASSWORD: devops666JAVA_OPTS: -Deureka.instance.homePageUrlhttp://192.168.123.214:8080# EUREKA_INSTANCE_HOME_PAGE_URL: http://192.168.123.214:8080# EUREKA_INSTANCE_PREFER_IP_ADDRESS: falsevolumes:- ./logs:/opt/logsports:- 8080:8080networks:- devopsnetwork#核心接口服务apollo-adminservice:container_name: apollo_adminservice_2_1image: apolloconfig/apollo-adminservice:2.1.0restart: alwaysenvironment:SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloConfigDB?characterEncodingutf8SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: devops666JAVA_OPTS: -Deureka.instance.homePageUrlhttp://192.168.123.214:8090 -Deureka.service.urlhttp://192.168.123.214:8080/eureka/ depends_on:- apollo-dbports:- 8090:8090volumes:- ./logs/:/opt/logs networks:- devopsnetworkapollo-portal:image: apolloconfig/apollo-portal:2.1.0container_name: apollo_portal_2_1restart: alwaysenvironment:SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloPortalDB?characterEncodingutf8SPRING_DATASOURCE_USERNAME: rootSPRING_DATASOURCE_PASSWORD: devops666APOLLO_PORTAL_ENVS: dev DEV_META: http://192.168.123.214:8080# 默认账号 apollo admindepends_on:- apollo-dbports:- 8070:8070volumes:- ./logs/:/opt/logs networks:- devopsnetworknetworks:devopsnetwork:external: true
部署成功
部署机器IP192.168.123.214 使用 K8S 安装
跟着官方文档一步步来即可helm 的文件可以从 apolloconfig/apollo-helm-chart 获取这里只分享下步骤和些注意的地方 初始化数据库 可以使用已有或者部署 mysql 服务并创建 apollo 专门的账号密码执行 Apollo 对应版本的 v2.1 默认初始化脚本 创建 ApolloConfigDBApolloPortalDB生产环境 记得修改 ServerConfig 表的 环境和组织apollo.portal.envs:pro organizations:[{orgId:xxx,orgName:xxx公司}] 使用 helm 添加 apollo repo 安装 apollo-service 安装 apollo-portal k8s 使用 可以将 Apollo 相关配置存储到 k8s 的 ConfigMap 中方便 k8s 服务中使用
使用
.NET SDK
官方Com.Ctrip.Framework.Apollo.Configuration 添加包Com.Ctrip.Framework.Apollo.Configuration appsetting.json 中添加 apollo 配置 MetaServerApollo 服务地址系统信息中也可以查看到AppId:应用 IdNamespaces:命名空间默认是 application 获取参数注册可以是配置也可以是从环境变量中 builder.Configuration.AddApollo(builder.Configuration.GetSection(apollo)); 注入 IConfiguration 使用即可
连接配置 apollo: {MetaServer: http://192.168.123.214:8080,AppId: devops.test,Namespaces: [ application ]}Demo 示例
dotnet v7.0
var builder WebApplication.CreateBuilder(args);
builder.Configuration.AddApollo(builder.Configuration.GetSection(apollo));
app.MapGet(/config, context
{context.Response.Headers[Content-Type] text/html; charsetutf-8;//配置服务var configService context.RequestServices.GetRequiredServiceIConfiguration();string? key context.Request.Query[key];if (string.IsNullOrWhiteSpace(key)){return context.Response.WriteAsync(获取配置/config?keytest);}var value configService[key];return context.Response.WriteAsync(value ?? undefined);
});完整 Demo 示例 :Github 地址
踩过的坑
数据库配置连接使用服务名而不是容器名-Deureka.instance.homePageUrl 和 -Deureka.service.url 参数一开始没有理解到是做什么的只知道配置健康检查失败看了文档才理解到是 Deureka.instance.homePageUrl 是注册的服务地址-Deureka.service.url 是注册中心的接口地址
相关文档
Github 地址官方文档模块介绍Docker 方式部署 Quick Start分布式部署部署架构性能测试.NET SDK: apollo.net默认初始化脚本跳过服务发现配置说明
后语
时间充裕的情况最好是过一遍文档知道是怎么设计的遇到问题真会一头雾水。
每天进步一点哪怕只是一点