SpringCloud组件:Eureka高可用集群部署

高可用集群部署 Eureka 服务注册中心。
构建项目
使用 idea 开发工具创建一个 SpringBoot 项目,添加 Eureka Server 依赖即可, pom.xml 配置文件如下所示:

......
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.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>
    <spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>

<dependencies>
    <!--Eureka Server-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
......

我们本章主要是完成 Eureka Server 的集群配置,所以只需要添加 spring-cloud-starter-netflix-eureka-server 依赖即可。
启用Eureka Server
在入口类 XxxApplication 上添加 @EnableEurekaServer 注解来启用 Eureka Server 服务以及实例化一些依赖,修改如下所示:

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaHighApplication {
    //....
}

Eureka服务配置
依赖已经添加完成,接下来我们就需要在 application.yml 内编写相关配置信息,因为测试环境都在我们本机,有两种方式可以模拟测试同时运行:
spring.profiles.active

为了方便演示,我们使用的第二种方式,主要是感觉再去创建一个项目没有必要,那我们的 profiles 环境该怎么配置呢?请继续往下看。
Profile多环境配置
我们在 src/main/resources 目录下创建名为 application-node1.yml 的配置文件,在该配置文件内添加如下配置:

Eureka 客户端配置

eureka:
client:
service-url:
defaultZone: http://node2:10002/eureka/
instance:

配置通过主机名方式注册

hostname: node1
# 配置实例编号
instance-id: ${eureka.instance.hostname}:${server.port}:@[email protected]

集群节点之间读取超时时间。单位:毫秒

server:
peer-node-read-timeout-ms: 1000

服务端口号

server:
port: 10001
继续在 src/main/resources 下创建一个名为 application-node2.yml 的配置文件,内容如下所示:

Eureka 客户端配置

eureka:
client:
service-url:
defaultZone: http://node1:10001/eureka/
instance:

配置通过主机名方式注册

hostname: node2
# 配置实例编号
instance-id: ${eureka.instance.hostname}:${server.port}:@[email protected]

集群节点之间读取超时时间。单位:毫秒

server:
peer-node-read-timeout-ms: 1000
server:
port: 10002
下面我们先来说下 node1 、 node2 主机名的配置方式,然后再说下为什么实现了集群的效果?
主机名设置
Mac 或者 Linux 配置方式
如果你使用的是 osx 系统。可以找到 /etc/hosts 文件并添加如下内容:
127.0.0.1 node1
127.0.0.1 node2
一般情况下配置完成后就会生效,如果你的配置并没有生效,你可以尝试重启。
Windows 配置方式
如果你使用的是 windows 系统,你可以修改 C:\Windows\System32\drivers\etc\hosts 文件,添加内容与 Mac 方式一致。
Eureka Sever相互注册
application-node1.yml
eureka.client.service-url.defaultZone 这个配置参数的值,配置的是 http://node2:10002/eureka/ ,那这里的 node2 是什么呢?其实一看应该可以明白,这是们在 hosts 文件内配置的 hostname ,而 端口号 我们配置的则是 10002 ,根据 hostname 以及 port 我们可以看出,环境 node1 注册到了 node2 上。
application-node2.yml
在 node2 环境内配置 eureka.client.service-url.defaultZone 是指向的 http://node1:10001/eureka/ ,同样 node2 注册到了 node1 上。
通过这种相互注册的方式牢靠的把两个 服务注册中心 绑定在了一块。
运行测试
我们先来运行测试下 Eureka Server 的集群是否可行?下一章节我们再来讲解 把服务提供者注册到Eureka集群 ,测试步骤如下:
clean && package 本项目(diea工具自带maven常用操作命令快捷方式,右侧导航栏 Maven Projects -> Lifecycle )
打开终端 cd 项目 target 目录
通过如下命令启动 node1 环境:
java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
再打开一个终端,同样是 cd 项目的 target 目录下,通过如下命令启动 node2 环境:
java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2
访问 http://node1:10001 查看 node1 环境的 Eureka 管理中心
访问 http://node2:10002 查看 node2 环境的 Eureka 管理中心
效果如下图所示:

集群相互注册效果

原文地址:http://blog.51cto.com/14028890/2328775

时间: 2024-10-09 16:25:43

SpringCloud组件:Eureka高可用集群部署的相关文章

线上测试高可用集群部署文档【我的技术我做主】

线上测试高可用集群部署文档 目录: 目录:1 项目需求:2 实现方式:2 拓扑图:3 系统及软件版本:3 安装步骤:4 IP分配:4 LVS和keepalived的安装和配置:4 LVS主配置:4 LVS2备 配置:7 web服务器配置9 Mysql-MHA高可用:13 Mysql主配置:13 manager管理端操作:15 VIP切换:16 测试:26 下面是centos5.6的系统环境,如果是centos6版本,只需改动少许地方即可,步骤一致 . ---- by 金戈铁马行飞燕 项目需求:

Spark 概述及其高可用集群部署

Spark入门 一. 学习目标 目标1:熟悉Spark相关概念 目标2:搭建一个Spark集群 二. Spark概述 2.1什么是Spark(官网:http://spark.apache.org) Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目.目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Str

Eureka高可用集群环境搭建

注册中心集群 在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式. Eureka集群相当简单:相互注册 Eureka高可用实际上将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的互相同步,达到高可用效果. 集群的服务名称要统一,要相同! 启动时候 报错 正常! 启动时候互相注册  不会同时启动成功的 启动类都是一样的 package com.too

Puppet自动化高可用集群部署

前言:随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster响应很慢,压力大,解析缓慢,有什么优化的方案吗?可以使用Puppetmaster配置多端口,结合Nginx web代理,这样puppetmaster承受能力至少可以提升10倍以上. 一.安装配置mongrel服务: 要使用puppet多端口配置,需要指定mongrel类型,默认没有安装,需要安装.在Puppetmaster服务器端执行如下命令(前提是已经安装了对应版本的

pacemaker+corosync+haporxy高可用集群部署

# 安装 Corosync以及pacemaker 部署 yum install -y pacemaker pcs psmisc policycoreutils-python corosync fence-agents-all systemctl start pcsd.service systemctl enable pcsd.service # 修改密码(全执行) echo 'HAcluster123' | passwd --stdin hacluster # 验证集群 pcs cluster

HA高可用集群部署(ricci+luci+fence) 双机热备

主机环境 redhat6.5 6位 实验环境 服务端1 ip172.25.29.1   主机名:server1.example.com   ricci     服务端2 ip172.25.29.2    主机名:server2.example.com    ricci     管理端1 ip172.25.29.3    主机名:server3.example.com    luci     管理端2 ip172.25.29.250     fence_virtd 防火墙状态:关闭 1. 安装ri

Kubernetes1.10HA高可用集群环境搭建

k8s 高可用2个核心 apiserver master 和 etcd etcd:(需高可用)集群的数据中心,用于存放集群的配置以及状态信息,非常重要,如果数据丢失那么集群将无法恢复:因此高可用集群部署首先就是etcd是高可用集群: Apiserver:提供了资源操作的唯一入口,并提供认证.授权.访问控制.API注册和发现等机制.整个集群中其他角色只有通过Apiserver才能访问etcd.CLI工具kubectl也是通过apiserver来对整体集群进行访问控制. Controller-man

linux高可用集群(HA)原理详解

高可用集群 一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用集群是用于单个节点发生故障时,能够自动将资源.服务进行切换,这样可以保证服务一直在线.在这个过程中,对于客户端来说是透明的. 二.高可用集群的衡量标准 高可用集群一般是通过系统的可靠性(reliability)和系统的可维护性(maintainability)来衡量的.通常用平均无故障时间

linux高可用集群(HA)原理详解(转载)

一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用集群是用于单个节点发 生故障时,能够自动将资源.服务进行切换,这样可以保证服务一直在线.在这个过程中,对于客户端来说是透明的. 二.高可用集群的衡量标准 高可用集群一般是通过系统的可靠性(reliability)和系统 的可维护性(maintainability)来衡量的.通常用平均无故障时间(MT