Eureka - 搭建
单节点配置
Eureka 配置 server端
新建 Maven项目
修改 pom文件
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka</artifactId>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
添加 bootstrap.yml 文件
server:
port: 7900
eureka:
client:
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
register-with-eureka: false
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
fetch-registry: false
#设置服务注册中心的URL,用于client和server端交流
service-url:
defaultZone: http://localhost:7900/eureka/
启动类上添加注解 @EnableEurekaServer
package com.qiankai.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* @author QianKai
* @date 2020/9/13
*/
@EnableEurekaServer
@SpringBootApplication
public class AppEureka {
public static void main(String[] args) {
SpringApplication.run(AppEureka.class, args);
}
}
启动项目
访问配置的地址和端口号
Client端配置
新建maven项目 eureak-client
修改pom文件
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka-client</artifactId>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
新增 bootstrap.yml文件
server:
port: 8000
eureka:
client:
# 设置服务注册中心的url
service-url:
defaultZone: http://localhost:7900/eureka
启动类上加注解 @EnableEurekaClient
package com.qiankai.client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* @author QianKai
* @date 2020/9/13
*/
@EnableEurekaClient
@SpringBootApplication
public class AppEurekaClient {
public static void main(String[] args) {
SpringApplication.run(AppEurekaClient.class, args);
}
}
启动项目
查看刚刚7900端口的 Eureka界面,发现多了一个实例
Eureka集群配置
第一个 Eureka Server 配置
构建步骤同上,只是配置文件需要修改,如下:
# 高可用集群配置
eureka:
client:
#是否将自己注册到Eureka Server,默认为true
register-with-eureka: true
#是否从eureka server获取注册信息
fetch-registry: true
#设置服务注册中心的URL,用于client和server端交流
#此节点应向其他节点发起请求
service-url:
defaultZone: http://localhost:7901/eureka/
instance:
hostname: ek1.com #主机名
management:
endpoint:
shutdown:
enabled: true
server:
port: 7900 # web 端口配置
spring:
application:
name: EUREKA_SERVER_01
启动该节点,访问 Eureka界面,此时没有注册信息:
第二个 Eureka Server 配置
同上,修改配置文件:
# 高可用集群配置
eureka:
client:
#是否将自己注册到Eureka Server,默认为true
register-with-eureka: true
#是否从eureka server获取注册信息
fetch-registry: true
#设置服务注册中心的URL,用于client和server端交流
#此节点应向其他节点发起请求
service-url:
defaultZone: http://localhost:7900/eureka/
instance:
hostname: ek2.com #主机名
management:
endpoint:
shutdown:
enabled: true
server:
port: 7901 # web 端口配置
spring:
application:
name: EUREKA_SERVER_02
启动该节点,发现注册了自己和另一个节点(原因是自己去另一个节点上注册了,然后另一个节点过来注册了,并且把自己的信息同步过来了):
客户端连接配置
配置文件中新增一个server连接的地址,多个地址之间使用逗号分隔,如下:
# 连接多个 Eureka Server
server:
port: 8000
eureka:
client:
# 设置服务注册中心的url
service-url:
defaultZone: http://localhost:7900/eureka, http://localhost:7901/eureka # 多个地址之间用 , 分隔
instance:
instance-id: qiankai-client-01 #显示此名字(默认是当前项目http://localhost:8001)
prefer-ip-address: true #访问路径可以显示ip地址
spring:
application:
name: API-CLIENT # 应用名称
启动客户端后,查看效果:
第一个Eureka上有注册信息:
第二个Eureka上也有注册信息:
在 Eureka Server配置 hostname的效果如下:
应用客户端开启监控
用于上报节点的信息,在Client中(不是Eureka Server)添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置文件中开启端点监控
# 开启端点监控
management:
endpoints:
web:
exposure:
include: health,info
此时,Eureka中的Client就可以点击访问该节点的状态了
默认端点
Spring Boot 2.0 的Actuator只暴露了health和info端点,提供的监控信息无法满足我们的需求
api端点功能
-
health
会显示系统状态 -
shutdown
用来关闭节点
开启远程关闭功能
management.endpoint.shutdown.enabled=true
使用Post方式请求端点
{
"message": "Shutting down, bye..."
}
-
autoconfig
获取应用的自动化配置报告 beans获取应用上下文中创建的所有Bean
-
configprops
获取应用中配置的属性信息报告 -
env
获取应用所有可用的环境属性报告 -
mappings
获取应用所有Spring Web的控制器映射关系报告 -
info
获取应用自定义的信息 -
metrics
返回应用的各类重要度量指标信息
metrics节点并没有返回全量信息,我们可以通过不同的key去加载我们想要的值
metrics/jvm.memory.max