Eureka Server 的高可用
时间:2022-06-17
本文章向大家介绍Eureka Server 的高可用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.Eureka Server 的高可用
有分布式应用开发经验的读者应该能够看出,前 文 编写的单节点 Eureka Server 并不适合线上 生产环境。Eureka Client 会定时连接 Eureka Server, 获取服务注册表中的信息并缓存在本地。
微服务在消费远程 API 时总是使用本地 缓存中的数据。因此一般来说,即使Eureka Server 发生宕机,也不会影响到服务之间的调用。
但如果 Eureka Server 宕机时, 某些微服务也出现了不可用的情况, Eureka Client 中的缓存若不被更新, 就可能会影响到微服务的调用, 甚至影响到整个应用系统的高可用性。
因此, 在生产环境中, 通常会部署一个高可用的Eureka Server 集群。
Eureka Server 可以通过运行 多个实例并相互注册的方式实现高可用部署, Eureka Server 实例会彼此增量地同步信息, 从而确保所有节点数据一致。
事实上, 节点之间相互注册是 EurekaServer 的默认行为,还记得前文编写单节点 Eureka Server 时,
额外配置了eureka.client.registerWithEureka=false 、eureka.client.fetchRegistry=false 吗?
本节在前文的基础上, 构建一个双节点Eureka Server 集群。
1. 复制项目discovery-eureka
2. 配置系统的hosts, Windows系统的hosts 文件路径是C:WindowsSystem32driversetchosts;
Linux 及 Mac OS 等系统的文件路径是 /etc/hosts。
127.0.0.1 peer1
127.0.0.1 peer2
3. 将 application.yml修改如下:让两个节点的 Eureka Server 相互注册。
#server:
# port: 8761 # 指定该Eureka实例的端口
# enableSelfPreservation: false
#eureka:
# client:
# registerWithEureka: false
# fetchRegistry: false
# serviceUrl:
# defaultZone: http://localhost:8761/eureka/
spring:
application:
name: discovery-eureka
eureka:
client:
registerWithEureka: true
fetchRegistry: true
---
spring:
profiles: peer1 # 指定profile=peer1
server:
port: 8761
eureka:
instance:
hostname: peer1 # 指定当profile=peer1时,主机名是peer1
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/ # 将自己注册到peer2这个Eureka上面去
registerWithEureka: true
fetchRegistry: true
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://peer1:8761/eureka/
测试
1. 打包项目,并使用 以下命令启动两个Eureka Server 节点。
java -jar discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.actiVe=peer1
java -jar discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
通过spring.profiles.active 指定使用哪个profile 启动。
2. 访问http://peer1:8761 , 会发现 "registered-replicas" 中巳有peer2 节点;
3. 同理, 访问http://peer2:8762 , 也能发现其中的 "registered-replicas" 有 peerl 节点, 如图4-6 所示。
2.为Eureka Server 添加用户认证
在前面的示例中, Eureka Server 是允许匿名访问的, 本节来构建一个需要登录才能访问的 Eureka Server。
- 复制项目 discovery-eureka
- 在 pom.xml 中添加s pring-boot-starter-security的依赖,该依赖为 Eureka Server 提供用户认证的能力。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 在 application.yml 中添加以下内容:
security:
basic:
enabled:true #开启基 于HTTP basic的 认证
user:
name: user #配置登录的账号是user
password: password123 #配置登录的密码是 paswsord123
这样就为 Eureka Server 添加了基于HTTP basic 的认证。如果不设置这段内容 ,账号默认是 user , 密码是一个随机值, 该值会在启动时打印出来。
- 测试
- 启动 dscovery-eureka
- 访问http://localhost:8761/需要身份验证的对话框
- 输入账号 user、密码 passwordl 23, 就可登录并访问 Eureka Server。
- 将微服务注册到需认证的Eureka Server
- 使用Apache Server 的ab进行web请求压力测试
- Spring-AOP实践 - 统计访问时间
- mysql创建定时执行存储过程任务
- MongoDB-基础-limit-skip-sort
- MongoDB-基础-条件操作符
- mongodb-基础-update-remove
- Mybatis-mapper-xml-基础
- 2016.06 第一周 群问题分享
- MongoDB - basic
- spring boot启用tomcat ssl
- HTTP status code
- jackson简单使用,对象转json,json转对象,json转list
- 2016.07 第3周 群问题分享
- jackson error 含义log
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法