使用Consul快速搭建简易分布式服务监控系统

来源:互联网 发布:奔腾楚天激光机编程 编辑:程序博客网 时间:2024/05/18 01:38

consul

相关的介绍请移步官网或者Consul’s Github.

服务发现是Consul的特性之一,利用这个特性,我们可以做一个简单的分布式服务监控系统.

模拟一个服务

用nodejs模拟一个最简单的服务node_server.js,内容如下,:

var http = require('http');http.createServer(function(request, response) {    response.write('<html>');    response.write('<body>');    response.write('<h1>Hello, World!</h1>');    response.write('</body>');    response.write('</html>');    response.end();}).listen(8090);

在Consul中定义服务

/etc/consul.d/web.json中定义服务如下:

{    "services":[        {            "name":"web",            "tags":["nodejsServer"],            "address":"127.0.0.1",            "port":8091,            "checks":[                {                    "http":"http://localhost:8090/",                    "interval":"10s"                }            ]        }    ]}

启动Node模拟服务

    node node_server.js

启动Consul Agent 集群

启动第一个节点:

consul agent \    -server \    -bootstrap-expect 2 \    -data-dir /tmp/consul \    -node=agent-one \    -bind=172.20.20.10 \    -config-dir /etc/consul.d/

启动第二个节点:

consul agent \    -data-dir ./ \    -node=agent-monitor \    -config-dir /etc/consul.d \    -bind 172.20.20.1 \    -server \    -join 172.20.20.10 \    -ui -bootstrap-expect 2

参数说明:

  1. -data-dir:数据文件目录,我指定的是执行命令的当前目录,可以任意指定;
  2. -node:分布式节点名称;
  3. -config-dir:配置文件名称,官方推荐的是/etc/consul.d;
  4. -bind:绑定的ip,
  5. -server:表示当前Consul为一个Server,server替换成Client时表示客户端;
  6. -ui:启动时伴随启动ui界面,该界面可以通过:localhost:8500/ui/访问;
  7. -bootstrap-expect:表示集群Server数量,启动时带上该参数,当有新的节点进入或者离开集群,会自动选举新的Leader;
  8. -join:加入指定的集群.

进入WEB管理页面:

localhost:8500/ui/

web页面可以查看当前所有的Service状态,当前所有的node集群等信息,如下图:

consul ui

服务监控

现在停掉模拟服务node service.查看WEB界面如下:

consul service error ui

可以看到,无法访问的service会用不同的颜色标记出来,同时其状态变为:critical.也可以看到服务无法访问的原因.

通过上面的简单部署,就可以快速建一个简单的分布式服务监控系统了.当然,Consul的功能远不止这些.有机会在介绍其他的.

1 0
原创粉丝点击