springCloud Eureka在idea中可以借助 spring Assitant  或者  spring initlizar

》选择默认的 https://start.spring.io 

》new opject  ->  spring Assitant  /  spring initlizar  ->next

》选择  maven project  输入groupid,projectname,artifactId

》Cloud Discovery -> Eureka Server

其实也就是在pom.xml中引入了一个jar包

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

应用启动类添加eureka服务:

 @EnableEurekaServer

启动报错:Cannot execute request on any known server

eureka.client.register-with-eureka=true
eureka.client.fetchRegistry=true
启动时,会去发现并注册进别的节点中,但是对应的节点没有启用,因此单机时可将其设置为false。同时只是提示,并不是错误,不妨碍运行。
同时这些是Eureka Server并非提供者和消费者,也无需将自己注入到注册表中。

在application.properties 标记:

server.port=8761
spring.application.name=eureka
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#注册中心地址
eureka.client.register-with-eureka=false
eureka.client.fetchRegistry=false
server.enable-self-preservation=true

启动应用:

通过  http://localhost:8761/   即可查看当前的eureka页面。

警告:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

自我保护已开启,未发现其它节点。

如果配置有context-path

server.context-path= /eurekaServer

则后面    eureka.client.service-url.defaultZone=http://localhost:8761/eurekaServer/eureka/

健康监测:

eureka.client.healthcheck.enabled=true   

设置健康监测,这样就可以通过

 /actuator/health    查看健康状态。

 

 

其中   DS Replicas会列有当前的集群信息。

集群搭建。创建多个 application-e1.properties / application-e2.properties  /application-e3.properties

server.port=8761
spring.application.name=eureka
eureka.instance.hostname=e1
eureka.client.service-url.defaultZone=http://10.130.12.51:8762/eureka/,http://10.130.12.51:8763/eureka/
#注册中心地址
eureka.client.register-with-eureka=true
eureka.client.fetchRegistry=true
server.enable-self-preservation=true
server.port=8762
spring.application.name=eureka
eureka.instance.hostname=e2
eureka.client.service-url.defaultZone=http://10.130.12.51:8761/eureka/,http://10.130.12.51:8763/eureka/
#注册中心地址
eureka.client.register-with-eureka=true
eureka.client.fetchRegistry=true
server.enable-self-preservation=true
server.port=8763
spring.application.name=eureka
eureka.instance.hostname=e3
eureka.client.service-url.defaultZone=http://10.130.12.51:8761/eureka/,http://10.130.12.51:8762/eureka/
#注册中心地址
eureka.client.register-with-eureka=true
eureka.client.fetchRegistry=true
server.enable-self-preservation=true

将e1,e2, e3 配置在 /etc/hosts 中,此处是因为 将3个挂在一个 hostname 上而区分server名。

然后在应用启动中执行:

nohup java -jar station-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=e1  &

nohup java -jar station-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=e2  &

nohup java -jar station-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=e3  &

配置后,在页面   http://10.130.12.51:8761/  ,http://10.130.12.51:8761/  , http://10.130.12.51:8761/    都可以访问到彼此信息。

http://10.130.12.51:8761/eureka/apps  这可看到应用信息

 -----------------------------------------------------------------------------------------

对于搭建的eureka页面如果不希望一般人直接访问,可以添加账号密码验证。

pom.xml引入security

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

 

 在配置文件  application.properties中添加:

spring.security.user.name=admin
spring.security.user.password=admin123

 

增加security类处理:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 关闭csrf
        http.csrf().disable();
        http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
    }
}

 http://127.0.0.1:8761/login

对eureka的注册地址也需要自动添加信任的账号和密码:

eureka.client.serviceUrl.defaultZone=http://admin:admin123@localhost:8761/eureka/

eureka还提供监控接口,来处理状态变更后的处理事件:

  • EurekaInstanceCanceledEvent 服务下线事件。
  • EurekaInstanceRegisteredEvent 服务注册事件。
  • EurekaInstanceRenewedEvent 服务续约事件。
  • EurekaRegistryAvailableEvent Eureka 注册中心启动事件。
  • EurekaServerStartedEvent Eureka Server 启动事件。
@Component
public class EurekaStateChangeListener {
    @EventListener
    public void listen(EurekaInstanceCanceledEvent event) {
        System.err.println(event.getServerId() + "\t" + event.getAppName() + " 服务下线 ");
    }

 

posted on 2020-06-19 10:59  zhaoqiang1980  阅读(181)  评论(0编辑  收藏  举报