zoukankan      html  css  js  c++  java
  • Centos安装Consul微服务

    一、简介

          Consul([ˈkɒnsl],康搜)是注册中心,服务提供者、服务消费者等都要注册到Consul中,这样就可以实现服务提供者、服务消费者的隔离。除了Consul之外,还有Eureka、Zookeeper等类似软件。consul是存储服务名称与IP和端口对应关系的服务器

          consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。

         @client

    CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。

        @server

    SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。

       @server-leader

    中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。

      @raft

    server节点之间的数据一致性保证,一致性协议使用的是raft,而zookeeper用的paxos,etcd采用的也是taft。

      @服务发现协议

    consul采用http和dns协议,etcd只支持http

      @服务注册

    consul支持两种方式实现服务注册,一种是通过consul的服务注册http API,由服务自己调用API实现注册,另一种方式是通过json个是的配置文件实现注册,将需要注册的服务以json格式的配置文件给出。consul官方建议使用第二种方式。

      @服务发现

    consul支持两种方式实现服务发现,一种是通过http API来查询有哪些服务,另外一种是通过consul agent 自带的DNS(8600端口),域名是以NAME.service.consul的形式给出,NAME即在定义的服务配置文件中,服务的名称。DNS方式可以通过check的方式检查服务。

      @服务间的通信协议

    Consul使用gossip协议管理成员关系、广播消息到整个集群,他有两个gossip  pool(LAN pool和WAN pool),LAN pool是同一个数据中心内部通信的,WAN pool是多个数据中心通信的,LAN pool有多个,WAN pool只有一个。

     二、安装

        consul官网:https://www.consul.io/

       1)下载

    wget https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip

      2)解压

    unzip  consul_1.3.0_linux_amd64.zip

     3)拷贝到usr目录下

    mv consul   /usr

    4)查看是否安装成功

    ./consul

    5)启动

    ./consul agent -dev -ui -node=consul-dev -client=192.168.*.** #虚拟机ip

    6) 后在浏览器中输 http://192.168*.**:8500 就可以访问了

     二、创建集群

      1)准备四台服务器

    192.168.45.98  server
    192.168.45.99  server
    192.168.45.147 server
    192.168.45.203 client

     2)配置节点

    Agent 节点
    ./consul agent  -dev -ui  -data-dir=data -node=n4 -bind=192.168.45.203 -client=0.0.0.0  #如果在后面加 "&"符号则是后天运行
    Server节点

    ./consul agent -server -bootstrap-expect 3 -data-dir=data -node=n1 -bind=192.168.45.99 -client=0.0.0.0  #如果在后面加 "&"符号则是后天运行


    ./consul agent -server -bootstrap-expect 3 -data-dir=data -node=n2 -bind=192.168.45.203 -client=0.0.0.0 #如果在后面加 "&"符号则是后天运行


    ./consul agent -server -bootstrap-expect 3 -data-dir=data -node=n3 -bind=192.168.45.147 -client=0.0.0.0 #如果在后面加 "&"符号则是后天运行

    -server 表示是server模式
      -bootstrap-expect=3 表示是集群中有3台服务器 bootstrap该模式node可以指定自己作为leader ,如果是非leader可不加该参数
      -data-dir=/tmp/consul 目录
      -node=n2 该服务器节点名
      -bind=192.168.45.99 节点绑定的ip
      -ui 非必须 webui的路径 用web来管理consul

    3)加入集群,集群已 192.168.45.147位leader。如果加入失败,则开启端口

    ./consul join 192.168.45.98
    ./consul join 192.168.45.99
    ./consul join 192.168.45.203

    4)查看集群

    ./consul members

    5)查看三台服务器打印的数据,说明配置成功

    consul: New leader elected: n4

    6)在浏览器中查看

     7)查看集群信息

    ./consul operator raft list-peers

    8)清理集群信息,直接杀死线程

  • 相关阅读:
    gearman任务分发改进
    gearman实现任务分发
    BeanStalkd 做队列服务
    Tomcat各种日志的关系与catalina.out文件的分割
    数据库系统原理-关系数据库的规范化理论总结
    MySQL配置参数innodb_flush_log_at_trx_commit
    gRPC快速入门
    使用vagrant和kubeadm搭建k8s集群
    VS项目属性中的C/C++运行库:MT、MTd、MD、MDd
    消除C++中警告代码
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/9797174.html
Copyright © 2011-2022 走看看