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. Kali之msf简单的漏洞利用

    1.信息收集 靶机的IP地址为:192.168.173.136 利用nmap工具扫描其开放端口.系统等 整理一下目标系统的相关信息 系统版本:Windows server 2003 开放的端口及服务: ...

  2. 在Spring Boot中使用Docker在测试中进行高级功能测试

    最近又学到了很多新知识,感谢优锐课老师细致地讲解,这篇博客记录下自己所学所想. 想更多地了解Spring Boot项目中的功能测试吗?这篇文章带你了解有关在测试中使用Docker容器的更多信息. 本文 ...

  3. python3.6中使用selenium + chromedriver访问Chrome浏览器时报错

    from selenium import webdriver from selenium.webdriver.chrome.options import Options if __name__ == ...

  4. 用Robot Framework+python来测试基于socket通讯的C/S系统(网络游戏)

    项目终于换了方案,改用socket来实现而不是之前的http了,所以测试工具就不能用以前的了,因为测试人手少,逼不得已的必须要挖掘更多的自动化方案来弥补.于是先研究了下python的socket解决方 ...

  5. 20191031-7 beta week 1/2 Scrum立会报告+燃尽图 05

    此作业的要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9915 git地址:https://e.coding.net/Eusti ...

  6. 【游记】THUWC2019-2 Bystander

    [游记]THUWC2019-2 Bystander Day0/-1 感觉自己怎么样都去不了PKUWC(没错)了,差点放弃模拟面试,在老妈的要求下勉强面试,自我介绍没怎么准备,然后就说 我喜欢唱跳Rap ...

  7. Python数据分析:手把手教你用Pandas生成可视化图表

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  8. C#反射与特性(三):反射类型的成员

    目录 1,获取类型的信息 1.1 类型的基类和接口 1.2 获取属性.字段成员 上一篇文章中,介绍如何获取 Type 类型,Type 类型是反射的基础. 本篇文章中,将使用 Type 去获取成员信息, ...

  9. UCI 人口收入数据分析(python)

    一.项目介绍 UCI上有许多免费的数据集可以拿来练习,可以在下面的网站找寻 http://archive.ics.uci.edu/ml/datasets.html 这次我使用的是人口收入调查,里面会有 ...

  10. EXE和DLL调用关系,DLL制作,钩子

    制作DLL时,在cpp种引入了头文件,但头文件里的全局变量在cpp种却不能用 参考大佬博客https://blog.csdn.net/speargod/article/details/88854344 ...