我们搭建了一个Eureka服务注册中心,就是Eureka Server,他提供了服务的注册和发现,那么其实对于Eureka服务注册中心来讲,我们整个微服务开发当中,它是一个非常重要的环节,我们所有的服务都是依赖于这个服务注册中心,来注册的,所以一旦他出现问题了,势必会影响其他服务的运行,所以我们实际在使用Eureka服务注册中心的时候,我们会想到将来会有单点故障的问题,那么怎么解决这种单点故障呢,我们肯定要搭建高可用的,那么所谓的高可用是什么含义呢,其实就是搭建Eureka集群,那么我们再来讲解一下,如何去搭建Eureka集群,首先我们先来创建一个项目,创建一个Eureka注册中心,我们把上一节的项目,拷贝,然后我们给他起个名字,加一个haspringcloud-eureka-server-ha我们再去修改一下他的pom文件,把这里的artifactId和Name改一下,这样一个项目就创建好了,我们先说一下Eureka的高可用注册中心,它是一个什么样的运行原理,现在我要把这个注册中心,部署到多态物理节点上,让他们形成一个集群,那么集群当中的多个节点,是要相互通信的,那么我们如何去搭建或者编写集群版的Eureka呢,也非常简单,每一个实例,他都需要加载自己的配置文件,根据配置文件里配置的一些信息,来与其他节点进行通信,那么这里就用到哪个技术呢,我们之前讲SpringBoot实战的时候,讲过springboot的一个配置文件的多环境的配置,我们这里就需要用到这样的一个技术了,虽然在同一个项目当中,但是我们会给他建立不同的配置文件,然后未来每个实例在自己的环境当中,去加载自己的配置文件,这样每个实例在解析自己的配置文件的时候,可以拿到其他节点的配置信息,这样我们每一个节点就串联起来了,其实SpringCloud,他也意识到这个问题了,也就是说什么呢,Eureka注册中心未来必须得保证它是高可用的,所以他在集群的搭建过程当中,在代码这一层次,为我们做了一个很好地封装,也就是我们现在要搭建一个Eureka的注册中心的集群,非常的容易,我们只要在配置文件里,去为每个节点做相应的配置就可以了,那么接下来我们就来完成代码的编写,首先我们本次案例,做两个节点的一个集群,当然做三个,做四个,做五个,跟两个没有太大的区别,只是配置文件会多一些,配置项会多一些,仅此而已,我们项目构建好了,然后接下来我们来编写他的配置文件,首先配置文件,我们只有一个了,刚刚我提到过,每个配置文件,对应这一个实例,表示每个物理节点下的启动时都要加载属于自己的配置文件,所以我们要给他创建多个配置文件,我们给配置文件加个后缀,融入多环境配置就可以了,比如这个叫eureka1application-eureka1.properties然后这个叫eureka2application-eureka2.properties当然如果你要做多节点,拷贝多份就可以了,打开配置文件,我们来看一下,这是在我们原来项目当中拷贝过来的,配置当前服务的名称,这两个是单击注册中心的时候eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false避免自己在自己服务里注册,这个我们可以去掉,我们需要加上,但是呢,在eureka集群当中,这个是可加可不加的,如果你要不加,什么意思呢,你要把他去掉,将来在服务注册列表,显示服务注册的列表当中,我们就看不到了,这个表示不让自己注册了,如果你要把他去掉呢,那未来在集群当中,集群当中一旦启动了,在管理界面是可以看到已注册的服务,服务本身也注册了,那为什么在集群下不加他也可以启动呢,由于它有多个节点,我不能在自己注册,但是我可以在其他节点注册,是不是,但是单机版为什么要加他,因为单机版只有他自己,不能在你自己这里注册,这是集群和单击的区别,那么假设就把它去掉,允许他注册,只不过然他在其他节点上注册不就可以了,把它去掉,我们再来看,首先在eureka1这个节点里,对于名字我们就不用改,我们都叫eureka-server没有问题spring.application.name=eureka-server然后端口我们都让他监听8761,那有人会说,不会的,我们在部署的时候,模拟真实的生产环境,也就是说,我会给大家装两台虚拟机,这样两台虚拟机的IP已经是不同的了,所以并不需要监听不同的端口了,当然你也可以在一个设备上,一个物理节点上,运行,但是在一个物理节点上,你的端口是有强占性的,因为IP是相同的,所以你需要把端口改变一下,那么我们之所以要部署在两条虚拟机上呢,原因是尽量的模拟生产环境来演示,明白我的意思吧,那么接下来我们在配置文件里要加什么呢,在笔记里已经写了,我们把这两个拿过来eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://eureka2:8761/eureka/只要在配置文件里加这两个就可以了,我们来说一下这是什么意思,eureka.instance.hostname=eureka1这个是给你的主机名设置一个名称,那么这个主机名的作用是什么呢,就是你这个实例的主机名,未来我们说到,集群节点和节点之间是要通信的,那么通信要知道怎么去访问你这个节点,默认的都是用域名来访问的,所以我们给他起一个hostname,然后这一块,我后面加了一句话,与配置文件的变量名为主,这个是什么意思呢,一般我们这个主机名呢,我们会以配置文件的后面的名称作为主机名,这样的好处就是我们未来要看配置文件,我一看域名就知道,他指向的是哪个配置文件,现在是哪个实例,去访问哪个实例,所以我们一般会以他为主,那么现在在我的eureka1当中,hostname应该叫eureka1,相当于给我们起了一个域名,然后再往下看,这个设置,这个是设置服务注册中心地址指向另一个注册中心,也就是你这两个节点要通信,我要知道另一个注册中心的地址,那么这个就是设置他的注册地址,那么在这个访问地址当中,需要注意的是这一块,首先是你要访问的另一个节点,端口是多少,我们未来这个放到另外一个地址下,肯定会加载这个配置文件,那么他监听的也是8761,这是另外一个节点的域名,我们可以先把他拿过来eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/然后这个就叫eureka2,他的hostname就叫eureka2就可以了,我未来跟你通信,访问他的时候是不是要交eureka2:8761,这样才能加载未来这个配置文件的实例,回过来在eureka2的配置文件里,他的主机名是eureka2,那么未来他要和加载了eureka1的通信,他的地址里是不是应该是eureka1,这样两个实例在加载两个配置文件以后,两个节点通过配置的这个信息,是不是就可以知道地址响应通信了,所以这块我们应该能理解吧,这样我们eureka服务注册中心就搭建好了,我们先把笔记整理一下,在搭建Eureka集群时,需要添加多个配置文件,并且使用SpringBoot的多环境配置,集群中需要多少节点,就添加多少个配置文件,这是一个需要注意的地方,在配置文件当中,配置集群节点,eureka1,这是我们第一个,然后还有一个是eureka2,然后我们把配置文件copy过来,这是eureka1的,然后这是eureka2的,我们项目最好要把日志加进来,因为我们在启动的时候,对于启动的时候是否有问题,我们只要把logback的配置文件,放到resources目录下就可以了,我们去找一下logback配置文件,在我这里正好有一个,拿过来,放到我们的resources目录下,其它的什么都不用动,这样我们一个集群版的eureka就搭建完毕了,添加logback日志文件
<?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.learn.cloud</groupId><artifactId>springcloud-eureka-server-ha</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties>    <dependencyManagement><dependencies><dependency>    <groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency></dependencies><!-- 这个插件,可以将应用打包成一个可执行的jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
spring.application.name=eureka-server
server.port=8761
eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://eureka2:8761/eureka/
spring.application.name=eureka-server
server.port=8761
eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/
<?xml version="1.0" encoding="UTF-8" ?><configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  <property name="LOG_HOME" value="${catalina.base}/logs/" />  <!-- 控制台输出 -->   <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志输出编码 -->  <layout class="ch.qos.logback.classic.PatternLayout">   <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout>   </appender>   <!-- 按照每天生成日志文件 -->   <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   <MaxHistory>30</MaxHistory></rollingPolicy>   <layout class="ch.qos.logback.classic.PatternLayout">  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout> <!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender>     <!-- 日志输出级别 --><root level="DEBUG">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />   </root> <!--日志异步到数据库 -->
<!--     <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">日志异步到数据库 <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">连接池 <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"><driverClass>com.mysql.jdbc.Driver</driverClass><url>jdbc:mysql://127.0.0.1:3306/databaseName</url><user>root</user><password>root</password></dataSource></connectionSource></appender> --></configuration>
package com.learn;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class EurekaHAApplication {public static void main(String[] args) {SpringApplication.run(EurekaHAApplication.class, args);}
}

创建集群版的Eureka注册中心相关推荐

  1. SpringCloud的入门学习之Netflix-eureka(Eureka的集群版搭建)

    1.Eureka单机版的话,可能会出现单点故障,所以要保障Eureka的高可用,那么可以进行搭建Eureka的集群版. 高可用的Eureka的注册中心,将注册中心服务部署到多台物理节点上,形成一个集群 ...

  2. eureka注册中心HA集群搭建

    今天我们讲一下高可用的eureka注册中心(eureka server cluster) SpringCloud支持Eureka.Zookeeper.Consul作为注册中心,这里我们选择Eureka ...

  3. spring cloud搭建_Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  4. 如何将单机版的Eureka服务改为集群版Eureka服务

    Eureka 集群原理 基本原理 上图是来自eureka的官方架构图,这是基于集群配置的eureka: 处于不同节点的eureka通过Replicate进行数据同步 Application Servi ...

  5. (转)微服务_创建一个简单的Eureka注册中心

    原文地址:https://www.cnblogs.com/lplshermie/p/9105329.html 微服务和分布式已经成了一种极其普遍的技术,为了跟上时代的步伐,最近开始着手学习Spring ...

  6. (一)SpringCloud之Eureka注册中心

    Eureka注册中心 1.什么是注册中心 打个比方,注册中心就好比手机中的通讯录,所有的联系人的联系方式就在这个通讯录中储存.当需要打电话的时候,只需要查询通讯录就可以获取某个联系人的联系方式. 注册 ...

  7. Eureka 注册中心/服务发现框架

    Eureka 注册中心/服务发现框架 Eureka注册中心/服务发现框架 如何使用构建 Eureka Server ? 加入依赖(此处以Maven为例) 创建Eureka Server 主运行类 单机 ...

  8. 搭建eureka注册中心

    有没有问题? 简单回顾一下,刚才我们写了什么: service-provider:一个提供根据id查询用户的微服务. service-consumer:一个服务调用者,通过RestTemplate远程 ...

  9. 走进Spring Cloud之二 eureka注册中心(Greenwich版本)

    走进Spring Cloud之二 eureka注册中心(Greenwich版本) eureka 构建SpringCloud 工程 eureka 注册中心 eureka-server moudle po ...

最新文章

  1. excel 中的文本是ansi还是unicode_详细讲解Excel中常用的文本函数
  2. Android Camera 系统架构源码分析
  3. 使用DOM Breakpoints找到修改属性的Javascript代码
  4. rocketmq 消息指定_进大厂必备的RocketMQ你会吗?
  5. Stack Overflow 上人气最旺的 10 个 Java 问题
  6. 【华为云技术分享】云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫
  7. 算法题解题方法技巧及典例汇总
  8. linux下内存的统计和内存泄露问题的定位-转
  9. 有关java中的集合List,set,Map 等
  10. java毕业设计房屋租赁管理系统Mybatis+系统+数据库+调试部署
  11. 如何高效完成英文文献翻译
  12. 基于Web的动态新闻发布系统设计与实现(含word文档)
  13. 软件测试工程师应该如何提高自己的技能?送给迷茫的你(共勉)
  14. protobuf 中 repeated fields 细节
  15. 百钱买百鸡问题,买鸡问题的解决方案
  16. python做动态表情包下载_用 Python 开发一个【GIF表情包制作神器】
  17. win10系统设置webp文件默认用照片查看器打开的两种方法
  18. 微信小程序开发之音乐播放器
  19. 多媒体计算机技术2017年四月,2017年4月模拟题-多媒体技术
  20. OV、DV、EV证书的区别

热门文章

  1. aliyun 阿里云Maven仓库地址 不管是自建私服还是maven构建 必备 结束了几kb的历史
  2. 【Spring学习】Spring简介
  3. python读取HDFS文件
  4. 飞利浦弃意已决 冠捷顺势接手
  5. 招聘│微软云计算英雄帖来了,快接招!
  6. 一个函数处理同个元素多个事件行为------event.type
  7. 【转】可编程管线基本流程
  8. Ubuntu 10.04 lucid 安装 MariaDB 5.5
  9. 苹果封杀360应用 腾讯金山同时中枪
  10. ZAM 3D入门教程(3):Viewport