apollo工作原理

用户通过浏览器登录Portal管理界面 >> 通过Admin server对配置进行修改 >> 应用程序主动向config server配置
注意:Portal与Admin、config的信息都存储在数据库中,Portal单独一个数据库,其他两个共用一个数据库

apollo总体设计

Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳
在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口
Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试
Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试
为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中

集群式部署

部署环境

Centos 7.4
mysql 5.7安装并授权
java 1.8+ 数据库地址:192.168.1.83(host-3)
Portal地址:192.168.1.142(host-1)
config地址:192.168.1.142
Admin地址:192.168.1.142 apollo下载地址:https://github.com/ctripcorp/apollo/releases/tag/v1.4.0
apollo下载内容:apollo-adminservice-xxx-github.zip、apollo-configservice-xxx-github.zip、apollo-portal-xxx-github.zip、Source code(这个里面主要是存放SQL文件,其他的不重要)

准备相关工具

[root@host- ~]# yum -y install wget unzip
[root@host- ~]# wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-adminservice-1.4.0-github.zip -P /opt/
[root@host- ~]# wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-configservice-1.4.0-github.zip -P /opt/
[root@host- ~]# wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-portal-1.4.0-github.zip -P /opt/
[root@host- ~]# wget https://github.com/ctripcorp/apollo/archive/v1.4.0.tar.gz -P /opt/
[root@host- ~]# mkdir -p /opt/{admin,config,Portal}
[root@host- ~]# unzip /opt/apollo-adminservice-1.4.-github.zip -d /opt/admin/
[root@host- ~]# unzip /opt/apollo-configservice-1.4.-github.zip -d /opt/config/
[root@host- ~]# unzip /opt/apollo-portal-1.4.-github.zip -d /opt/Portal/
[root@host- ~]# mkdir -p /opt/Scode
[root@host- ~]# tar -zxf /opt/apollo-1.4..tar.gz -C /opt/Scode/

数据导入

[root@host- ~]# mysql -uroot -p
mysql> grant all privileges on *.* to 'root'@'%' identified by '123..com';
mysql> flush privileges; [root@host- ~]# mysql -uroot -p -h192.168.1.
MySQL [(none)]> create database `ApolloPortalDB` default charset utf8;
MySQL [(none)]> create database `ApolloConfigDB` default charset utf8;
MySQL [(none)]> use ApolloConfigDB;
MySQL [ApolloConfigDB]> source /opt/Scode/apollo-1.4./scripts/db/migration/configdb/V1..0__initialization.sql;
MySQL [ApolloConfigDB]> use ApolloPortalDB;
MySQL [ApolloPortalDB]> source /opt/Scode/apollo-1.4./scripts/db/migration/portaldb/V1..0__initialization.sql; 检查导入状况
MySQL [ApolloPortalDB]> select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit ;
+----+--------------------+-------+--------------------------+
| Id | Key | Value | Comment |
+----+--------------------+-------+--------------------------+
| | apollo.portal.envs | dev | 可支持的环境列表 |
+----+--------------------+-------+--------------------------+ MySQL [ApolloPortalDB]> select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit ;
+----+--------------------+-------------------------------+------------------------------------------------------+
| Id | Key | Value | Comment |
+----+--------------------+-------------------------------+------------------------------------------------------+
| | eureka.service.url | http://localhost:8080/eureka/ | Eureka服务Url,多个service以英文逗号分隔 |
+----+--------------------+-------------------------------+------------------------------------------------------+ 具体的参数修改请参考
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#213-%E8%B0%83%E6%95%B4%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%85%8D%E7%BD%AE

部署服务端

注:客户端就是每一个应用程序主机,apollo是根据ID来进行消息的推送,所以apollo在部署时是没有客户端的安装方式(最主要的是我不会写代码。。)

# 配置apollo-configservice的数据库连接信息,将原有内容修改成如下内容:
[root@host- ~]# cat /opt/config/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.83:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = ..com # 配置apollo-adminservice的数据库连接信息,将原有内容修改成如下内容:
[root@host- ~]# cat /opt/admin/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.83:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = ..com # 配置apollo-portal的数据库连接信息,将原有内容修改成如下内容:
[root@host- ~]# cat /opt/Portal/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.83:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = ..com # 配置apollo-portal的meta service信息,将原有内容修改成如下内容:
[root@host- ~]# cat /opt/Portal/config/apollo-env.properties
dev.meta=http://192.168.1.142:8080

调优启动

# 可以根据自身的硬件资源进行相应的调优

# 修改config配置,将如下配置添加进startup.sh
export JAVA_OPTS="-server -Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=18" # 修改admin配置,将如下配置添加进startup.sh
export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22" # 修改portal配置,将如下配置添加进startup.sh
export JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=22" # 启动顺序从上至下,停止顺序自下而上 默认登录地址:http://192.168.1.142:8070
默认登录账户:apollo/admin
官网参考地址:https://github.com/ctripcorp/apollo/wiki

Centos 7 下部署集群式阿波罗的更多相关文章

  1. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  2. Centos环境下部署游戏服务器-自动化

    计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...

  3. centos 7下部署grpc

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计.目前提供 C.Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版 ...

  4. Centos环境下部署游戏服务器-常用命令

         图1     在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...

  5. Centos环境下部署游戏服务器-iptables

    简介:   图1        Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...

  6. Centos环境下部署游戏服务器-SVN

    版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...

  7. Centos环境下部署游戏服务器-权限

    部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...

  8. Centos环境下部署游戏服务器-编译

    游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译.这里涉及到的软件分别为:Centos版本为6.4,Visual ...

  9. Centos环境下部署游戏服务器-简介

    一.前言      在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...

随机推荐

  1. spring-redis-session 自定义 key 和过期时间

    对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 redis,mysq ...

  2. CUBA 框架2019年回顾

    对于 CUBA 框架,2019年最重要的事件应该是 CUBA 7 的发布, 这是 CUBA 框架的一次巨大进化,CUBA 7 引入了一系列全新的 UI 和更灵活的数据访问机制,并且发布了基于 Inte ...

  3. Linux中安装软件和各种常用命令

    1.Centos7中安装mysql5.7的链接:http://blog.csdn.net/fanpeizhong/article/details/73557202 2.修改mysql默认密码的链接:h ...

  4. DEVOPS技术实践_09:Jenkins多分支管道

    简介 多分支的管道是在jenkins2.x中新增的功能 . 多分支管道允许你针对分布式的控制器的每个分支创建一个管道. 下图是对它的一个描述.使用jenkinsfile去创建多分支的管道,jenkin ...

  5. 全网最详细的Ceph14.2.5集群部署及配置文件详解,快来看看吧! -- <2>

    部署Ceph集群 Ceph版本选择 Ceph版本来源介绍 Ceph 社区最新版本是 14,而 Ceph 12 是市面用的最广的稳定版本. 第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 ...

  6. 个性化重排--Personalized Re-ranking for Recommendation

    推荐中的个性化重排--Personalized Re-ranking for Recommendation 这篇文章是阿里在ResSys'19发表的,主要贡献是在重排序阶段,引入了用户的相关信息,很符 ...

  7. Essential C++学习笔记

    1.当我们调用一个函数时,会在内存中建立起一块特殊区域,称为“程序栈”,这块特殊区域提供了每个函数参数的存储空间,它也提供函数所定义的每个对象的内存空间--我们将这些对象称为局部对象.一旦函数完成,这 ...

  8. 客户端进行定位(无地图API)

    需求: 根据用户浏览的所在城市加载相应的县级列表 思路: 使用搜索的服务找出当前用户的IP,然后使用百度的服务通过IP进行定位 源码: <!DOCTYPE html> <html&g ...

  9. ArcEngine DEM叠加影像

    代码执行前: 代码执行后: 影像叠加代码: /// <summary> /// 叠加DEM /// </summary> /// <param name="pR ...

  10. ArcEngine语法笔记(VB)

    1.获取图层字段 Dim pTable As ITable = pLayer Dim pField As IField pField = pTable.Fields.Field(i) Next  2. ...