springcloud~Eureka實(shí)例搭建
服務(wù)端
build.gradle配置
dependencies {
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
bootstrap.yml相關(guān)配置
server.port: 8761
management.port: 8762
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka/
啟動(dòng)代碼
package lind.sprindemo.eurekaServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
客戶端
向我們配置中心的客戶端同時(shí)也是eureka的一個(gè)客戶端,例如一個(gè)訂單服務(wù),它的配置存儲(chǔ)在配置中心,它如果希望公開(kāi)自己,就需要是eureka的一個(gè)客戶端。
例子
graph TD
A[訂單服務(wù)]-->B(注冊(cè))
B-->C(eureka)
A-->D(獲取配置)
D-->E(clientserver)
高可用的eureka集群
主要是在eureka里注冊(cè)另一個(gè)eureka,兩個(gè)eureka實(shí)例相互注冊(cè),實(shí)現(xiàn)一個(gè)最高用的集群。
同一時(shí)刻,只有一個(gè)eureka里有服務(wù),而當(dāng)這個(gè)eureka掛了之后,會(huì)把服務(wù)自動(dòng)同步到另一個(gè)節(jié)點(diǎn)上,這就是高可用。
- 配置代碼
server:
port: ${PORT:8761}
management:
port: ${BG_PORT:8762}
application:
name: ${NAME:eurekaserver}
spring:
profiles:
active: dev
---
eureka:
profile: dev
instance:
hostname: ${application.name}
perferIpAddress: true #基于IP地址注冊(cè)
client:
registerWithEureka: false #false表示不向注冊(cè)中心注冊(cè)自己。
fetchRegistry: false #false表示自己端就是注冊(cè)中心,我的職責(zé)就是維護(hù)服務(wù)實(shí)例,并不需要去檢索服務(wù)
serviceUrl:
defaultZone: ${URL:http://${eureka.instance.hostname}:${server.port}/eureka/}
- Dockerfile內(nèi)容
可以從遠(yuǎn)程下載你的jar包,如果你的網(wǎng)速足夠好的話
FROM fabric8/java-jboss-openjdk8-jdk:1.4
ENV JAVA_APP_JAR="app.jar"
ENV JAVA_MAX_MEM_RATIO=40
ENV AB_OFF ""
ADD --chown=jboss:jboss ./jar/eurekaServer-0.0.2.jar /deployments/app.jar
- docker-compose實(shí)現(xiàn)eureka集群
version: "3.3"
services:
eurekaserver1:
build: ./eureka-server
restart: on-failure
ports:
- "6761:6761"
- "6762:6762"
networks:
- dev
environment:
- PORT=6761
- BG_PORT=6762
- NAME=eureka1
- URL=http://eureka2:6761/eureka #集群地址配置
eurekaserver2:
build: ./eureka-server
restart: on-failure
ports:
- "5761:5761"
- "5762:5762"
networks:
- dev
environment:
- PORT=5761
- BG_PORT=5762
- NAME=eureka2
- URL=http://eureka1:6761/eureka #集群地址配置
運(yùn)行docker-compose up -d 就會(huì)先構(gòu)建eureka的鏡像,然后運(yùn)行你的兩個(gè)eureka實(shí)例了。
浙公網(wǎng)安備 33010602011771號(hào)