Centos 7 下部署集群式阿波罗
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 下部署集群式阿波罗的更多相关文章
- Centos环境下部署游戏服务器-软件安装
这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...
- Centos环境下部署游戏服务器-自动化
计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...
- centos 7下部署grpc
gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计.目前提供 C.Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版 ...
- Centos环境下部署游戏服务器-常用命令
图1 在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...
- Centos环境下部署游戏服务器-iptables
简介: 图1 Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...
- Centos环境下部署游戏服务器-SVN
版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...
- Centos环境下部署游戏服务器-权限
部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...
- Centos环境下部署游戏服务器-编译
游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译.这里涉及到的软件分别为:Centos版本为6.4,Visual ...
- Centos环境下部署游戏服务器-简介
一.前言 在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...
随机推荐
- 第二阶段:2.商业需求分析及BRD:3.产品需求分析
产品需求收集之后就可以进行产品需求分析了. 比如微信功能的逐步完善,偏向于做加法,但有时候也会做减法. Y轴是重要跟不重要 X轴是紧急跟不紧急 然后通过各个需求的分数来确定坐标位置.同时可以根据阶段调 ...
- 人生苦短,我用Python(4)
1.创建数值元组: 在Python中,使用tuple()函数直接将range()函数循环出来的结果转换为数值元组. tuple(data) #tuple()函数的基本语法 data表示可以转换为元组的 ...
- .NET设计篇08-线程统一取消模型和跨线程访问UI
知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ...
- JAVA8学习——深入Comparator&Collector(学习过程)
深入Comparator&Collector 从源码深入Comparator Comparator从Java1.2就出来了,但是在1.8的时候,又添加了大量的默认方法. compare() e ...
- 关于MySQL幻读的实验
该实验基于 CentOS 7 + MySQL 5.7 进行 打开两个窗口连接到MySQL 第一个连接的事务我们命名为 T1 第二个连接的事务我们命名为 T2 T2 发生在 T1 的 O1 操作结束以 ...
- spring之整合Hibernate
spring整合Hibernate整合什么? 1.让IOC容器来管理Hibernate的SessionFactory. 2.让Hibernate使用上spring的声明式事务. 整合步骤: 1.加入H ...
- schedule of 2016-10-31~2016-11-6(Monday~Sunday)——1st semester of 2nd Grade
most important things to do 1.joint phd preparations 2.journal paper to write 3.solid fundamental kn ...
- redux一些自习时候自己写的的单词
setState:设置状态 render:渲染,挂载 dispatchEvent : 派发事件 dispatch:分发,派遣:库里的一个方法,简而言之相当于一个actions和reducer监听方法更 ...
- MySQL数据库用户、角色、授权
权限包括 insert delete update select all privileges 登录MySQL > mysql -uroot -p Enter password ...
- 【转】最受欢迎的8位Java牛人
本文由 ImportNew - 唐尤华 翻译自 javatyro.如需转载本文,请先参见文章末尾处的转载要求. 下面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编 ...