高可用eureka server搭建

     作为一个注册中心,为了确保微服务能够正常的注册和发现,单机的eureka server肯定不能满足这样的需求,如果注册中心挂掉,那么线上的所有服务都会有影响,那么需要有一个高可用的eureka server来支撑,本文主要介绍高可用的eureka server的搭建。
     在eureka的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,服务注册中心也是,那么eureka server的高可用实际上是将自己作为服务注册到其他的注册中心,这样可以形成一组相互注册的服务注册中心,可以实现服务清单的同步,达到高可用的目的。
     下面介绍下如何在3个节点上分别搭建一台eureka server,并将它们作为高可用的eureka server对外提供服务注册、发现等服务。
     新建一个spring boot的项目,引入相关的依赖,这里使用的是gradle,具体如下:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'spring-boot'
apply plugin: 'application'
apply plugin: 'io.spring.dependency-management'

group = 'spring-cloud-demo'
applicationName = 'eureka-server'
version = '0.0.1'

sourceCompatibility = 1.7
targetCompatibility = 1.7
compileJava.options.encoding = 'UTF-8'
buildDir = 'target'

repositories {
  mavenLocal()
  maven { url "http://192.168.88.8:8081/nexus/content/groups/public" }
  maven { url "http://192.168.88.8:8081/nexus/content/repositories/releases" }
  mavenCentral()
}

ext {
}

dependencyManagement {
  imports {
  mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.SR1'
  }
}

dependencies {
  compile "org.springframework.boot:spring-boot-starter"
  compile "org.springframework.cloud:spring-cloud-starter-eureka-server"

  testCompile "org.springframework.boot:spring-boot-starter-test"
}

configurations {
  compile.exclude group: "log4j", module: "log4j"
  compile.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

mainClassName = 'com.jthink.spring.cloud.demo.eureka.server.application.Application'

buildscript {
  ext {
  springBootVersion = '1.5.3.RELEASE'
  }

  repositories {
  mavenLocal()
  maven { url "http://192.168.88.8:8081/nexus/content/groups/public" }
  mavenCentral()
  }

  dependencies {
  classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  classpath("io.spring.gradle:dependency-management-plugin:1.0.2.RELEASE")
  }
}

startScripts {
  doLast {
  unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*")
  }
}
     这里使用的是最新版的spring cloud(时间点:2017年6月6日):Dalston.SR1,项目主要依赖spring-cloud-starter-eureka-server。
     接下去主要是看配置,application.properties下:
# server
server.address=${serverAddress}
server.port=${serverPort}
# application
spring.application.name=eureka-server
# HA
eureka.instance.hostname=${eureka.hostname}
eureka.client.serviceUrl.defaultZone=${eureka.ha.server}
     假设3个节点hostname分别为host1、host2、host3,那么在host1上部署的时候eureka.hostname=host1,eureka.ha.server=http://host2:${serverPort}/eureka/,http://host3:${serverPort}/eureka/,其他的节点以此类推,目的就是讲当前节点的eureka server注册到其他2台节点上去,最终组成一组互相注册的服务注册中心从而做到服务高可用,这样挂掉一个或者两个节点,其他的节点依旧可以完成服务的注册、发现以及服务治理。
     具体的代码见:https://github.com/JThink/spring-cloud-demo/tree/master/eureka-server,测试的代码见:https://github.com/JThink/spring-cloud-demo/tree/master/eureka-client-test
     如果想搭建一个需要认证的eureka server,那么需要引入spring-boot-starter-security,然后在application.properties中加入相关的用户名密码,security.basic.enabled=true;security.user.name=admin;security.user.password=xxx,使用的时候:http://admin:xxx@host:port/eureka/

     分享一个项目:https://github.com/JThink/SkyEye对java、scala等运行于jvm的程序进行实时日志采集、索引和可视化,对系统进行进程级别的监控,对系统内部的操作进行策略性的报警、对分布式的rpc调用进行trace跟踪以便于进行性能分析。欢迎对分布式跟踪感兴趣的交流~~,交流群:624054633
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值