1. 程式人生 > >高可用註冊中心Eureka搭建

高可用註冊中心Eureka搭建

一、基礎環境

    注:本次開發環境 為win10 ,部署環境均為centos7

    1)jdk 1.8 (開發環境)

   

    2)maven 3.5.2  (開發環境)


    3)搭建私有registry (部署環境)

本次映象編譯伺服器使用 

http://192.168.8.238:5678

registry中心使用

192.168.8.238:5000

4)註冊中心擬採用雙節點部署,分別為 http://192.168.8.235:8761/ 和http://192.168.8.237:8761/ 節點

二、搭建 

1、新建一個maven專案 (開發環境)

    a)pom.xml如下

<?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>

	<groupId>com.wy</groupId>
	<artifactId>eureka_center</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>EurekaCenter</name>
	<description>Eureka Center for Spring Boot</description>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.2.RELEASE</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<docker.repostory>192.168.8.238:5000</docker.repostory><!--配置映象倉庫的對應的地址與埠-->
		<docker.image.prefix>wy</docker.image.prefix><!--配置映象倉庫的屬性-->
		<docker.build>http://192.168.8.238:5678</docker.build><!--配置編譯伺服器地址和埠-->
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Camden.SR3</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<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>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!--docker編譯外掛 -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<executions>
					<!--設定在執行maven 的install時構建映象-->
					<execution>
						<id>build-image</id>
						<phase>install</phase>
						<goals>
							<goal>build</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<!--安裝了docker的主機,並且打開了api remote介面設定-->
					<dockerHost>${docker.build}</dockerHost>
					<pushImage>true</pushImage><!--設定上傳映象到私有倉庫,需要docker設定指定私有倉庫地址-->
					<!--映象名稱-->
					<imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
					<!--映象的基礎版本-->
					<baseImage>java:openjdk-8-jdk-alpine</baseImage>
					<!--映象啟動引數-->
					<entryPoint>["sh", "-c", "java $PARAMS  -jar /${project.build.finalName}.jar"]</entryPoint>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

b)在src/main/java的某包下建立springboot程式入口類

package com.wy.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaCenterApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaCenterApplication.class, args);
	}
}
c)在src/main/resources下建立192.168.8.235:8761 節點的配置檔案,名為 application-peer1.yml 
server:
  port: 8761
spring:
  application:
    name: EUREKA-CENTER
security:
  basic:
    enabled: true
  user:
    name: abc
    password: 123
eureka:
  instance:
    hostname: EurekaCenter1        #Eureka例項的主機名
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${eureka.instance.hostname}:${spring.application.instance_id:${server.port}}
    lease-renewal-interval-in-seconds: 30  #預設服務續約時間為30S
    lease-expiration-duration-in-seconds: 90 #預設服務失效時間為90S ,eureka預設每隔60秒,會將清單內超時的(預設90秒)剔除掉。
    ip-address: 192.168.8.235 #指定本服務ip
  client:
    serviceUrl:
      defaultZone: http://abc:
[email protected]
:8761/eureka/ #Eureka節點相互註冊 register-with-eureka: true #向eureka註冊自己 fetch-registry: true #從Eureka獲取註冊資訊 registry-fetch-interval-seconds: 30 #預設客戶端清單更新時間為30秒(每個客戶端如不自行配置,預設為30秒) eureka-service-url-poll-interval-seconds: 60 #輪詢Eureka服務端地址變更的時間間隔,預設為300秒,與配置中心結合動態重新整理serviceUrl時,需要調整該引數 server: enable-self-preservation: false #不使用自我保護(自我保護預設開啟,Eureka伺服器15分鐘內心跳成功比例低於85%,則觸發自我保護機制,不剔除任何註冊的服務資訊,直至心跳成功數大於85%,本地頻繁除錯,故而關閉該功能) peer-eureka-nodes-update-interval-ms: 60000 #叢集裡eureka節點的變化資訊更新的時間間隔
d)在src/main/resources下建立192.168.8.237:8761 節點的配置檔案,名為 application-peer2.yml 
server:
  port: 8761
spring:
  application:
    name: EUREKA-CENTER
security:
  basic:
    enabled: true
  user:
    name: abc
    password: 123
eureka:
  instance:
    hostname: EurekaCenter2        #Eureka例項的主機名
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${eureka.instance.hostname}:${spring.application.instance_id:${server.port}}
    lease-renewal-interval-in-seconds: 30  #預設服務續約時間為30S
    lease-expiration-duration-in-seconds: 90 #預設服務失效時間為90S ,eureka預設每隔60秒,會將清單內超時的(預設90秒)剔除掉。
    ip-address: 192.168.8.237
  client:
    serviceUrl:
      defaultZone: http://abc:[email protected]:8761/eureka/ #Eureka節點相互註冊
    register-with-eureka: true #向eureka註冊自己
    fetch-registry: true #從Eureka獲取註冊資訊
    registry-fetch-interval-seconds: 30 #預設客戶端清單更新時間為30秒(每個客戶端如不自行配置,預設為30秒)
    eureka-service-url-poll-interval-seconds: 60 #輪詢Eureka服務端地址變更的時間間隔,預設為300秒,與配置中心結合動態重新整理serviceUrl時,需要調整該引數

  server:
    enable-self-preservation: false #不使用自我保護(自我保護預設開啟,Eureka伺服器15分鐘內心跳成功比例低於85%,則觸發自我保護機制,不剔除任何註冊的服務資訊,直至心跳成功數大於85%,本地頻繁除錯,故而關閉該功能)
    peer-eureka-nodes-update-interval-ms: 60000 #叢集裡eureka節點的變化資訊更新的時間間隔

注:筆者採用直接指定了ip地址的方式,有興趣的小夥伴亦可以使用其他方式(如忽略指定名稱的網絡卡、正則表示式指定使用網路地址等)來確定多網絡卡下docker的IP選擇問題。

2、在專案路徑下執行編譯命令 (開發環境)

mvn install spring-boot:repackage
3、部署 (部署環境)
    在192.168.8.235執行:
        docker run -e PARAMS='-Dspring.profiles.active=peer1' -d -p 8761:8761 --restart=always 192.168.8.238:5000/wy/eureka_center:0.0.1-SNAPSHOT
    在192.168.8.237執行:
        docker run -e PARAMS='-Dspring.profiles.active=peer2' -d -p 8761:8761 --restart=always 192.168.8.238:5000/wy/eureka_center:0.0.1-SNAPSHOT

三、驗證

    分別訪問 http://192.168.8.235:8761/ 和http://192.168.8.237:8761/ ,登陸後可看到如下資訊:


可以看到,註冊中心已經相互註冊。(沒有相互註冊成功的話,檢查client.serviceUrl.defaultZone的地址對不對,然後防火牆有沒有拉下或者配置開放埠。)

相關推薦

可用註冊中心Eureka搭建

一、基礎環境    注:本次開發環境 為win10 ,部署環境均為centos7    1)jdk 1.8 (開發環境)       2)maven 3.5.2  (開發環境)    3)搭建私有registry (部署環境)本次映象編譯伺服器使用 http://192.16

搭建 Spring Cloud Eureka Server 可用註冊中心叢集

什麼是註冊中心 Eureka Server 在微服務中承擔的角色是服務註冊中心,也是最最基礎的核心設施之一。從“Eureka”單詞的含義**“我找到了!我發現了!”可以看出,其實 Eureka 就是用來實現服務註冊、服務發現的工具**,和 dubbo 這類的分散式服務治理框架類似。各

SpringBoot2.0 + SpringCloud Eureka搭建可用註冊中心Eureka之二)

上一篇中提到用SpringBoot2.0+Eureka搭建服務註冊中心和服務提供者,詳情參考: https://www.cnblogs.com/SysoCjs/p/10127448.html         現在講一下SpringCloud+Eureka搭建高可用註

Spring Cloud學習一:服務治理Spring Cloud Eureka搭建可用註冊中心

Spring Cloud Eureka是Spring Cloud NetFlix微服務套件中的一部分,基於NetFlix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能,是微服務架構中最為核心和基礎的模組,既包含了服務端元件,也包含了客戶端元件。 又涉及到服務註冊與服務發現兩個

springcloud搭建可用註冊中心的時候註冊中心在unavailable-replicas中的問題

解決 禁止 rep 無法 自主 功能 ring 可用 nav   在搭建springcloud eureka高可用註冊中心時,發現另一個註冊中心一直在unavailable-replicas不可用分片,原因為原來為單個註冊中心的時候,禁止了註冊中心自主註冊為服務和檢索服務的

Spring Cloud Eureka 可用註冊中心

per 雙節點 div width CA 高可用部署 efault 就是 行高 參考:<<spring cloud 微服務實戰>> 在微服務架構這樣的分布式環境中,各個組件需要進行高可用部署。 Eureka Server 高可用實

Eureka可用註冊中心registered-replicas沒有分散式註冊中心

Eureka高可用註冊中心registered-replicas沒有分散式註冊中心 【寫在前面】如果看完這篇部落格,對你有幫助的話,歡迎加入全棧技術交流群,群內不定時釋出熱門學習資料,也歡迎進行技術交流,對我的部落格有疑問也可以在群裡@我。《全棧技術交流群歡迎你》 最近接了個活。

Spring Cloud 實戰(二)- Eureka 可用註冊中心

Eureka 高可用註冊中心 點餐系統中的產品服務、訂單服務已寫了大半,但是註冊中心高可用一直還沒解決,今兒就把我遇到的坑塵現出來,避免以後再遇到此問題無章可循了。 Eureka Server1 配置

Spring Cloud Eureka ——可用註冊中心

在服務註冊中心專案中 1建立application-peer1.properties,作為peer1服務中心配置 spring.application.name=eureka-server server.port=1111 eureka.instance.hostname

Eureka--3、可用註冊中心的第一步,通過defaultZone深入理解zone和serviceUrl

defaultZone與serviceUrl的獲取 我們平時都是用defaultZone,這個defaultZone到底是什麼,為什麼一定要用defaultZone,換個別的行不行。網上很多文章都是入門的,不會講到這一點。 default-zone != defaul

SpringCloud 2.0(一)——註冊中心Eureka搭建

前言:學習和使用SpringCloud是從2017年底開始的,當時專案選擇框架的時候定的就是springboot的全家桶,到現在已經整整一年時間了,期間也遇到了很多問題,每次都是看官方文件或者學習優秀的部落格來解決,但是總感覺只是都是零碎的點,沒有連成線,結成網,所以計劃有空的時候就把相關的內容

SpringCloud筆記(二)可用註冊中心的實現

目錄 1、要實現的拓撲 2、eureka-sever01和eureka-sever02 3、啟動服務提供者 3.1 pom.xml 3.2 application.yml 3.3 業務類 4、啟動服務消費者 4.1 pom.xml 與服務提供者相同 4.2 a

突發熱點事件下微博可用註冊中心vintage的設計&實踐

文章概要 當前微博服務化採用公有云+私有云的混合雲部署方式,承載了每天百億級的流量,vintage 作為微博微服務的註冊中心,為管理 10w 級微服務節點以及在流量激增情況下的服務快速擴縮容,面臨了極大挑戰。例如:複雜網路條件下 vintage 服務的高可用保障、解決大批量節點狀態變更觸

SpringCloud教程 | 八.構建可用註冊中心

簡介 SpringCloud教程 | 一.服務的註冊與發現(Eureka)主要演示瞭如何構建和啟動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,但是在之前的

Spring cloud微服務實戰——可用註冊中心(二)

上一篇我們介紹服務註冊中心、服務提供者、服務消費者的建立以及呼叫。本次課程介紹的是服務中心高可用設定,以及Eureka的自我保護模式。 高可用的服務註冊中心 在服務註冊中心其實也就是一個服務,它同樣可以向其他服務中心註冊,Eureka Servere的高

SpringCloud學習系列之一 ----- 搭建一個可用註冊中心(Eureka)

字母 cat ted drivers 路由 都沒有 timer sessions order 前言 本篇主要介紹的是SpringCloud相關知識、微服務架構以及搭建一個高可用的服務註冊與發現的服務模塊(Eureka)。 SpringCloud介紹 Spring Clou

Spring cloud Eureka 服務治理(可用服務中心)

image 本地host available png active url 狀態 name spring 在微服務的架構中,我們考慮發生故障的情況,所以在生產環境中我們需要對服務中各個組件進行高可用部署。 Eureka Server 的高可用實際上就是將自己作為服務想其

註冊中心 Eureka 源碼解析 —— 調試環境搭建(含源碼)

Java 架構 依賴工具GradleJDKIntelliJ IDEA 源碼拉取https://github.com/Netflix/eureka.git使用 IntelliJ IDEA 從 Fork 出來的倉庫拉取代碼。拉取完成後,Gradle 會下載依賴包,可能會花費一些時間,耐心等待下。 本文基

Spring Cloud 中Eureka服務註冊中心搭建

1:首先在idea上面建立一個Maven工程,命名為Sprng-Boot-eureka-test 建立的Maven工程中的pom檔案如下 2:在建立的Sprng-Boot-eureka-test工程下面新建一個module為eureka-server

Eureka 註冊中心環境搭建

官網教程地址: https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html#netflix-eureka-server-starter 1 新建springboot專案 2 增