<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Consul on Leanku 的博客</title><link>https://www.leanku.com/tags/consul/</link><description>Recent content in Consul on Leanku 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 01 Jun 2023 11:46:01 +0800</lastBuildDate><atom:link href="https://www.leanku.com/tags/consul/index.xml" rel="self" type="application/rss+xml"/><item><title>Consul注册中心</title><link>https://www.leanku.com/post/microservice/consul%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/</link><pubDate>Thu, 01 Jun 2023 11:46:01 +0800</pubDate><guid>https://www.leanku.com/post/microservice/consul%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/</guid><description>&lt;h1 id="consul注册中心"&gt;Consul注册中心&lt;/h1&gt;&#10;&lt;h2 id="cap原理"&gt;CAP原理&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;一致性（Consistency） 所有节点在同一时间具有相同的数据&lt;/li&gt;&#10;&lt;li&gt;可用性（Availablility） 保证每个请求不管或者失败都有响应&lt;/li&gt;&#10;&lt;li&gt;分区容错（Partition tolerance） 系统中任意数据的丢失或失败不会影响系统的继续运作&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="consul-介绍"&gt;Consul 介绍&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;方便部署&lt;/li&gt;&#10;&lt;li&gt;采用Raft算法实现，有服务发现，key/value存储，可以做配置中心使用。有健康检查，同事提供了web管理页面&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="consul角色"&gt;Consul角色&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;-dev 开发环境下的启动命令，提供基本的服务&lt;/li&gt;&#10;&lt;li&gt;-client 客户端，无状态的，将http和dns请求转发到服务端集群&lt;/li&gt;&#10;&lt;li&gt;-server 服务端，保存配置信息，可以搭建高可用的集群&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="consul-内部端口"&gt;Consul 内部端口&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;端口&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;说明&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TCP/8300&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8300端口用于服务器节点。客户端通过该端口RPC协议调用服务端接口。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TCP/UDP/8301&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8301端口用于单个数据中心所有节点之间的相互通信，即对LAN池信息的同步。它使得整个数据中心能够自动发现服务器地址，分布式检测节点故障，事件广播&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TCP/UDP/8302&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8302端口用于单个或多个数据中心之间的服务器节点的信息同步。即对WAN池信息的同步。它针对互联网的高延迟进行了优化，能够实现跨数据中心请求。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8500&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8500端口基于HTTP协议，用于API接口或WEB UI访问。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8600&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8600端口作为DNS服务器，它使得我们可以通过节点名查询节点的信息。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="consul-工作原理"&gt;Consul 工作原理&lt;/h2&gt;&#10;&lt;p&gt;&lt;img src="http://resources.leanku.com/consul.png" alt="consul工作原理"&gt;&lt;/p&gt;&#10;&lt;h2 id="consul-安装"&gt;Consul 安装&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://developer.hashicorp.com/consul/install"&gt;下载地址&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;或者docker安装&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;docker run -d --name&lt;span class="o"&gt;=&lt;/span&gt;consul -p 8500:8500 consul:1.15.4 agent -dev -client 0.0.0.0 -ui&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后，命令行输入consul 检查 consul 是否可用&lt;/p&gt;&#10;&lt;p&gt;Consul支持web ui界面。UI可用于查看所有服务和节点，查看所有运行状况检查及其当前状态，以及读取和设置键/值数据。 用户界面自动支持多数据中心。要设置自带的UI，请使用-ui参数启动Consul代理：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;consul agent -ui&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;UI可以在与HTTP API相同的端口上的/ui路径中使用。 默认情况下，这是http://localhost:8500/ui。&lt;/p&gt;&#10;&lt;h2 id="注册个服务"&gt;注册个服务&lt;/h2&gt;&#10;&lt;p&gt;使用HTTP API 注册个服务，使用[接口API](&lt;a href="https://www.consul.io/api/agent/service.html"&gt;https://www.consul.io/api/agent/service.html&lt;/a&gt; API)调用&lt;/p&gt;</description></item></channel></rss>