近来本地搭建eureka的集群环境遇到诸多问题,为了巩固学的东西,在此记录下这些解决方案,话很少说,上代码。html
1.首先是pom.xml文件,主要是 spring-boot-starter-web ,spring-cloud-starter-netflix-eureka-serverjava
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.gongdafang</groupId> <artifactId>serverdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>serverdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!--<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.我使用了yaml文件,由于它结构清晰易懂,配置内容字符量比properties文件少,主要仍是由于能够一个文件多个环境配置web
#集群配置 spring: profiles: active: peer3 --- server: port: 8081 spring: profiles: peer1 application: name: z1-eureka eureka: client: serviceUrl: defaultZone: http://peer2:8082/eureka/,http://peer3:8081/eureka/ instance: hostname: peer1 --- server: port: 8082 spring: profiles: peer2 application: name: z2-eureka eureka: client: serviceUrl: defaultZone: http://peer1:8081/eureka/,http://peer3:8083/eureka/ instance: hostname: peer2 --- server: port: 8083 spring: profiles: peer3 application: name: z3-eureka eureka: client: serviceUrl: defaultZone: http://peer1:8081/eureka/,http://peer2:8082/eureka/ instance: hostname: peer3
3.运行main spring
4.上面的三步骤已经将本地集群设置基本完成了,可是光写完代码,运行有问题那也是很头疼的一件事啦,嘿嘿,如今就总结下我遇到过的问题和解决方案吧apache
1. WARN 2364 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_Z2-EUREKA/windows10.microdone.cn:z2-eureka:8082 - registration failed Cannot execute request on any known server编程
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serverwindows
2. There was a problem with the instance info replicatorapi
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serverapp
① 由于本地设置了多个server端(如peer1,peer2),而instance.hostname是惟一标识 ,此时须要配一下本地的host文件。Windows的host在/etc/host,mac的在/private/etceclipse
我是用windows为例。cmd里敲notepad "%systemroot%/system32/drivers/etc/hosts" 回车
②在idea中屡次启动同一个项目,启动设置修改
③对于idea运行时须要设定指定参数,如图,当运行不一样节点时,须要指定对应节点 --spring.profiles.active=peer1
5.以上是我用idea出现的问题,注意若是运行非最后一个server端时,服务会启动成功可是仍是报错(以下出错),是由于他注册的某个服务还未启动致使,能够不用管,等全部服务都注册成功后,服务会自动注册成功的,贴上运行成功的页面吧
ERROR 5796 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://peer2:8082/eureka/} com.sun.jersey.api.client.ClientHandlerException: org.apache.http.NoHttpResponseException: peer2:8082 failed to respond
6.除了使用编程工具运行项目外,还可采用控制台命令的形式
① 切换目录到你的项目根目录而后运行 mvn install生产jar包
也能够用 idea打包
控制台切换到你的jar 包 位置 java -jar 你的jar包 .jar 针对集群环境命令 java -jar 你的jar包 .jar --spring.profiles.active=xxx
②第二种方法,能够直接 切换目录到你的项目根目录,而后运行 mvn spring-boot:run
以上是我搭建环境时遇到的问题,百度搭建环境的相关步骤,没有一个完整的步骤,有丢丢费脑子,哈哈哈。不过仍是有学习收获的。除了使用idea,使用eclipse的同窗在运行时,是须要配置运行服务端设置的,能够借鉴文档https://www.cnblogs.com/syuf/p/9561798.html,写的仍是挺具体的.