• springcloud-Eureka搭建


    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() + "	" + event.getAppName() + " 服务下线 ");
        }
  • 相关阅读:
    集合改变时会自动通知的集合类
    WPF中的MatrixTransform
    WPF中,如何将Vista Aero效果扩展到整个窗口
    WPF中的命令与命令绑定(二)
    参加BEA Dev2Dev TechDays 归来
    在WPF中自定义你的绘制(五)
    Microsoft Surface
    WPF与缓动(二) 正弦与余弦缓动
    WPF与缓动(一) N次缓动
    终于找到了一个WPF中的日历控件
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/13152832.html
Copyright © 2020-2023  润新知