上次是部署在本地的,测试已经通过,这次部署到了虚拟机,开始是虚拟机内存设为了1G,后面就因为这,启动起来的进程隔段时间自动杀死,期间还把apollo中的startup.sh一些启动参数拷贝过来,也是不行,最后经过排查,才发现就是内存不足引起的。。。找到了问题,解决方法就是
一是增加内存,内存不足,事实证明,虽然小白做法,但是可行
二是 把apollo应用分开部署到多个服务器上(注意各个配置要正确,麻烦点,也是可行的)
三是 java -jar 启动参数去修改
java -Xms256m -Xmx256m -Dspring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?serverTimezone=GMT -Dspring.datasource.username=root -Dspring.datasource.password=123456 -jar apollo-configservice-1.8.1.jar
java -Xms256m -Xmx256m -Dspring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?serverTimezone=GMT -Dspring.datasource.username=root -Dspring.datasource.password=123456 -jar apollo-adminservice-1.8.1.jar
java -Xms256m -Xmx256m -Ddev_meta=http://localhost:8080/ -Dserver.port=8070 -Dspring.datasource.url=jdbc:mysql://localhost:3306/apolloportaldb?serverTimezone=GMT -Dspring.datasource.username=root -Dspring.datasource.password=123456 -jar apollo-portal-1.8.1.jar
回到部署,因为我把apollo应用clone到本地的,然后修改了一些参数,所以重新打包,才放到Linus中的,大差不差。
毕竟看自己选择这两种方式去下载:
1.下载源码自己编译(需要修改源码的可以选择,我选择的就是这一种,先去本地熟悉,然后再Linus部署)
https://github.com/ctripcorp/apollo
2.下载官方编译好的
https://github.com/ctripcorp/apollo/releases
这里选择官方编译好的,下载如下三个压缩包
下载sql文件,生成数据库
地址:https://github.com/nobodyiam/apollo-build-scripts/tree/master/sql
下载好后通过mysql生成数据库:
将下载好的三个压缩包上传至linux下并解压
其中shutdown.sh和start.sh是自己写的脚本(用来启动和关闭三个服务)
修改三个服务的配置文件
1.分别修改三个服务下的数据连接配置文件 /config/application-github.properties(改为自己的)
2.分别修改三个服务下的启动端口号配置文件 /scripts/startup.sh
3.修改apollo-portal服务的下的meta配置:apollo-portal/config/apollo-env.properties
这里的地址是apollo-configservice的服务地址,分别是不同环境下的服务地址 修改数据库中的meta地址
修改apolloconfigdb数据库中serverconfig表中的eureka.service.url:其中的地址为apollo-configservice的服务地址
到这里,apollo部署进行一半了。
接下来,新建启动和关闭三个服务的shell脚本
start.sh
(注意服务的启动顺序 configservice - adminservice - portal)
#!/bin/bash
/usr/local/apollo-2.2.0/apollo-configservice/scripts/startup.sh
/usr/local/apollo-2.2.0/apollo-adminservice/scripts/startup.sh
/usr/local/apollo-2.2.0/apollo-portal/scripts/startup.sh
shutdown.sh
```c
#!/bin/bash
/usr/local/apollo-2.2.0/apollo-adminservice/scripts/shutdown.sh
/usr/local/apollo-2.2.0/apollo-configservice/scripts/shutdown.sh
/usr/local/apollo-2.2.0/apollo-portal/scripts/shutdown.sh
启动服务访问apollo
运行start.sh,启动三个服务后:输入如下地址 http://192.168.19.128:8070/ 这是portal的服务地址(注意自己修改的端口号)
默认的用户名 apollo 密码 :admin
登录后看到如下页面代表成功了:
好啦,Linus部署apollo配置中心通了。
下面就是对于apollo这个应用的使用了,
一、管理员工具
右上角的管理员工具
用户管理:可以新增用户
系统权限管理:可以赋予用户某些权限
开放平台授权管理:创建三方应用及赋权
系统参数:维护ApolloPortalDB.ServerConfig表数据,比如部门的修改(修改value值来新增\修改\删除部门)
删除应用、集群、AppNamespace:见名知意
系统信息:见名知意
配置导出:见名知意
二、项目管理 - 创建项目
部门:选择应用所在的部门
应用AppId:用来标识应用身份的唯一id,格式为string,需要和项目配置文件applications.properties中配置的app.id对应
应用名称:应用名,仅用于界面展示
应用负责人:选择的人默认会成为该项目的管理员,具备项目权限管理、集群创建、Namespace创建等权限
三、配置管理
发布配置
发布配置可以通过表格模式、文本模式进行添加。
表格模式:单个key-value配置添加、修改
文本模式:批量添加、修改,对于从已有的properties文件迁移尤其有用。
四、新增Namespace
创建一个项目,默认会有一个application的Namespace。
Namespace作为配置的分类,可当成一个配置文件。
以添加rocketmq配置为例,添加spring-rocketmq的 Namespace配置rocketmq相关信息。
进入项目首页,点击左下角的“添加Namespace”,共包括两项:关联公共Namespace和创建Namespace,选择“创建Namespace”。
公共的Namespace
在项目开发中,有一些配置可能是通用的,我们可以通过把这些通用的配置放到公共的Namespace中,这样其他项目要使用时可以直接添加需要的Namespace。
这里新建一个公共应用comment-template,并基于部门lcy_service创建springboot-http的Namespace,公共Namespace一定要是public的。
发布的配置内容如下:
选择之前创建好的项目(account-service),添加Namespace,选择关联公共Namespace,同时可以覆盖公共配置里的配置项,然后发布即可。
五、集群配置
在有些情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的RocketMQ服务器地址和部署在B机房的应用连接的RocketMQ服务器地址不一样。另外在项目开发过程中,也可为不同的开发人员创建不同的集群来满足开发人员的自定义配置。
1、创建集群
进入到account-service项目里,左边点击“添加集群”。
2、同步集群配置
同步集群的配置是指在同一个应用中拷贝某个环境下的集群的配置到目标环境下的目标集群。
从其他集群同步已有配置到新集群,切换到原有集群(default),展开要同步的Namespace,点击同步配置。
同步完之后,需要发布配置才生效。
SpringBoot集成Apollo
引入依赖
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.8.0</version>
</dependency>
bootstap.proterties(本地部署已经发过)
代码调用如下
@RestController
public class ApolloController {
@Value("${sms.enable}")
private Boolean value;
@GetMapping("/getApollo")
public String getApollo(){
String key = "rocket.producer.group";
String namespace = "spring-rocketmq";
Config config = ConfigService.getConfig(namespace);
String rocketMq = config.getProperty(key,null);
return rocketMq + "<----->" + value;
}
}
**
ok啦,apollo就成功搭建了
**