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

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的功能远不止这些.有机会在介绍其他的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值