赞
踩
因为在微服务架构中,注册中心是核心,所有的服务都需要通过注册中心来进行交互,如果是单机版环境,注册中心一挂,会导致整个微服务环境不可用。
一般来说,搭建环境最好是奇数台,所以,至少是3台(个人建议,当然2台也可以)。
使用的是相互注册原理。从而实现数据的相互注册。
springcloud_eureka 服务注册 8100
springcloud_eureka_ha 服务注册 9100
eureka HA集群环境建议3台
- <?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 http://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.0.4.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
-
- <groupId>com.fqyd</groupId>
- <artifactId>springcloud</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
- </properties>
- <modules>
- <module>springcloud_eureka</module>
- <module>springcloud_eureka_ha</module>
- <module>springcloud_product</module>
- <module>springcloud_product_member</module>
- <module>springcloud_consumer</module>
- </modules>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <!-- Spring Cloud 管理依赖 -->
- <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>

- <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.fqyd</groupId>
- <artifactId>springcloud</artifactId>
- <version>1.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <groupId>com.fqyd</groupId>
- <artifactId>springcloud_eureka</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>springcloud_eureka</name>
- <description>Demo project for Spring Boot</description>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
- </dependencies>
- </project>

- ####服务器端口号
- server:
- port: 8100
- ##定义服务名称
- spring:
- application:
- name: fqyd-eureka
- eureka:
- instance:
- ####服务注册ip
- hostname: 127.0.0.1
- client:
- ###因为本身是注册中心,是否需要将自己注册给自己的注册中心(集群的时候需要设置成true)
- registerWithEureka: true
- ###因为本身是注册中心,不需要去检索服务
- fetchRegistry: true
- ###注册地址
- serviceUrl:
- defaultZone: http://${eureka.instance.hostname}:9100/eureka/

注意:1.registerWithEureka和fetchRegistry需要设置成true
2.defaultZone: http://${eureka.instance.hostname}:9100/eureka/ 9100是另一个注册中心的端口,主要是使用相互注册的原理。
3.spring.application. name: fqyd-eureka 服务的应用名要保持一致,不然会有冲突的问题。
- package com.fqyd;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
-
- @SpringBootApplication
- @EnableEurekaServer //表示开启eureka服务
- public class SpringcloudEurekaApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SpringcloudEurekaApplication.class, args);
- }
-
- }
- <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.fqyd</groupId>
- <artifactId>springcloud</artifactId>
- <version>1.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <groupId>com.fqyd</groupId>
- <artifactId>springcloud_eureka_ha</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>springcloud_eureka_ha</name>
- <description>Demo project for Spring Boot</description>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
- </dependencies>
-
- </project>

- ####服务器端口号
- server:
- port: 9100
- ##定义服务名称
- spring:
- application:
- name: fqyd-eureka
- eureka:
- instance:
- ####服务注册ip
- hostname: 127.0.0.1
- client:
- ###因为本身是注册中心,是否需要将自己注册给自己的注册中心(集群的时候需要设置成true)
- registerWithEureka: true
- ###因为本身是注册中心,不需要去检索服务
- fetchRegistry: true
- ###注册地址
- serviceUrl:
- defaultZone: http://${eureka.instance.hostname}:8100/eureka/

注意: defaultZone: http://${eureka.instance.hostname}:8100/eureka/ 这里是8100,相互注册
- package com.fqyd.springcloud_eureka_ha;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
-
- @SpringBootApplication
- @EnableEurekaServer //表示开启eureka服务
- public class SpringcloudEurekaHaApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SpringcloudEurekaHaApplication.class, args);
- }
-
- }
先启动8100,再启动9100,8100服务启动过程中会报如下错误,报错正常,因为8100是注册在9100上,而9100还没有启动,所以才报这个错。还有一个问题需要注意,通过http://localhost:8100/访问,启动后,立即查看, 发现只有一个服务,而9100有两个服务,需要耐心等待一小会,才能看到两个服务,这也是因为8100启动时,报错的问题,需要一段时间才能同步。
- com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
- at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.9.2.jar:1.9.2]
- at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101) [eureka-client-1.9.2.jar:1.9.2]
- at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_101]
- at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_101]
- at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_101]
- at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_101]
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
- at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]

如果你热衷技术,喜欢交流,欢迎加入我们!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。