第七篇: 高可用的服务注册中心

第一篇: 服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化(高可用),效果类似上一篇文章中的配置中心高可用相似。

一、准备工作

运用第一篇创建的注册中心 leopard-eureka ,进行配置修改

在leopard-eureka工程中resources文件夹下(为了简化,原先application.yml暂不使用),创建配置文件 application-peer1.yml 和 application-peer2.yml,两个文件内容一样:


spring:
  application:
    name: leopard-eureka
  profiles: peer1
  
server:
  port: 8761
eureka:
  instance:
    hostname: eureka-peer1
    preferIpAddress: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}:${spring.application.name}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://eureka-peer2:8762/eureka/
      
---

spring:
  application:
    name: leopard-eureka
  profiles: peer2
  
server:
  port: 8762
eureka:
  instance:
    hostname: eureka-peer2
    preferIpAddress: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}:${spring.application.name}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://eureka-peer1:8761/eureka/

之前章节介绍过参数,这里再重新介绍以下参数:


1、fetch-registry:表示是否从eureka server获取注册信息,如果是单一节点,不需要同步其他eureka server节点,则可以设置为false,但此处为集群,应该设置为true,默认为true,可不设置。

2、register-with-eureka:表示是否将自己注册到eureka server,因为要构建集群环境,需要将自己注册到及群众,所以应该开启。默认为true,可不显式设置。

3、eureka.instance.instance-id必须写在application.properties或application.yml中。不能写在bootstrap.properties和bootstrap.yml中。可以去了解下springboot加载默认配置文件的顺序,bootstrap是在application之前的。写在bootstrap里的话,自定义的instance-id并不会在eureka界面生效

4、eureka.instance.prefer-ip-address 配置为 true 就可以将IP注册到Eureka Server上,而如果不配置就是机器的主机名

这时 leopard-eureka 就已经改造完毕。

按照官方文档的指示,需要改变 etc/hosts,linux系统通过

vim /etc/hosts

win系统通过

C:\Windows\System32\drivers\etc\hosts

加上:

127.0.0.1 eureka-peer1
127.0.0.1 eureka-peer2

二、启动工程

leopard-eureka 可通过配置指定文件配置进行启动,这里暂时不说,直接将工程打成 jar 演示启动。

这里使用 maven 打成 jar,需在 leopard-eureka 的 pom.xml 加入如下配置,主要用于 maven 打包

	<build>
	    <plugins>
	        <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	            <configuration>
	                <mainClass>com.leopard.eureka.EurekaServiceApplication</mainClass> <!--主类 包含main-->
	                <layout>JAR</layout> 
	            </configuration>
	        </plugin>
	    </plugins>
	</build>

运行 命令打包到 target 目录下

mvn clean package

启动 jar ,win7 就打开两个终端,各自启动指定不同的配置文件

java -jar leopard-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar leopard-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

初步启动时,会报一些错误,可忽略,待服务端都启动完成后,恢复正常。 

正常启动后,访问链接:http://localhost:8761/

到这里集群就完成了。

leopard-eureka peer1 8761,leopard-eureka peer2 8762相互感应,当有服务注册时,两个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。

以前其他服务注册到服务中心时,只需增加链接服务节点即可:

eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-peer1:8761/eureka/,http://eureka-peer2:8762/eureka/

启动之前章节的测试服务 leopard-config 和 leopard-service , 效果如下:

服务 eureka-peer1

服务 eureka-peer2

此时的架构图:

 

文章转载: https://blog.csdn.net/forezp/article/details/81041028

猜你喜欢

转载自blog.csdn.net/u014799292/article/details/83512509
今日推荐