美文网首页
spring cloud实战(1) -- 服务注册中心Consu

spring cloud实战(1) -- 服务注册中心Consu

作者: Cal_15ed | 来源:发表于2019-01-20 11:20 被阅读0次

    为了加深学习spring cloud过程中的理解,我决定将一些重点写成文档记录下来,这也是这系列文章诞生的意义.可能有地方存在个人理解的偏差,或是一些错误,请尽量谅解,同时欢迎大家提出各种意见.本系列全部基于Spring Cloud Greenwich.RC2版本(Spring Boot 2.1.2 release).

    Spring Cloud 1.x时期netflix的Eureka比较流行,但是2.0beta的Eureka已经宣布停止维护,所以如果是Spring Cloud 2.x版本不推荐使用Eureka.其他可选的还有Consul,Zookeeper,Etcd等等.Consul和Zookeeper相比拥有多数据中心,健康检查,UI管理,多语言支持等功能,所以下面选择Consul作为服务注册中心.

    Consul的安装及配置

    这里介绍Linux下的Consul安装步骤.因为Consul实际上是单个可执行文件,只需下载解压后将可执行文件加入环境变量Path即可.

    wget https://releases.hashicorp.com/consul/1.4.0/consul_1.4.0_linux_amd64.zip
    unzip consul_1.4.0_linux_amd64.zip
    mv consul /bin
    

    操作完成后输入consul看到帮助信息即为成功.输入以下命令可以启动consul服务端.

    consul agent -server -bootstrap-expect=1 -node consul -data-dir=/tmp/data/consul -ui 
    

    -advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
    -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。
    -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用
    -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
    -client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1.
    -config-file:明确的指定要加载哪个配置文件
    -config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
    -data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
    -dc:该标记控制agent允许的datacenter的名称,默认是dc1
    -encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
    -join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。
    -retry-join:和join类似,但是允许你在第一次失败后进行尝试。
    -retry-interval:两次join之间的时间间隔,默认是30s
    -retry-max:尝试重复join的次数,默认是0,也就是无限次尝试
    -log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。
    -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
    -protocol:consul使用的协议版本
    -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
    -server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个
    -ui: 提供ui管理功能.默认端口为8500.

    启动成功后,浏览器输入localhost:8500,可以看到如下界面:


    consul管理界面

    现在,consul已经成功启动了!

    Spring Cloud Consul服务注册

    Spring Cloud提供了Consul服务注册的依赖,只需要在pom.xml中加入以下依赖.

     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
     </dependency>
    

    同时在你的Spring Cloud的启动类加上@EnableDiscoveryClient注解.这个注解是Spring Cloud的服务注册抽象,启用此注解后即可开启服务发现,方便以后更换其他的注册中心.

    @EnableDiscoveryClient
    @SpringBootApplication
    public class AuthAccountApplication {
    
      public static void main(String[] args) {
         SpringApplication.run(AuthAccountApplication.class, args);
       }
    }
    

    接着还需要在bootstrap.yml(或者application.yml,建议前者)里面配置服务名称和注册中心地址.

    spring:
      application:
        name: auth-account
      cloud:
        consul:
          host: localhost
          port: 8500
          discovery:
            healthCheckPath: /actuator/health
            healthCheckInterval: 15s
    

    启动服务后,可以在Consul管理界面看到如下界面.


    成功注册服务

    这样就是成功注册服务了!

    相关文章

      网友评论

          本文标题:spring cloud实战(1) -- 服务注册中心Consu

          本文链接:https://www.haomeiwen.com/subject/ybnzdqtx.html