开始创建
编辑器:idea
构建工具:maven
jdk:1.8
GitHub地址
喜欢的童鞋点个赞欢迎加入我的qq群:893382070一起学习成长
step1 编写eureka_server
新建一个module
yml配置
server:
port: 8661
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
serviceUrl:
defaultZone: http://localhost:8661/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔
启动访问出现下图即为成功:
step2 编写eureka Client
Eureka Client包括两个服务模块:Service Provider(服务提供方)和Service Consumer(服务消费方)。
服务提供方
创建过程与server类似
可以使用注解@EnableEurekaClient也可以是@EnableDiscoveryClient
@EnableEurekaClient指是eureka的client
@EnableDiscoveryClient指zookeeper、consul、eureka这些的client
yml配置
server:
port: 8662
eureka:
instance:
prefer-ip-address: true #表示将自己的IP注册到eureka_server默认为false,不配置代表注册微服务所在操作系统的hostname到eureka_server
client:
serviceUrl:
defaultZone: http://localhost:8661/eureka/
spring:
application:
name: service_provider1 #在Eureka Server进行注册时,当前服务的名称
刷新页面可以看到我们已经将其注册到server
服务消费方
搭建高可用eureka_server集群
背景:在上面我们成功的搭建了单节点的eureka_server,我们知道eureka_client会定时链接eurekaServer获取注册的服务信息并缓存到本地。消费者通过远程api调用时使用本地缓存中的数据,如果server宕机并且某些服务出现不可用,缓存没有更新就会影响服务的调用。所以我们需要搭建eureka_server集群
eureka_server默认支持节点之间相互注册
在yml中如下图:
默认是开启的
开始搭建
yml文件配置
spring:
application:
name: eureka_server_cluster
---
spring:
profiles:
active: peer1 #置顶profile为peer1
server:
port: 8663
eureka:
instance:
hostname: peer1 #profile为peer1时主机名设置为peer1
client:
#registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
#fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
serviceUrl:
#将自己注册到peer2的eureka上
defaultZone: http://peer2:8664/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔
---
spring:
profiles:
active: peer2 #置顶profile为peer1
server:
port: 8664
eureka:
instance:
hostname: peer2 #profile为peer2时主机名设置为peer2
client:
#registerWithEureka: false #表示是否将自己注册到eureka_server默认为true。因为我们这个是server所以设置为false
#fetchRegistry: false #表示是否从eureka_server中获取注册信息。默认为true,我们这个是单点的eureka_server不需要同步其他server节点,所以设为false
serviceUrl:
#将自己注册到peer1的eureka上
defaultZone: http://peer1:8663/eureka/ #设置与eureka_server交互的地址,查询服务和注册服务都依赖这个地址,多个地址可由逗号分隔
如下图打包:
配置系统的hosts:
windos系统:
C:\Windows\System32\drivers\etc\hosts
linux、mac:
/etc/hosts
如图增加peer1和peer2
使用命令:
java -jar eureka_server_cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka_server_cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
分别访问:http://peer1:8663/和http://peer1:8664/
出现下图即为成功
现在将之前的provider的yml改为
server:
port: 8662
eureka:
instance:
prefer-ip-address: true #表示将自己的IP注册到eureka_server默认为false,不配置代表注册微服务所在操作系统的hostname到eureka_server
client:
serviceUrl:
#defaultZone: http://localhost:8661/eureka/
defaultZone: http://localhost:8663/eureka/
spring:
application:
name: service_provider1 #在Eureka Server进行注册时,当前服务的名称
启动程序打开peer1和peer2发现都存在下图:
这样我们就完成了向服务注册到eurekaServer集群上了
同样我们也可以设置defaultZone: http://localhost:8663/eureka/,http://localhost:8664/eureka/指定两个节点虽然不设置数据会自动同步但可以防止意外情况。
为eurekaServer添加用户凭证
eurekaServer默认是允许匿名访问的我们为了安全还是要添加凭证
首先导入maven dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>