标签: consul

群集管理和服务发现

我想介绍一下我的部署服务发现/集群管理解决方案.据我所知,Mesos是一种解决方案,但我担心在安装马拉松,cronos,mesos等代理时,它在RAM方面消耗了多少; 我的盒子最多有512mb的RAM.在资源较少的盒子上安装Mesos是可行的吗?领事是Mesos的替代品吗?

ruby deployment ruby-on-rails mesos consul

3
推荐指数
1
解决办法
1275
查看次数

Consul - 如果驱动器已满,则发出警报

在consul的演示中,检查磁盘利用率和内存利用率. 在此输入图像描述

http://demo.consul.io/ui/#/ams2/nodes/ams2-server-1

你怎么能编写一个配置来做演示所展示的内容?警告为10%,关键错误为5%?

这是我正在尝试的

{
  "check": {
     "name": "Disk Util",
     "script": "disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g' ) | if [ $disk_util >  90 ] ; then echo 'Disk /dev/sda above 90% full' && exit 1; elif [ $disk_util > 80 ] ; then echo 'Disk /dev/sda above 80%' && exit 3;  else exit 0; fi",
     "interval": "2m"
     }
}
Run Code Online (Sandbox Code Playgroud)

这是相同的脚本,但更具人性化

disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g' ) …
Run Code Online (Sandbox Code Playgroud)

consul

3
推荐指数
1
解决办法
2888
查看次数

在 consul-template 中的循环中覆盖变量

我在 consul-template 中使用以下模板:

{{ range services }}
  {{ $server_name := .Name | replaceAll "_" "." }}
  {{ range .Tags }}
    {{ if . | regexMatch "server_name=" }}
      # found matching server_name in {{ . }}
      {{ $server_name := . | regexReplaceAll ".*=" "" }}
    {{ end }}
  {{ end }}
  # server_name = {{ $server_name }}
        acl host_{{ .Name }} hdr(host) -i {{ $server_name }}
        use_backend {{ .Name }}_backend if host_{{ .Name }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

产生

  # found matching …
Run Code Online (Sandbox Code Playgroud)

templates go consul consul-template

3
推荐指数
1
解决办法
2590
查看次数

您将如何使用 Hashicorp 的 Nomad '模板节' 通过 Nomad 作业文件生成 nginx 配置文件?

假设 Consul 和 Nomad 已配置为在资源池上运行。您将如何仅出于生成 Nginx 'default.conf' 文件的目的而呈现模板文件。

以下面的模板节配置为例;Nomad 无法生成 default.conf '文件';而是创建了一个 default.conf '目录'。

template {
    source        = "/path/to/tmp.ctmpl"
    destination   = "folder/default.conf"
    change_mode   = "restart"
    change_signal = "SIGINT"
}
Run Code Online (Sandbox Code Playgroud)

我要么错过了一个技巧,要么误解了“模板节”的功能。

模板生成目录而不是文件的问题之一是,您无法将目录挂载到配置文件路径。因此,运行使用 Nomad docker 驱动程序和示例“docker”卷配置的任务会导致错误。

volumes = ["/path/to/job/folder/default.conf:/etc/nginx/conf.d/default.conf" ]
Run Code Online (Sandbox Code Playgroud)

还是不可能让模板节生成配置文件?

*Ps 使用 Nomad 构建 0.5.5 **

nginx docker consul consul-template nomad

3
推荐指数
1
解决办法
7245
查看次数

Spring Cloud Consul 的发现客户端返回失败的实例

我使用 Spring Cloud Consul 来发现我的应用程序所需的服务。发现客户端返回请求服务的所有注册实例,尽管我也返回失败的实例。

Consul 本身将失败的实例正确标记为失败(关键)。

那么,为什么发现客户端不删除关键/失败的实例?或者描述这个的文档在哪里?

spring service-discovery spring-boot consul

3
推荐指数
1
解决办法
973
查看次数

在带有 UI 的容器中运行 consul

按照我正在运行的 官方文档

docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul -ui -p 8500:8500
Run Code Online (Sandbox Code Playgroud)

我添加了 -ui 和 -p 8500:8500 来启用 consul UI。
但我真的无法浏览

http://localhost:8500/ui/
Run Code Online (Sandbox Code Playgroud)

或远程登录 127.0.0.1 8500。

当我在 docker 中运行 consul UI 时,如何浏览它?

docker consul

3
推荐指数
1
解决办法
1332
查看次数

如何设置单节点Consul服务器/客户端?

需要什么配置才能实现这一目标?

可以使用此处提到的“开发模式” - https://learn.hashicorp.com/consul/getting-started/agent(但不建议用于生产)。

我尝试过设置此设置,但我不确定如何设置客户端配置。我尝试过的是以下配置:

{
  "data_dir": "/tmp2/consul-client",
  "log_level": "INFO",
  "server": false,
  "node_name": "master",
  "addresses": {
    "https": "127.0.0.1"
  },
  "bind_addr": "127.0.0.1"
}
Run Code Online (Sandbox Code Playgroud)

这会导致以下失败:

consul agent -config-file=client.json
==> Starting Consul agent...
==> Error starting agent: Failed to start Consul client: Failed to start lan serf: Failed to create memberlist: Could not set up network transport: failed to obtain an address: Failed to start TCP listener on "127.0.0.1" port 8301: listen tcp 127.0.0.1:8301: bind: address already in use
Run Code Online (Sandbox Code Playgroud)

service-discovery consul

3
推荐指数
1
解决办法
8999
查看次数

领事模板 - “如果服务存在”条件?

我刚刚继承了一个 Nginx 代理/应用程序服务器设置,它使用 Consul 和 Consul Template 进行服务发现和注册。Nginx 代理有一个配置文件,其中包含如下条目,用于注册下游应用程序服务器:

<snip>

upstream appservers {
  {{ range service "my-app-servers" }}
     server {{ .Address }}.{{ .Port }};
  {{ end }}
}

<snip>
Run Code Online (Sandbox Code Playgroud)

consul-template在后台运行以捕获任何更新my-app-servers,适当更新nginx.conf文件,然后重新加载 nginx 配置。这一切都很有效,我们可以根据需要在组合中添加和删除应用程序服务器。也就是说,如果存在没有可用应用程序服务器的情况,我们最终会得到一个空upstream块,从而导致 nginx 重新加载失败。

consul-template 有没有办法拥有"if service my-app-servers exists, then..."逻辑"if not, then..."?我希望能够让我的nginx.conf文件具有针对上游服务器存在的情况的一种配置,以及另一种在上游服务器不存在时显示错误页面的应急设置。我仍在了解 consul-template 的最新进展,并且还没有看到任何显示此类逻辑语法的示例。有什么帮助吗?

nginx consul consul-template nginx-reverse-proxy

3
推荐指数
1
解决办法
1460
查看次数

Consul/Registrator体系结构 - 我是否需要在每个VM上使用单独的Consul代理?

我正在尝试使用Consul和Registrator来获取各种虚拟机中的微服务,但我想我并没有得到什么.我知道Registrator会自动向Consul注册容器.所以我想我有一个运行Consul的VM,然后对于每个微服务我都有一个带Registrator +微服务器的VM.

但是,我无法让Registrator在单独的VM中与Consul代理进行通信.仔细观察建议的体系结构,似乎我需要在每个VM上使用单独的Consul代理.我明白了吗?如果是这样,为什么?Registrator不应该只能将容器信息转发给任何VM上的Consul代理吗?

另外,我是否需要在具有Consul代理和服务器的VM上运行Registrator?

vagrant docker consul microservices

2
推荐指数
1
解决办法
381
查看次数

如何修复`错误启动代理无法获得发现多个私有ip的广告地址'

我想建立一个集群。我尝试按照本教程进行操作,但出现此错误。我不知道是否是因为我在同一台机器上运行2个ubuntu vm(hyper-v)。

在此处输入图片说明

ubuntu consul

2
推荐指数
1
解决办法
1930
查看次数