`

consul的安装与配置

阅读更多

      

什么是consul


Consul是一个用golang开发的分布式高可用服务治理与与服务配置的工具,它有以下功能:

服务发现:Consul客户端可以提供服务,其他客户端可以使用服务名称通过DNS以及http等协议来发现服务,有助于提高服务的可扩展性。

健康检查:Consul的客户端可以通过多种方式来检查某个服务或当前节点是否处于健康状态,比如查看一个服务是否可以返回200 OK,或者是查看client当前部署的机器的内存使用是否在80%以下。

key/value存储:Consul客户端可以使用http api来存储、修改、删除一些k/v键值对。

consul的安装


Consul的安装十分简单,只要到官网下载对应版本的应用,然后解压后即可使用。

部署


consul可以在启动时通过命令行进行配置,不过为了方便起见,我们将配置写入配置文件中并指定配置文件启动。在生产环境下,consul的文档建议配置3-5个consul server以保证数据高可用。consul server是完成consul功能的主要部分,一般应该配置奇数个防止在选举leader时陷入“僵局”。

除了server外,还可以有部分实例以consul agents模式运行,consul agents仅仅将请求转发给consul server,可以将consul server与其他client隔离开。

下面是我的机器,运行着ubuntu16.04:

主机 IP 地址 运行模式
server1 192.168.0.101 bootstrap consul server
server2 192.168.0.102 consul server
server3 192.168.0.103 consul server
agent 192.168.0.104 consul agent

创建配置文件

consul的配置信息可以在文档-配置查看,其中部分选项如下:

-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个
-syslog:开启系统日志功能,只在linux/osx上生效
-pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

注意配置文件中的watches选项,可以提供一个脚本来根据脚本是否返回0判断健康检查是否通过。

{
  "datacenter": "east-aws",
  "data_dir": "/opt/consul",
  "log_level": "INFO",
  "node_name": "foobar",
  "server": true,
  "watches": [
    {
        "type": "checks",
        "handler": "/usr/bin/health-check-handler.sh"
    }
  ],
  "telemetry": {
     "statsite_address": "127.0.0.1:2180"
  }
}

更多配置项及其含义可以在官网文档中查看。

按照惯例,我们将配置文件放在/etc/consul.d/目录下,分别在几个机器上创建该目录。在以bootstrap模式启动的server1上,我们创建/etc/consul.d/bootstrap和/etc/consul.d/server目录,在server2和server3上我们创建/etc/consul.d/server目录,在agent上,我们创建/etc/consul.d/agent目录。

bootstrap目录下的配置文件config.json为:

{
    "bootstrap": true,
    "server": true,
    "datacenter": "sh",
    "data_dir": "/tmp/consul",
    "advertise_addr":"192.168.0.101",
    "encrypt": "h+TjXojPyilna4eO+dCeow==",
    "log_level": "INFO",
    "enable_syslog": true
}

其中encrypt可以用命令consul keygen生成。

server目录下config.json为:

{
    "bootstrap": false,
    "server": true,
    "datacenter": "sh",
    "data_dir": "/tmp/consul",
    "advertise_addr":"192.168.0.101",
    "encrypt": "h+TjXojPyilna4eO+dCeow==",
    "log_level": "INFO",
    "enable_syslog": true,
    "start_join": ["192.168.0.102","192.168.0.103","192.168.0.104"]
}

对于其他server,配置文件相同,只是将对应的advertise_addr和start_join修改一下。

agent目录下的config.json为:

{
    "server": true,
    "datacenter": "sh",
    "data_dir": "/tmp/consul",
    "ui" : true, //开启web ui
    "encrypt": "h+TjXojPyilna4eO+dCeow==",
    "log_level": "INFO",
    "advertise_addr":"192.168.0.104",
    "addresses": {
        "http": "0.0.0.0"
    },
    "enable_syslog": true
}

这样,首先启动server1上的consul:consul agent -config-dir /etc/consul.d/bootstrap,然后依次启动server2,server3上的consul:consul agent -config-dir /etc/consul.d/server。这样,三个consul server就组成了一个cluster。此时server1上的consul运行在bootstrap状态下,可以在不与server2以及server3商议的情况下直接执行决议,此时我们终结server1上运行的consul,并执行consul agent -config-dir /etc/consul.d/server,让server1以普通server的身份重新加入cluster。最后启动agent模式的consul consul agent -config-dir /etc/consul.d/agent

在server4上,我们访问 http://localhost:8500/, 即可看到目前consul集群的情况。


consul web ui

至此,consul集群就搭建完成了。



作者:millions_chan
链接:http://www.jianshu.com/p/1d36a6277c3b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分享到:
评论

相关推荐

    Consul安装升级.md

    ### Consul 安装与升级知识点 #### 一、Consul 安装目录规划 - **Consul 安装目录**: `/usr/local/consul-VERSION` (其中 `VERSION` 表示当前版本号),安装完成后,通过软链接指向 `/usr/local/consul`。 - **二...

    详解consul的安装和配置

    在具体使用 Consul 进行安装配置时,比如在 CentOS 6.5 x64 系统环境下,你可以从官方下载最新版本的 consul,如 consul_0.6.4_linux_amd64.zip。解压缩后,你会得到一个 consul 可执行文件。运行 consul 命令可以...

    Consul可执行配置打包

    Consul是一款由HashiCorp公司开发的开源工具,主要用于实现分布式系统的服务发现与配置共享。在本压缩包中,提供了Consul v1.9.3版本的Windows可执行文件,适用于在Windows环境下快速搭建和运行Consul服务。该包包含...

    mac x86 consul的安装与启动

    2.在bin目录下执行consul命令,输出相关命令表示安装成功。 3.启动consul,执行命令consul agent -dev 4.启动后访问地址: http://localhost:8500/ui/dc1/services 可以看到consul已经启动 key/value中可以配置关于...

    consul(windows下持久化)

    8. **监控与报警**:配置监控系统(如 Prometheus 和 Grafana 或者 ELK Stack)以监控 Consul 的状态,当服务异常或配置文件变化时,及时发送报警。 通过以上步骤,我们可以确保 Consul 在 Windows 环境下的配置...

    10Spring Cloud Consul:服务治理与配置中心1

    Spring Cloud Consul:服务治理与配置中心 Spring Cloud Consul 是 Spring Boot 应用提供了 Consul 的支持,Consul 既可以作为注册中心使用,也可以作为配置中心使用。Consul 是 HashiCorp 公司推出的开源软件,...

    consul启动不成功解决方案

    针对这个问题,常规的解决方案可能包括更改Consul配置文件中的端口设置,让它使用其他未被占用的端口。然而,由于这里提到的`ip-guard`是一款强大的网络监控软件,普通的端口修改策略可能无效,因为它可能会对新端口...

    Consul Windows免安装版

    本文将详细介绍Consul在Windows平台上的安装与使用。 1. **Consul的组件和服务** - **Agent**: Consul运行在每个节点上,作为代理负责服务注册、发现、健康检查和与其他节点通信。 - **Server**: 集群中的某些...

    consul 1.4.0 linux版

    本文将深入探讨Consul 1.4.0在Linux系统上的安装、配置和使用,以及如何在Spring Cloud项目中集成Consul。 一、Consul 1.4.0的Linux安装 在Linux环境下安装Consul 1.4.0,首先需要从官方网站或通过wget命令下载...

    consul(windows)安装包

    4. **配置与启动**: Consul可以通过命令行参数、配置文件(如`config.json`)或环境变量进行配置。配置文件可以指定各种选项,例如设置服务发现规则、健康检查、网络设置等。在安装服务后,你可以通过`sc start ...

    springcloud整合nacos和consul

    1. **安装与启动Consul**: 下载并运行Consul服务器,确保其正常工作。 2. **配置SpringCloud**: 添加Consul Discovery的依赖,并配置Consul服务器的地址、端口。与Nacos类似,这需要在SpringBoot的配置文件中完成。...

    Consul+upsync+Nginx动态配置负载均衡.pdf

    2. 配置Nginx动态加载:在Nginx的配置文件中,使用`upsync`指令,设置与Consul交互的参数,例如`interval`定义同步频率,`max_fails`和`fail_timeout`定义服务器失败的策略。 3. 启动Nginx:完成配置后,启动Nginx...

    consul 指南

    Agent会与一个或多个Consul Server进行交互,Server负责数据的存储和复制,并会自动选举出一个Leader来保证数据的一致性。尽管Consul可以仅使用一个Server运行,但是为了保证数据不会因为Server故障而丢失,建议至少...

    runConsul.bat

    这个主要是方便我们在window环境下一键启动consul服务器,不需要每次通过cmd命令去敲那么多命令,节省时间

    consul客户端本地开发

    2. **安装与启动Consul** 首先,你需要下载Consul的可执行文件,并在本地启动一个单节点的Consul集群。这可以通过命令行参数`-server -bootstrap-expect 1`来实现,这样会在本地启动一个服务器节点,并期待自身作为...

    consul.zip压缩包

    在本文中,我们将深入探讨 Consul 的核心功能、架构、使用场景以及如何在 Linux 环境中安装和配置。 一、Consul 的核心功能 1. **服务发现**:Consul 提供了服务注册与发现机制,允许服务实例向 Consul 注册,其他...

    Springboot集成Consul实现分布式配置中心-源码

    Consul是一个开源的服务发现和配置管理工具,具有跨平台、运行高效等特点。它由HashiCorp公司开发,并使用Go语言编写。Consul主要用于实现分布式系统中的服务发现、健康检查、键值存储等功能。 1. **服务发现**:...

    consul下载包(Linux、Windows)

    Consul 是一款由 HashiCorp 公司开发的开源工具,用于实现分布式系统的服务发现与配置。它提供了包括服务发现、健康检查、KV 存储、多数据中心的解决方案,广泛应用于微服务架构中。让我们深入了解一下 Consul 的...

    springboot+consul+多数据源配置 版本2.1.2

    Consul是一款开源的服务发现与配置工具,由HashiCorp公司创建。它提供了服务发现、健康检查、KV存储、多数据中心的解决方案。在Spring Boot应用中集成Consul,可以方便地实现服务间的注册与发现,以及动态配置的管理...

    consul linux 安装包

    Consul 是一款由 HashiCorp 公司开发的开源工具,用于实现分布式系统的服务发现、配置和服务网格功能。它提供了一套完整的解决方案,包括服务发现、健康检查、KV 存储、多数据中心的解决方案,是现代微服务架构中的...

Global site tag (gtag.js) - Google Analytics