Consul 快速入门
Consul是什么
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
安装Consul
这里提供两台Centos:consul1,consul2
安装方式:
[root@consul2 ~]# wget https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip
[root@consul2 ~]# unzip consul_1.2.2_linux_amd64.zip
[root@consul2 ~]# ./consul
Usage: consul [--version] [--help] <command> [<args>]
# consul1 同上
运行Agent
安装Consul后必须运行Agent,可以选择服务器或客户端模式。每个数据中心至少有一个服务器(推荐3~5个服务器集群)。
简单起见,先启动一个Agent的开发模式:
# Agent的开发模式
[root@consul2 ~]# ./consul agent -dev
==> Starting Consul agent...
==> Consul agent running! # 查看集群成员
[root@consul2 ~]# ./consul members
Node Address Status Type Build Protocol DC Segment
consul2 127.0.0.1:8301 alive server 1.2.2 2 dc1 <all> # 使用 HTTP API 查看
[root@consul2 ~]# curl localhost:8500/v1/catalog/nodes
[
{
"ID": "796b14fe-1332-4aa0-d96f-8f287a4ccc7e",
"Node": "consul2",
"Address": "127.0.0.1",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "127.0.0.1",
"wan": "127.0.0.1"
},
"Meta": {
"consul-network-segment": ""
},
"CreateIndex": 9,
"ModifyIndex": 10
}
]
# 还可以使用 DNS 接口来查询节点(默认端口:8600)
[root@consul2 ~]# yum install bind-utils
[root@consul2 ~]# dig @127.0.0.1 -p 8600 consul2.node.consul
...
;; QUESTION SECTION:
;consul2.node.consul. IN A
;; ANSWER SECTION:
consul2.node.consul. 0 IN A 127.0.0.1
...
注册服务
1、定义一个服务
[root@consul2 ~]# mkdir /etc/consul.d
[root@consul2 ~]# echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json
[root@consul2 ~]# ./consul agent -dev -config-dir=/etc/consul.d
2、查询一个服务
# 使用 DNS API
[root@consul2 ~]# dig @127.0.0.1 -p 8600 web.service.consul
...
;; QUESTION SECTION:
;web.service.consul. IN A
;; ANSWER SECTION:
web.service.consul. 0 IN A 127.0.0.1 # 使用 DNS API 查找 SRV 记录
[root@consul2 ~]# dig @127.0.0.1 -p 8600 web.service.consul SRV
...
;; QUESTION SECTION:
;web.service.consul. IN SRV
;; ANSWER SECTION:
web.service.consul. 0 IN SRV 1 1 80 consul2.node.dc1.consul.
;; ADDITIONAL SECTION:
consul2.node.dc1.consul. 0 IN A 127.0.0.1
... # 使用 HTTP API 查询
[root@consul2 ~]# curl http://localhost:8500/v1/catalog/service/web
# 健康检查
[root@consul2 ~]# curl 'http://localhost:8500/v1/health/service/web?passing'
Consul集群
1、创建node1,consul server
[root@consul1 ~]# ./consul agent -server -bootstrap-expect=1 \
-data-dir=/tmp/consul \
-node=agent-one -bind=192.168.56.112 \
-enable-script-checks=true -config-dir=/etc/consul.d \
-client 0.0.0.0 -ui
# -node:节点的名称
# -bind:绑定的一个地址,用于节点之间通信的地址,可以是内外网,必须是可以访问到的地址
# -server:这个就是表示这个节点是个SERVER
# -bootstrap-expect:这个就是表示期望提供的SERVER节点数目,数目一达到,它就会被激活,然后就是LEADER了
# -dc:指明数据中心的名字
# -client 0.0.0.0 -ui:启动UI(为了方便后续的UI访问)
2、创建node2,consul client
[root@consul2 ~]# ./consul agent -data-dir=/tmp/consul \
-node=agent-two \
-bind=192.168.56.113 -enable-script-checks=true \
-config-dir=/etc/consul.d \
-ui
3、加入集群
[root@consul2 ~]# ./consul join 192.168.56.112
Successfully joined cluster by contacting 1 nodes.
[root@consul2 ~]# ./consul members
Node Address Status Type Build Protocol DC Segment
agent-one 192.168.1.13:8301 alive server 1.2.2 2 dc1 <all>
agent-two 192.168.1.12:8301 alive client 1.2.2 2 dc1 <default>
4、查询节点
[root@consul2 ~]# dig @127.0.0.1 -p 8600 agent-two.node.consul
...
;; QUESTION SECTION:
;agent-two.node.consul. IN A
;; ANSWER SECTION:
agent-two.node.consul. 0 IN A 192.168.1.12
KV数据
类似Redis,一般也就用来做服务配置。
简单了解下命令就好:
consul kv put redis/config/minconns 1
consul kv put redis/config/minconns 2 # 更新
consul kv get redis/config/minconns
consul kv delete redis/config/minconns
consul kv delete -recurse redis # 批量删除
WEB UI
访问下:http://192.168.56.112:8500/ui

栏目解析:就是上面操作生成的一些东西
1、services:放置服务
2、nodes:放置consul节点
3、key/value:放置一些配置信息
4、dc1:配置数据中心
Consul 快速入门的更多相关文章
- Consul 快速入门 - Kong最佳实践
Consul是什么 Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用.限流.熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便.它提供了一个功 ...
- Docker三十分钟快速入门(下)
一.背景 上篇文章我们进行了Docker的快速入门,基本命令的讲解,以及简单的实战,那么本篇我们就来实战一个真实的项目,看看怎么在产线上来通过容器技术来运行我们的项目,来达到学会容器间通信以及dock ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
随机推荐
- 如何设置Tomact的标题,运行Tomcat显示为自己程序的命名
当我们使用Tomcat部署好一个web系统后,在窗口处默认会显示Tomcat名字.但如果我们用多个Tomcat部署时,则需要区分这些窗口,这是需要修改Tomact的配置,来设置一个我们需要显示的标题. ...
- 难道主键除了自增就是GUID?支持k8s等分布式场景下的id生成器了解下
背景 主键(Primary Key),用于唯一标识表中的每一条数据.所以,一个合格的主键的最基本要求应该是唯一性. 那怎么保证唯一呢?相信绝大部分开发者在刚入行的时候选择的都是数据库的自增id,因为这 ...
- Java自定义异常的用法
package day162020072701.day1601; /** * @author liuwenlong * @create 2020-07-27 09:25:44 */ @Suppress ...
- 第一次编程作业(My Own Score)
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE ...
- SpringMVC-08-SpringMVC层编写
SpringMVC层编写 web.xml DispatcherServlet <!--DispatcherServlet--> <servlet> <servlet-na ...
- oracle之二检查点
检查点(checkpoint) 8.1 什么是checkpointcheckpoint是数据库的一个内部事件,检查点激活时会触发数据库写进程(DBWR),将数据缓冲区里的脏数据块写到数据文件中. 8. ...
- css常用属性:居中展示、内边距、外边距
1.横向居中.纵向居中 2.纵向展示3个块级(div标签即可纵向展示) 3.横向展示3个块级 4.在横向块级上加上边框的两种方法 法一:在父级div上加上和样式一样高的height 法二:在父级div ...
- 最火的开源 IDE介绍与安装教程
导读:开发C/C++最好的IDE是什么,尤其对于很多初学者来说用什么IDE比较容易上手,本文将做以介绍,并为您演示如何下载与安装. 本文字数:1015,阅读时长大约:10分钟 (一)最火的开源IDE ...
- linux之磁盘整理
yum安装的时候报错没有磁盘空间,需要整理 就需要查看下目前的磁盘使用情况 首先是df -hl查看从磁盘使用 可以到根目录下看看文件夹大小 du -sh * 或者下面的命令 接下来我们要删除东西整理磁 ...
- 第二篇 配置wcf
老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...