Apollo配置中⼼搭建和使⽤教程
⽬录
前⾔
⼯作中使⽤的是apollo配置中⼼,平时学习也需要使⽤到,因此⾃⼰搭建⼀套,⽅便平时在家学习使⽤。搭建过程遇到了⼀些坑,也记录下。
apollo搭建
我是使⽤的京东云服务器搭建的单机环境,因此直接下载release包安装⽅便。
先说下结论,创建单机环境不要看github上apollo的官⽅做法使⽤scripts/startup.sh启动,我没做成功,坑很多,想简单,就按照我这样操作。
step1:创建apollo数据库
⾃⼰数据库导⼊下⾯两个地址的sql,这样就分别创建了ApolloConfigDB、ApolloPortalDB
sql地址
step2:安装apollo
从github/ctripcorp/apollo/releases/tag/v1.7.1下载
apollo-adminservice-1.7.1-github.zip
apollo-configservice-1.7.1-github.zip
apollo-portal-1.7.1-github.zip
分别解压到单独的⽂件夹,进⾏如下操作
1:修改下⾯三个⽬录内的⽂件,内容改为数据库地址和⽤户密码
apollo-adminservice-1.7.1-github\config\application-github.properties
apollo-configservice-1.7.1-github\config\application-github.properties
apollo-portal-1.7.1-github\config\application-github.properties
2:⾃定义端⼝,三个服务端⼝分别如下
apollo-configservice 18080 注册中⼼地址
apollo-adminservice 18090
apollo-portal 18070 门户登陆端⼝
apollo-configservice不以8080端⼝启动的情况下,要修改ApolloConfigDB库的ServerConfig表的eureka.service.url的value值为localhost:18080/eureka/,我是单机环境,因此是localhost,端⼝从数据库默认的8080改为18080我⾃⼰只是使⽤了dev环境,其他没使⽤,因此我的G:\apollo-portal-1.7.1-github\config\apollo-env.properties内容如下
#a=fill-in-fat-meta-server:8080
#a=fill-in-uat-meta-server:8080
#a=fill-in-pro-meta-server:8080
3.上传并启动
上传下⾯三个⽂件夹到服务器/mydata/apollo-1.7.1⽬录下
apollo-adminservice-1.7.1
apollo-configservice-1.7.1
apollo-portal-1.7.1
4.启动
启动顺序configservice->adminservice->portal
nohup java -Dserver.port=18080 -Deureka.instance.ip-address={云服务器公⽹ip} -Deureka.instance.homePageUrl={云服务器公⽹ip}:18080 -jar apollo-configservice-1.7.1.jar  &
nohup java -Dserver.port=18090 -Deureka.instance.ip-address={云服务器公⽹ip} -Deureka.instance.homePageUrl={云服务器公⽹ip}:18090 -jar apollo-adminservice-1.7.1.jar &
nohup java -Dserver.port=18070 -jar apollo-portal-1.7.1.jar &
cd /mydata/apollo-1.7.1/apollo-configservice-1.7.1-github/
nohup java -Xmx256m -Xms256m -Xmn128m -Dserver.port=18080 -Deureka.instance.ip-address=114.67.85.120  -jar apollo-configservice-1.7.1.jar &
cd /mydata/apollo-1.7.1/apollo-adminservice-1.7.1-github/
nohup java -Xmx256m -Xms256m -Xmn128m -Dserver.port=18090 -Deureka.instance.ip-address=114.67.85.120 -jar apollo-adminservice-1.7.1.jar &
cd /mydata/apollo-1.7.1/apollo-portal-1.7.1-github/
nohup java -Xmx512m -Xms512m -Xmn256m -Dserver.port=18070 -jar apollo-portal-1.7.1.jar &
每个命令输⼊后等2min再启动下⼀个服务,因为有依赖关系。
当然加jvm参数启动的命令参考如下(从startup.sh copy来的),不建议加⼀⼤堆这样参数,毕竟⾃⼰使⽤
nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+Sc
avengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMem nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMem nohup java -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMem step3:验证
启动configservice服务后,浏览器输⼊云服务器公⽹ip:18080/ 就可以看到信息
step4:登录apollo
启动portal服务后,就可以登陆了,浏览器输⼊云服务器公⽹ip:18070/,⽤户默认密码是apollo/admin
step5:使⽤apollo
项⽬使⽤apollo
<dependency>
<groupId&ip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.7.0</version>
</dependency>
在springboot启动类上加上@EnableApolloConfig即可开启了apollo。
那么在启动springboot时候,启动类加⼊jvm参数启动,这⾥的启动参数通常都是必须加的,可以记录下。启动参数如下:
springframework jar包下载
-Denv=dev -Dspring.profiles.active=dev -Dconsole.log=true -Dapollo.cluster=default -Dapp.id=mall-test -Ddev_meta={云服务器公⽹ip}:18080/启动参数解释如下
和apollo相关的配置如下
-Ddev_meta={云服务器公⽹ip}:18080/ #连接apollo的地址
-Denv=dev #使⽤dev环境
-Dapp.id=mall-test #使⽤app.id是mall-test,和上⾯的图对应,appid是apollo的⼀个唯⼀标识,不能重
复。
-Dapollo.cluster=default #使⽤默认的集,当然可以创建多个集,我上⾯的图就有个dev01集,这个是不同环境使⽤不同配置很有⽤
-a={云服务器公⽹ip}:18080/ #貌似新版
-Dspring.profiles.active=dev #使⽤dev配置⽂件,spring的配置
-Dconsole.log=true #spring的配置,打印⽇志到console
启动使⽤apollo成功⽇志会是这样
同时在apollo上实例列表也可以验证到,如果有连接到apollo成功,就会在这⾥显⽰。
这样就可以把配置都放apollo,不需要写本地了。
apollo的例⼦
import java.URI;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.t.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
ip.del.ConfigChangeEvent;
ip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import lombok.Data;
slf4j.Slf4j;
@Slf4j
@Data
@Component
public class StellarApolloConfig {
@Value("${start.switch}")
private String allRestartSwitch = "off";
@ApolloConfigChangeListener
private void listenRestartChange(ConfigChangeEvent changeEvent) {
if (changeEvent.isChanged("start.switch")) {
log.info("start.switch变化");
allRestartSwitch = Change("start.switch").getNewValue().trim();
log.info("start.switch变化,allRestartSwitch={}", allRestartSwitch);
}
}
}
搭建apollo过程中遇到的坑
刚开始是按照官⽅⽂档来安装的,但是启动configservice服务的时候,就遇到了解决不了问题
按照官⽅⽂档启动configservice时候,执⾏的是apollo-configservice-1.7.1-github\scripts\startup.sh,由于我要让注册中⼼使⽤18080端⼝,也在startup.sh修改了,但是启动就是报错
启动apollo-configservice-1.7.1时候apollo-1.7.1apollo-configservice-1.7.1-github.log⽂件报错
start-stop-daemon: warning: this system is not able to track process names
longer than 15 characters, please use --exec instead of --name.
start-stop-daemon: user '197108' not found
使⽤系统是ubuntu1604,看了下启动脚本apollo-configservice-1.7.1-github/scripts/startup.sh,⾥⾯jar启动不是java -jar xx.jar⽅式启动,⽽是xx.jar start⽅式启动,我第⼀次遇到这样启动⽅式,也搞不明⽩因此就使⽤了常规的java -jar⽅式启动,就是⽂章开头地⽅

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。