Docker 单节点部署 Consul

Docker 单节点部署Consul

  • 1 Docker 拉取 Consul 镜像
  • 2 Docker 创建 Consul 容器
  • 3 启动 Consul 容器

CAP 原则是由计算机科学家 Eric Brewer 提出的,用于描述分布式系统中的一致性、可用性和分区容忍性之间的权衡关系,CAP 是三个概念的首字母缩写。

原则作用
一致性(Consistency)所有节点在同一时刻具有相同的数据视图。在一个具有多个节点的分布式系统中,当一个节点对数据进行了更新,所有其他节点在后续的访问中都能够看到这个更新。
可用性(Availability)每个非故障节点在有限时间内都能够返回有效的响应。即系统保证对每个请求都会收到一个非错误的响应,不保证是否包含最新的数据。
分区容忍性(Partition Tolerance)系统在网络分区的情况下仍然能够正常运行。分区容忍性是指在分布式系统中,即使由于网络故障导致节点之间无法通信,系统仍能够继续运行。

Consul 是一款由 HashiCorp 公司开发的开源工具,用于实现分布式系统的服务发现、健康检查、配置中心和分布式锁等功能。Consul 提供了一个简单而强大的界面,允许开发人员在分布式环境中轻松地注册和发现服务。

Consul 是一个分布式系统的服务发现和配置工具,它在设计上遵循了 CAP 原则,即一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)。以下是 Consul 在 CAP 方面的实现:

一致性(Consistency)

一致性协议: Consul 使用 Raft 协议作为一致性协议。Raft 是一种强一致性的分布式一致性算法,确保在集群中的节点之间达成一致的状态。

强一致性: Consul 的一致性保证是强一致性,即任何时刻对 Consul 集群的读写操作都能获得最新的、一致的状态。

一致性级别: Consul 提供强一致性,这意味着在进行读操作时,所有节点都能够返回相同的数据。

可用性(Availability)

多数据中心支持: Consul 具有跨多个数据中心的支持,允许在全球范围内构建具有高可用性和弹性的系统。

健康检查: Consul 允许服务注册和进行健康检查,当服务出现故障时,Consul 能够将其标记为不可用。这有助于确保只有健康的服务被路由到,提高系统的可用性。

服务发现: 通过 Consul 的服务发现功能,应用程序能够自动发现和调用其他服务,提高了整个系统的可用性。

分区容忍性(Partition Tolerance)

分布式架构: Consul 的设计考虑了分布式系统的特性,它可以在面临网络分区的情况下继续运行。

Raft 协议: Raft 协议本身具有分区容忍性,即使在网络分区的情况下,Consul 仍然能够保持一致性。

总体而言,Consul 在 CAP 方面的实现是一致性和可用性的权衡,通过使用 Raft 协议等技术实现了强一致性,并提供了多数据中心支持以增强可用性。在网络分区的情况下,Consul 通过分布式架构和一致性协议来维持系统的正常运行。需要注意的是,当发生网络分区时,可能会导致一些节点无法通信,但 Consul 会根据 Raft 协议维护尽可能多的一致性。

以下是 Consul 的主要功能:

服务发现: Consul 允许服务在注册时提供元数据,并使用 DNS 或 HTTP 接口进行服务发现。这使得服务能够在分布式环境中自动发现彼此。

健康检查: Consul 支持对服务进行健康检查,通过定期的心跳检查服务的健康状态,并在服务出现故障时将其标记为不可用。这有助于确保只有健康的服务被路由到。

分布式 KV 存储: Consul 提供了一个分布式键值存储(Key-Value Store),用于存储配置信息、控制开关等。这使得配置管理变得更加容易。

多数据中心: Consul 具有跨多个数据中心的支持,允许在全球范围内构建具有高可用性和弹性的系统。

事件: Consul 支持事件系统,允许应用程序对服务注册、健康状态变化等事件进行监听,从而执行相应的操作。

Consul 优点:

简单易用: Consul 提供简洁而直观的用户界面,容易上手。它的设计目标之一是提供一个易于使用的服务发现和配置管理工具。

多功能性: Consul 不仅提供服务发现,还包括健康检查、配置中心和分布式锁等功能。这使得它成为构建和管理分布式系统的全面解决方案。

灵活性: Consul 提供了多种配置选项和部署模式,可以根据特定需求进行灵活配置和定制。

多数据中心支持: 对于需要在多个数据中心部署的大规模系统,Consul 提供了良好的支持,使得服务发现和管理更为简便。

活跃社区和支持: 由于是由 HashiCorp 公司维护的开源项目,Consul 拥有一个活跃的社区,提供了广泛的文档和支持。

Consul 缺点:

Java 客户端相对不完善: 在 Java 生态系统中,Consul 的客户端相对较新,相比其他语言的客户端可能有一些不足之处。

学习曲线: 尽管 Consul 设计简单,但在一些复杂的场景中,使用所有功能可能需要一些时间来学习。

资源占用: Consul 的一些功能可能占用较多的系统资源,特别是对于较小的部署场景来说,可能会显得过于重量级。

1 Docker 拉取 Consul 镜像

docker pull consul

2 Docker 创建 Consul 容器

docker run -d -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8500:8500 -p 8600:8600 --restart=always --name=consul consul:latest agent -server -bootstrap -ui -node=1 -client='0.0.0.0'
端口作用
8300TCP协议,用于Consul集群中各个节点相互连结通信的端口。
8301TCP或者UDP协议,用于Consul节点之间相互使用Gossip协议健康检查等交互。
8302TCP或者UDP协议,用于单个或多个数据中心之间的服务器节点的信息同步。
8500HTTP协议,用于API接口或者我们上述的网页管理界面访问。
8600TCP或者UDP协议,作为DNS服务器,用于通过节点名查询节点信息。
参数作用
agent表示启动一个Agent进程。
-server表示该节点类型为Server节点(下面会讲解集群中的节点类型)
-ui开启网页可视化管理界面。
-node指定该节点名称,注意每个节点的名称必须唯一不能重复!上面指定了第一台服务器节点的名称为n1,那么别的节点就得用其它名称。
-bootstrap-expect最少集群的Server节点数量,少于这个值则集群失效,这个选项必须指定,由于这里是单机部署,因此设定为1即可。
-advertise这里要指定本节点外网地址,用于在集群时告诉其它节点自己的地址,如果是在自己电脑上或者是内网搭建单节点/集群则不需要带上这个参数。
-client指定可以外部连接的地址,0.0.0.0表示外网全部可以连接。
–restart=alwaysDocker启动的时候自动启动。

3 启动 Consul 容器

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174178.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Centos8部署LNMP架构

LNMP架构 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。 1.Linux是一类Unix计算机操作系统的统称…

ECharts 实例2

之前做过一个 ECharts 例子&#xff1b;再做一个看一下&#xff1b; <!DOCTYPE html> <html> <head><meta charset"gb2312"><title> 多bar 实例</title><!-- 引入 echarts.js --><script src"https://cdn.static…

【每日一题】2216.美化数组的最少删除数-2023.11.21

题目&#xff1a; 2216. 美化数组的最少删除数 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数对所有满足 i % 2 0 的下标 i &#xff0c;nums[i] ! nums[i 1] 均成立 …

【网络安全】-网络安全的分类详解

文章目录 介绍1. 网络层安全&#xff08;Network Layer Security&#xff09;理论实操使用VPN保护隐私 2. 应用层安全&#xff08;Application Layer Security&#xff09;理论实操使用密码管理器 3. 端点安全&#xff08;Endpoint Security&#xff09;理论实操定期更新防病毒…

使用iframe 发现样式错位的解决办法

原理就是默认隐藏 点击的时候&#xff08;或者需要的时候&#xff09;展示出来 方法二 宽高为0

【学习记录】从0开始的Linux学习之旅——编译linux内核

一、学习背景 从接触嵌入式至今&#xff0c;除了安装过双系统接触了一丢丢linux外&#xff0c;linux在我眼中向来是个传说。而如今得到了一块树莓派&#xff0c;于是决心把linux搞起来。 二、概念学习 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应…

13 redis中的复制的拓扑结构

1、一主一从 为了性能考虑&#xff0c;主节点可以不开启AOF&#xff0c;但是要避免重启。 2、一主多从 适用于读操作的场景。由于从节点多&#xff0c;所以主的复制压力大 3、树状主从 数据先同步到redisB,redisC从节点C,E来看&#xff0c;redisB相当于主机了&#xff0c;可以…

【算法】二分查找-20231122

这里写目录标题 一、1089. 复写零二、917. 仅仅反转字母三、88. 合并两个有序数组四、283. 移动零 一、1089. 复写零 提示 简单 266 相关企业 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&a…

使用MONAI轻松加载医学公开数据集,包括医学分割十项全能挑战数据集和MedMNIST分类数据集

在深度学习中&#xff0c;使用公开数据集具有以下优点&#xff1a; 提供了一个标准化的基准来比较不同算法或模型的性能&#xff0c;因为这些公共数据集被广泛使用&#xff0c;许多研究人员都使用它们来评估他们的方法。可以节省大量的时间和金钱&#xff0c;因为这些数据集已…

机器视觉系统选型-环形光源分类及应用场景

环形光源主要分为&#xff1f; 1.环形光源(高角度) 照射光线与水平方向成高角度夹角 外观缺陷检测字符识别PCB基板检测二维码读取- 2.环形光源(低角度) 照射光线与水平方向成低角度夹角各种边缘提取字符识别玻璃断面的损伤检测金属表面刻印、损伤 3.环形光源(高亮) 高亮度远…

C练习题_15

一、单项选择题(本大题共20小题&#xff0c;每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 在下列说法中&#xff0c;&#xff08;&#xff09;是正确的。 A.C程序从第一个函数开始…

gitBash中如何使用Linux中的tree命令

文章目录 在gitBash中安装tree的目的如何安装安装完成,就可以直接完美适配Linux系统了在gitBash中安装tree的目的 如下图,powershell虽然可以看做是window下的Linux系统,但是根本就不适配很多Linux中的命令 如何安装 tree.exe安装网址 下载 tree 命令的 二进制包,安装 tr…

前端--vscode常用插件

一、实时预览效果live server 安装插件后&#xff0c;需要搜索“auto save”&#xff0c;设置“files:auto save”为“afterDelay” 和 1000 二、显示缩进indent-rainbow 三、以不同颜色区分括号bracket pair colorizer 四、格式化代码form 步骤&#xff1a;在设置中搜索“…

基于 Eureka 的 Ribbon 负载均衡实现原理【SpringCloud 源码分析】

目录 一、前言 二、源码分析 三、负载均衡策略 一、前言 如下图&#xff0c;我们在 orderserver 中通过 restTemplate 向 usersever 发起 http 请求&#xff0c;在服务拉取的时候&#xff0c;主机名 localhost 是用服务名 userserver 代替的&#xff0c;那么该 url 是一个可…

Leetcode刷题之有效的括号(C语言版)

Leetcode刷题之有效的括号&#xff08;C语言版&#xff09; 一、题目描述二、题目测试用例三、题目分析四、完整代码 一、题目描述 20、有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是…

k8s无法删除pv,pvc问题

问题&#xff1a; 在k8s里面创建了pv&#xff0c;pvc删除时报错&#xff1a;error: resource(s) were provided, but no name was specified 解决&#xff1a; 正确的删除顺序&#xff1a;1.先删除pod2.再删除pv 3.在删除pvc 删除pv&#xff0c;pvc命令&#xff1a; kubect…

《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

功能&#xff1a; 1、可以在收缩栏插件中添加界面 2、可以把界面展开或收缩 3、可以用鼠标拖动界面改变界面的排放顺序 源码放在最下方 1、可以在收缩栏插件中添加界面 virtual void addWidget(QWidget* widget, const QString& label, const QIcon& icon QIcon())…

error: ‘ui/ui_uimainwindow.h‘ file not found

问题&#xff1a;在刚好创建的Qt Designer Form Class类中&#xff0c;发现类的.cpp文件中有ui头文件未找到 原因&#xff1a;.ui文件没有被识别到&#xff0c;或者.ui文件不存在&#xff0c;导致ui头文件未创建而报错。 解决&#xff1a;若修改了.ui文件&#xff0c;随手ctrls…

汇编-MOVSXD64位带符号扩展传送

允许源操作数为32位的寄存器或内存操作数 ExitProcess PROTO .code main PROCmov ebx, 0FFFFFFFFh movsxd rax, ebx ;RAX FFFFFFFFFFFFFFFFhmov ebx, 01FFFFFFFh movsxd rdx, ebx ;RDX 000000001FFFFFFFhmov ecx,0 ;结束程序call ExitProcess main ENDP E…

TS类型全解

使用TypeScript开发的程序更安全&#xff0c;常见的错误都能检查出来。TS能让程序员事半功倍。而原因在于TS的“类型安全”&#xff08;借助类型避免程序做无效的事情&#xff09;。 图 运行程序的过程 但是TS不会直接编译成字节码&#xff0c;而是编译成JavaScript代码。TS编…