我想介绍一下我的部署服务发现/集群管理解决方案.据我所知,Mesos是一种解决方案,但我担心在安装马拉松,cronos,mesos等代理时,它在RAM方面消耗了多少; 我的盒子最多有512mb的RAM.在资源较少的盒子上安装Mesos是可行的吗?领事是Mesos的替代品吗?
在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-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) 假设 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 **
我使用 Spring Cloud Consul 来发现我的应用程序所需的服务。发现客户端返回请求服务的所有注册实例,尽管我也返回失败的实例。
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 时,如何浏览它?
需要什么配置才能实现这一目标?
可以使用此处提到的“开发模式” - 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) 我刚刚继承了一个 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 的最新进展,并且还没有看到任何显示此类逻辑语法的示例。有什么帮助吗?
我正在尝试使用Consul和Registrator来获取各种虚拟机中的微服务,但我想我并没有得到什么.我知道Registrator会自动向Consul注册容器.所以我想我有一个运行Consul的VM,然后对于每个微服务我都有一个带Registrator +微服务器的VM.
但是,我无法让Registrator在单独的VM中与Consul代理进行通信.仔细观察建议的体系结构,似乎我需要在每个VM上使用单独的Consul代理.我明白了吗?如果是这样,为什么?Registrator不应该只能将容器信息转发给任何VM上的Consul代理吗?
另外,我是否需要在具有Consul代理和服务器的VM上运行Registrator?
我想建立一个集群。我尝试按照本教程进行操作,但出现此错误。我不知道是否是因为我在同一台机器上运行2个ubuntu vm(hyper-v)。