Eureka,作為spring cloud的服務發現與注冊中心,在整個的微服務體系中,處於核心位置。單一的eureka服務,顯然不能滿足高可用的實際生產環境,這就要求我們配置一個能夠應對各種突發情況,具有較強容災能力的eureka服務。下面我將以一個較為簡單的例子,來描述這種高可用服務的實現原理。
一、服務搭建
New->Project-> 選擇spring initialir 如下圖:
下一步->選擇cloud discovery->eureka server,然后一直下一步就行了
創建完后的工程的pom.xml文件如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.example</groupId> 7 <artifactId>eureka</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>eureka</name> 12 <description>Demo project for Spring Boot</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>1.5.9.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.8</java.version> 25 <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> 26 </properties> 27 28 <dependencies> 29 <dependency> 30 <groupId>org.springframework.cloud</groupId> 31 <artifactId>spring-cloud-starter-eureka-server</artifactId> 32 </dependency> 33 34 <dependency> 35 <groupId>org.springframework.boot</groupId> 36 <artifactId>spring-boot-starter-test</artifactId> 37 <scope>test</scope> 38 </dependency> 39 </dependencies> 40 41 <dependencyManagement> 42 <dependencies> 43 <dependency> 44 <groupId>org.springframework.cloud</groupId> 45 <artifactId>spring-cloud-dependencies</artifactId> 46 <version>${spring-cloud.version}</version> 47 <type>pom</type> 48 <scope>import</scope> 49 </dependency> 50 </dependencies> 51 </dependencyManagement> 52 53 <build> 54 <plugins> 55 <plugin> 56 <groupId>org.springframework.boot</groupId> 57 <artifactId>spring-boot-maven-plugin</artifactId> 58 </plugin> 59 </plugins> 60 </build> 61 62 63 </project>
創建服務注冊中心,在Application類中添加注解,只需要一個注解@EnableEurekaServer
1 package com.example.demo; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 7 @EnableEurekaServer 8 @SpringBootApplication 9 public class EurekaApplication { 10 11 public static void main(String[] args) { 12 SpringApplication.run(EurekaApplication.class, args); 13 } 14 }
修改application.properties配置文件
1 server.port=8761 2 spring.application.name=eureka-server 3 eureka.client.fetch-registry=false 4 eureka.client.register-with-eureka=false 5 eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
二、打包部署
通過maven進行打包,生成jar包
將jar包分別部署到兩台服務器上,服務器1(192.168.12.52),服務器2(192.168.12.36),修改jar包的配置文件application.properties
服務器1:
1 server.port=8761 2 spring.application.name=eureka-server 3 eureka.client.fetch-registry=false 4 eureka.client.register-with-eureka=false 5 eureka.client.serviceUrl.defaultZone=http://192.168.12.36:8762/eureka/
服務器2:
1 server.port=8762 2 spring.application.name=eureka-server 3 eureka.client.fetch-registry=false 4 eureka.client.register-with-eureka=false 5 eureka.client.serviceUrl.defaultZone=http://192.168.12.52:8761/eureka/
進入dos下,執行以下命令
java -jar eureka-0.0.1-SNAPSHOT.jar
打開網址192.168.12.52:8761,192.168.12.26:8762(注意兩台服務器之間要能夠ping通)可以寫一個簡單的服務,向搭建好的eureka服務中心注冊,進行測試,這里就不再進行贅述。