【微服务笔记03】微服务组件之Eureka注册中心高可用集群环境搭建

news2024/11/16 13:29:55

这篇文章,主要介绍微服务组件之Eureka注册中心高可用集群环境搭建。

目录

一、Eureka集群环境

二、搭建Eureka高可用集群环境

2.1、前提准备

(1)修改hosts配置文件

(2)创建父工程项目

2.2、搭建Eureka注册中心

(1)引入eureka-server服务端依赖

(2)创建启动类

(3)node01的配置文件

(4)node02的配置文件

(5)node03的配置文件

(6)运行测试


一、Eureka集群环境

前面两篇文章,主要介绍了Eureka单机环境的搭建以及Eureka相关概念及其配置属性,这里在介绍一下如何搭建Eureka集群环境,实现微服务的高可用。

首先要了解什么是集群和高可用这里个概念。前面搭建的Eureka的是只有一台注册中心的服务,也就是单机模式,这种模式有个缺点,那就是如果这台eureka注册中心宕机之后,那么整个微服务环境将全部不可用了,只能够重新启动Eureka注册中心以及所有的微服务应用。

显然,上面的这种模式不能保证高可用,高可用是指在服务出现部分宕机的情况下,整个微服务应用仍然能够正常的运转。那要如何实现微服务的高可用呢???

既然一台eureka注册中心不够用,那我们就多添加几台eureka注册中心呗,例如:这里添加三台eureka注册中心,并且我让这三台eureka注册中心之间形成【两两注册】的模式,这样,即使其中的一台或者两台eureka注册中心同时宕机了,也不至于使得整个微服务应用不可用。

上面这种多台Eureka注册中心就构成了一个集群(也就是现在不单单是一台服务,而是一群服务了),在这个集群模式下,即使其中的一部分机器同时出现故障,我们仍然可以保证整个微服务是高可用的。

通过采用上面这种模式,就可以实现Eureka高可用,可能会有小伙伴会问,万一那三台Eureka注册中心都全部宕机了呢,那不是整个微服务一样不可用了吗???对于这种情况,那同时宕机的可能性太小了,如果不是人为或者自然灾害因素,很难出现所有Eureka注册中心全部宕机的情况,所以几乎可以忽略这种情况。

二、搭建Eureka高可用集群环境

2.1、前提准备

这里要模拟集群环境,而真实的生产环境里面,每一台Eureka注册中心都应该是部署在不同的机器上面,但是,我们这里是在自己电脑模拟集群环境,所以需要修改windows的hosts配置文件,配置几个IP映射关系模拟不同的环境。

(1)修改hosts配置文件

  • windows电脑打开【C:\Windows\System32\drivers\etc】目录,然后打开【hosts】文件,文件中添加如下内容。
# 定义三个映射关系
127.0.0.1 www.node01.com
127.0.0.1 www.node02.com
127.0.0.1 www.node03.com

如下图所示:

(2)创建父工程项目

  • IDEA创建一个eureka集群环境的父工程项目,引入微服务依赖。
<!-- 引入SpringBoot依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <!-- 使用 dependencyManagement 依赖管理,统一管理组件的版本 -->
    <dependencies>
        <!-- 引入 SpringCloud 微服务依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2、搭建Eureka注册中心

创建三个maven工程,分别是三个eureka-server服务端工程,并且三个工程中引入的依赖都是一样的,唯一不同的是【application.yml】配置文件。

一般在实际生产环境中,所有结点的端口号应该都是相同的,只有IP地址不同,但是我们这里是在同一台机器上,所以只能够通过端口号来区分。

(1)引入eureka-server服务端依赖

<?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>
    <parent>
        <groupId>com.eureka.demo</groupId>
        <artifactId>eureka-cluster-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <name>eureka-server-node01</name>
    <artifactId>eureka-server-node01</artifactId>
    <version>1.0.0</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 引入 Web 工程 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 引入 eureka 服务端依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

(2)创建启动类

package com.eureka.demo;

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

/**
 * @version 1.0.0
 * @Date: 2023/1/3 13:57
 * @Copyright (C) ZhuYouBin
 * @Description:
 */
// 开启 Eureka 服务端功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaNodeApp01 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaNodeApp01.class, args);
    }
}

(3)node01的配置文件

server:
  port: 8761
spring:
  application:
    name: eureka-server-node01

# eureka 配置
eureka:
  client:
    # 从eureka服务端获取可用服务列表
    fetch-registry: true
    # 将自身注册到其他的eureka服务端
    register-with-eureka: true
    service-url: 
      # 其他eureka服务端的服务地址
      defaultZone: http://www.node02.com:8762/eureka/,http://www.node03.com:8763/eureka/

(4)node02的配置文件

server:
  port: 8762
spring:
  application:
    name: eureka-server-node02

# eureka 配置
eureka:
  client:
    # 从eureka服务端获取可用服务列表
    fetch-registry: true
    # 将自身注册到其他的eureka服务端
    register-with-eureka: true
    service-url:
      # 其他eureka服务端的服务地址
      defaultZone: http://www.node01.com:8761/eureka/,http://www.node03.com:8763/eureka/

(5)node03的配置文件

server:
  port: 8763
spring:
  application:
    name: eureka-server-node03

# eureka 配置
eureka:
  client:
    # 从eureka服务端获取可用服务列表
    fetch-registry: true
    # 将自身注册到其他的eureka服务端
    register-with-eureka: true
    service-url:
      # 其他eureka服务端的服务地址
      defaultZone: http://www.node01.com:8761/eureka/,http://www.node02.com:8762/eureka/

(6)运行测试

启动三个eureka服务端工程,然后打开浏览器,分别访问三个eureka服务端地址:

  • 【http://www.node01.com:8761/】。
  • 【http://www.node02.com:8762/】。
  • 【http://www.node03.com:8763/】。

注意:启动eureka工程的时候会报一个错误,那就是找不到serviceUrl服务地址,这个没关系,这是我们三台eureka服务按照顺序启动,所以先启动的服务会将信息注册到其他的服务,此时其他服务还没有启动,所以就报错了,只要我们三台服务都启动之后,没一会就可以重新注册成功。

在每一个eureka管理界面,都可以看到其他的eureka服务注册信息,如下图所示。

到此,Eureka高可用集群环境搭建完成。

综上,这篇文章结束了,主要介绍微服务组件之Eureka注册中心高可用集群环境搭建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)

系列文章目录 燃&#xff0c;拿来即用&#xff01;Echarts动态排名柱状图(自适应电脑和手机端)漏刻有时数据可视化Echarts组件开发(27)&#xff1a;盒须图(箱线图)前后端php交互的实战案例漏刻有时数据可视化Echarts组件开发(26):全国地图三级热力图下钻和对接api自动调用数据…

高压功率放大器在高校实验室的实际应用领域介绍

功率放大器的应用领域是很多电子工程师都关心的问题&#xff0c;那么功率放大器的使用场景又有哪些呢&#xff0c;下面来介绍一下安泰高压功率放大器在各个高校的实际应用情况。 图&#xff1a;激光切割 一、ATA-1000系列宽带功率放大器 应用领域&#xff1a;激光切割 适用高校…

Power BI 可视化修改配色

示例数据&#xff1a; 一、Power BI 按列排序 当把文本字段放在坐标轴&#xff0c;显示的顺序都乱了&#xff0c;完全不是自己想要的&#xff0c;就像下图所示&#xff1a; 默认按照Y轴的数值降序排序&#xff0c;如果选择按照month 以升序排序&#xff0c;就会如下所示&am…

【CDP】CDP集群如何通过Cloudera Manager配置使用SNMP方式转发告警

前言 这篇文章参考了大神的文章&#xff0c;如何在CDH平台上集成SNMP服务&#xff0c;然后实现了CDP集群集成SNMP服务&#xff0c;这里描述下&#xff0c;如何集成步骤&#xff0c;在CDP集群中告警是一个很重要的信息&#xff0c;最直观的衡量一个集群的健康状况&#xff0c;那…

[深度学习] 基于切片辅助超推理库SAHI优化小目标识别

对象检测是迄今为止计算机视觉中最重要的应用领域。然而&#xff0c;小物体的检测和大图像的推理仍然是实际使用中的主要问题&#xff0c;这是因为小目标物体有效特征少&#xff0c;覆盖范围少。小目标物体的定义通常有两种方式。一种是绝对尺度定义&#xff0c;即以物体的像素…

【小程序】自定义组件

文章目录组件的创建与引用自定义组件的样式自定义组件的数据、方法和属性data数据methods 方法properties 属性数据监听器纯数据字段组件的生命周期组件所在页面的生命周期插槽单个插槽多个插槽父子组件之间的通信behaviors组件的创建与引用 创建一个组件的步骤&#xff1a; …

发票额度报销最优排列组合问题

1、问题描述 因为我的公司每个月给员工会有一定的交通费额度&#xff0c;需要拿发票去报销才能获得的。要求的是发票总金额不能大于报销的额度。因此在实际报销的时候&#xff0c;你要一张张发票去排列组合经可能的把报销金额往报销额度那里去凑。比如你有1000元额度&#xff0…

Unity 3D JavaScript 脚本基础||Unity 3D C# 脚本基础

变量 数值变量。var a1000;var b3.1415926;字符串变量。 是由单引号或双引号括起来的 Unicode 字符序列。 布尔值。 只有 true 和 false 。用来描述某个事物为真或为假。 数组 是数据的集合&#xff0c;数组中的每一个元素都有自己独有的下标&#xff0c;下标从0开始计数。 表…

《收获,不止Oracle》读书笔记之第三章逻辑体系世界

1.数据库有序的逻辑体系 2.逻辑体系从老余养殖细细说起 推出的逻辑结构是&#xff1a;表空间&#xff08;tablespace&#xff09;、段&#xff08;segment&#xff09;、区&#xff08;extent&#xff09;、块&#xff08;block&#xff09;。Oracle server正是有条理地通过表空…

基础数学(七)——线性方程组的数值解法

文章目录考试要求基础知识一般求解思路消元法高斯消元法小主元导致的计算失误高斯列主元素消去法&#xff08;期末考试要求之一&#xff09;高斯消元法例题&#xff08;期末必考&#xff09;高斯消元法的优缺点减少fill-in现象&#xff08;了解&#xff09;矩阵分解Doolittle分…

【ROS】——常用命令(五)

文章目录前言1. rosnode1.1 rosnode list 列出活动节点1.2 rosnode ping 测试到节点的连接状态1.3 rosnode info 打印节点信息1.4 rosnode machine 列出指定设备上节点1.5 rosnode kill 杀死某个节点1.6 rosnode cleanup 清除不可连接的节点2. rostopic2.1 rostopic list(-v)2.…

【学习】深度强化学习

李宏毅深度学习一、深度强化学习Deep Reinforcement Learning (RL)什么是RL&#xff1f;&#xff08;三步骤&#xff09;计算loss计算A版本0版本1版本2版本32、梯度方法收集训练数据:探索3、actor criticMCTD版本3.5一、深度强化学习Deep Reinforcement Learning (RL) 什么是R…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的图像语义分割模型

给我推荐20个比较流行的图像语义分割模型 在这里列出20个比较流行的图像语义分割模型&#xff1a;U-Net Mask R-CNN Fully Convolutional Network (FCN) SegNet DeepLab v3 PSPNet ENet ICNet RefineNet DenseASPP DenseNet LinkNet FPN BiSeNet ENAS Deeplab v3 GCN CRF-RNN …

Linux环境变量

文章目录什么是环境变量&#xff1f;什么是本地变量&#xff1f;如何获取环境变量&#xff1f;在shell中在程序中如何添加/删除环境变量&&本地变量&#xff1f;在shell中在程序中为什么环境变量能够被子进程继承&#xff1f;什么是环境变量&#xff1f; 环境变量是进程…

Vue初识系列【1】

文章目录一 前端体系1.1 前端三要素1.2 JavaScript 框架1.3 JavaScript 构建工具1.4 前端所需后端技术1.5 UI框架二 前后端分离史2.1 后端为主的 MVC 时代&#xff08;web1.0&#xff09;2.2 基于 AJAX 带来的 SPA 时代(web2.0)2.3 前端为主的 MV* 时代2.4 NodeJS 带来的全栈时…

OBS 进阶 音频面板优化

因为,面板高度就那么大,如果声音源很多的话,就有点乱。 优化目的:静音的,自动放在底部,这样,音频面板上面的都是没有静音的,也是我们最关注的部分。 目录 一、音频面板优化 1、不想要音频面板的title,将其去掉

【LeetCode每日一题】【2023/1/3】2042. 检查句子中的数字是否递增

文章目录2042. 检查句子中的数字是否递增方法1&#xff1a;直接遍历写法2&#xff1a;按本题特有条件方法2&#xff1a;栈方法3&#xff1a;std::stringstream写法22042. 检查句子中的数字是否递增 LeetCode: 2042. 检查句子中的数字是否递增 简单\color{#00AF9B}{简单}简单 句…

202301-第一周资讯

大家好&#xff0c;欢迎来到本周资讯&#xff0c;在过去的一周内呢&#xff0c;我们在示例DEMO、文档、教学视频上都有了较多的产出并且帮助大家解决了不少问题&#xff0c;赶紧看看上周成果吧&#xff01; 目录 DEMO 动态TopN报表 导出图文报告的脚本示例 Superpage pc端…

【FPGA】基本实验步骤演示 | Verilog编码 | 运行合成 | 设备/引脚分配 | 综合/实施 | 设备配置

写在前面&#xff1a;本章的目的是让你理解与门、或门和非门的行为&#xff0c;并使用 Verilog 语言实现多输入与门、或门和非门。在生成输入信号之后&#xff0c;你需要通过模拟来验证这些门的操作&#xff0c;并使用 FPGA 来验证 Verilog 实现的电路的行为。 0x00 引入&#…

Vue+Echarts监控大屏实例十六:Echarts对接天地图插件开发

一、实例概述 本实例实现echarts使用天地图组件的开发,通过修改echarts中百度地图及高德地图插件实现echarts中使用天地图的使用。本实例实现对于监控界面的相关开发资料,提供实例源码、开发过程视频及实现过程。   1. Echarts参考文档: echarts   2. 高德地图插件:ech…