版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxy540843763/article/details/83243726
配置中心
搭建过程
- 1.引入依赖:
<dependencies>
<!--配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
-
- 修改启动类。添加
@EnableConfigServer,@EnableDiscoveryClient
- 修改启动类。添加
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class DorConfigApplication {
public static void main(String[] args) {
SpringApplication.run(DorConfigApplication.class, args);
}
}
-
- 修改配置文件,application.yml
spring:
application:
name: doraemon-configServer
profiles:
active: local
cloud:
config:
server:
git:
# 远程仓库地址(需要新建一个仓库,使用项目的仓库也是可以的,但是.......)
uri: https://gitee.com/fangjiaxiaobai/doraemon-config.git
# 远程仓库的查找地址
search-paths: config
# username:
# password:
# 远程仓库的分支
label: local
server:
port: ${config_port:8770}
eureka:
client:
service-url:
defaultZone: http://${eureka_service_url:eureka-peer1:8761}/eureka/
4.然后启动,查看Eureka页面:
高可用的配置中心
1.复制两份application.yml,分别命名为:application-prod1.yml,application-prod2.yml
application-prod1.yml
spring:
application:
name: doraemon-configServer
cloud:
config:
server:
git:
uri: https://gitee.com/fangjiaxiaobai/doraemon-config.git
search-paths: config
label: prod
server:
port: ${config_port:8771}
eureka:
client:
service-url:
defaultZone: http://${eureka_service_url:eureka-peer1:8761}/eureka/
application-prod2.yml:
spring:
application:
name: doraemon-configServer
cloud:
config:
server:
git:
uri: https://gitee.com/fangjiaxiaobai/doraemon-config.git
search-paths: config
label: prod
discovery:
service-id: doraemon-configServer
server:
port: ${config_port:8772}
eureka:
client:
service-url:
defaultZone: http://${eureka_service_url:eureka-peer1:8761}/eureka/
然后分别启动两个实例:
java -jar dor-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod1
java -jar dor-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod2
然后,查看eureka。就会有两个config实例。
集成Bus,实现动态刷新集群配置
在上面的是基础上,修改pom.xml,添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
也可以使用kafka实现,那样的添加的依赖就是:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
修改application-prod1.yml和application-prod2.yml添加rabbitMq(Kafka)的配置:
spring:
rabbitmq:
host: ${MQ_IP:10.127.138.75}
port: ${MQ_PORT:5672}
username: ${MQ_USERNAME:guest}
password: ${MQ_PASSWORD:guest}
重新启动即可。
docker集成
修改pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--指定镜像的名称-->
<imageName>${project.artifactId}:${project.version}</imageName>
<!--<baseImage>java</baseImage>-->
<dockerDirectory>src/main/docker</dockerDirectory>
<forceTags>true</forceTags>
<!--<entryPoint>["java","-Djava.security.egd=file:/dev/./urandom", "-jar",-->
<!--"/${project.build.finalName}.jar"]-->
<!--</entryPoint>-->
<!--那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入-->
<resources>
<resource>
<targetPath>/</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件,${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
在src/main/docker下新建Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD dor-config-0.0.1-SNAPSHOT.jar app.jar
RUN chmod 755 /app.jar
EXPOSE 8771
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"
这个还是同上一篇Eureka的搭建一样,可以编译镜像的过程放到pom中。