当前位置: 首页 > news >正文

linux centos consul1.15.2一键安装部署

consul原理、作用、安装相关内容

  • 一、理论部分
  • 二、安装下载版本地址
  • 三、安装consul服务

一、理论部分

1、consul的原理
Consul的原理及作用可以归纳为以下几点:

①、基于Gossip协议的通信:Consul使用了基于Gossip协议的Serf实现来进行通信。
Gossip协议是一个基于流行病传播方式的节点或者进程之间信息交换的协议,它通过UDP实现任意node-to-node间的通信,确保网络中所有节点的数据一致。节点间的交互方式主要包括Push、Pull以及Push&Pull。

②、成员管理和消息广播:Consul利用Serf提供的Gossip协议来管理成员和广播消息到集群。这种去中心化的方式不同于集中式结构,它更加灵活和可扩展。

③、使用Raft算法保证一致性:Consul采用Raft算法来保证服务的高可用性和数据的一致性。这是一种相对简单且易于理解的一致性算法,相比Paxos算法更为直接。

2、Consul的作用

①、服务发现:Consul的客户端可以注册服务,其他客户端则可以使用Consul来发现这些服务的提供者。通过DNS或HTTP接口,应用程序可以轻松找到它们所依赖的服务。

②、健康检查:Consul提供健康检查功能,可以快速告警集群中的问题。与服务发现的集成可以防止将服务转发到故障的服务上。

③、键/值存储:Consul提供一个键/值存储系统,用于存储动态配置。通过简单的HTTP接口,可以在任何地方操作这些配置。

④、多数据中心支持:Consul支持多个数据中心,这意味着用户不必担心构建额外的抽象层以扩展到多个区域。内外网的服务可以采用不同的端口进行监听,从而提高了系统的可用性和可扩展性。
安全服务通信:Consul还可以为服务生成和分发TLS证书,以建立相互的TLS连接,确保通信的安全性。同时,通过Intentions(意图)定义允许哪些服务进行通信,轻松管理服务分段。

⑤、综上所述,Consul是一个功能强大的开源工具,它通过Gossip协议实现去中心化的通信和成员管理,采用Raft算法保证数据一致性,并提供服务发现、健康检查、键/值存储以及多数据中心支持等功能。这些特性使得Consul在分布式系统中具有广泛的应用前景。

3、consul与nacos和zookeeper区别

Consul、Nacos和ZooKeeper在分布式系统中各自扮演着重要的角色,但它们在服务发现、配置管理、健康检查等方面存在明显的区别。以下是它们之间的主要差异:

①、服务发现与注册:
Consul:通过DNS或HTTP接口使服务注册和服务发现变得容易。它支持外部服务如SaaS的注册。

Nacos:允许服务在注册中心中注册自己,并通过服务名来发现其他服务。这有助于实现微服务架构中的服务之间的通信。

ZooKeeper:主要作为分布式协调服务,提供了简单的分层命名空间,类似于文件系统,用于存储和管理分布式应用程序的配置、状态信息和元数据。但它本身并不直接提供服务发现与注册的功能。

4、配置管理:

Consul:提供键/值存储系统,用于存储动态配置。

Nacos:提供了统一的配置管理平台,可用于管理和动态更新分布式系统中的配置信息,如数据库连接、参数设置等。

ZooKeeper:虽然也用于存储和管理分布式应用程序的配置信息,但其主要目标是作为分布式协调服务,而不是专门的配置管理工具。

5、健康检查:

Consul:提供健康检查功能,通过check方法实现,包括Script + Interval、HTTP + Interval、TCP + Interval等多种方式。

Nacos:既支持客户端的健康检查(KeepAlive、Client Beet),也支持服务端的健康检查(如MYSQL命令等)。

ZooKeeper:虽然不直接提供健康检查功能,但可以通过其提供的Watch机制来监听数据节点的变化,从而间接实现健康检查的效果。

6、性能与容量:
Consul:由于其使用Raft算法来保证一致性,相比使用Paxos算法的ZooKeeper在写性能上可能稍逊一筹。但在多数据中心的支持上,Consul具有明显优势。

Nacos:在开源版本中,服务实例注册的支撑量约为100万,服务的数量可以达到10万以上,显示了其强大的性能和容量。

ZooKeeper:在写性能上可以达到上万的TPS,容量从存储节点数来说可以达到百万级别。但Paxos协议限制了ZooKeeper集群的规模(通常为3或5个节点)。

6、其他特性:
Consul:支持多数据中心,内外网的服务可以采用不同的端口进行监听。官方提供web管理界面。

Nacos:支持动态DNS服务、权重和流量管理等功能,可以实现不同版本的服务之间的流量切分和管理。

ZooKeeper:提供了分布式协调的原语,如锁、队列、通知机制等,常用于构建分布式锁、配置管理、分布式队列等关键组件。

⑥、综上所述,Consul、Nacos和ZooKeeper在服务发现、配置管理、健康检查等方面各有特点。
Consul适合需要多数据中心支持和高可用性的场景;

Nacos则提供了丰富的配置管理和服务治理功能;

而ZooKeeper则以其强大的分布式协调能力和简单的API赢得了广泛的应用。

在选择时,应根据具体的业务需求和场景来选择合适的工具。

二、安装下载版本地址

https://releases.hashicorp.com/consul/1.15.2/
在这里插入图片描述

三、安装consul服务

1、将安装包上传到目录

mkdir -p /opt/install/package/consul

在这里插入图片描述
2、编辑安装文件及启动文件
在这里插入图片描述
3、进入目录

cd /opt/install/consul

4、编辑启动文件

vim consul-node01
#!/bin/bash
# consul
# chkconfig: 2345 70 30
# description: consul node 01 server
#
### BEGIN INIT INFO
# Provides: consul
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# short-Description: Start up the Consul server node01 daemon
# Description:  Consul Server node01 daemon
### END INIT INFOprog=consul-node01
PROG_OWNER=/opt
PROG_BASE=$PROG_OWNER/$progPID=start() {getpidif [ "$PID" != "" ] && [ -d /proc/$PID ]; thenecho "$prog (pid $PID) 已运行..."else#su - $PROG_OWNER -c "nohup $PROG_BASE/$prog.sh > $PROG_BASE/consul.log 2>&1 &"nohup $PROG_BASE/$prog.sh > $PROG_BASE/consul.log 2>&1 &echo "$prog started."fi
}stop() {getpidif [ "$PID" != "" ] && [ -d /proc/$PID ]; thenkill -KILL $PID >/dev/null 2>&1usleep 100000echo "$prog 已停止"elseecho "$prog 未运行"fi
}restart() {stopstart
}getpid() {PID=`ps -ef|grep "consul agent -config-file"|grep -v grep|awk '{print $2}'`
}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)getpidif [ "$PID" != "" ] && [ -d /proc/$PID ]; thenecho "$prog (pid $PID) 正在运行..."elseecho "$prog 已停止"fi;;*)echo $"Usage: $0 {start|stop|restart|status}"
esac

5、编辑安装文件

vim install-consul.sh
#!/bin/bash
#
#install consul
if [ -z $1 ];thenecho "Usage: sh $(basename $0) IP" echo "Ex: sh $(basename $0) 192.168.1.1"exit -1
fi 
script_dir=$(cd $(dirname $0);pwd)
install_dir=/optsource $script_dir/../Loginfo.sh
if [ -d /opt/consul-node01/ ];thenlog_info "/opt/consul-node01 dir already exists!"exit 1
elsepackage_name="consul_1.15.2_linux_amd64.zip"
log_info "cp package,unzip package"
cp consul-node01 /etc/init.d/#test -d consul-node01 || mkdir consul-node01
#rm -rf consul-node01
unzip ../package/consul/$package_name -d $install_dir/consul-node01
log_error "package unzip error." cd $install_dir
log_info "get service ip addr."
if [ ! -n $1 ];thenip_addr=$(ifconfig ens32 | grep 'inet' | awk '{print $2}' | head -1)
elseip_addr=$1
fi
cat > ./consul-node01/config.json << EOF
{"datacenter": "consul01","data_dir": "consul01","log_level": "INFO","node_name": "consul-node01","server": true,"bootstrap_expect": 1,"client_addr": "127.0.0.1 $ip_addr","bind_addr": "$ip_addr","ui": true
}
EOFlog_info "add consul service scripts."
#启动脚本
cat >  ./consul-node01/consul-node01.sh << EOF
#!/bin/bash
cd /opt/consul-node01
./consul agent -config-file config.json
cd
EOFlog_error "add consul service scripts error"#增加开机启动项chmod +x ./consul-node01/consul-node01.shchmod +x /etc/init.d/consul-node01chkconfig --add consul-node01chkconfig consul-node01 on/etc/init.d/consul-node01 startlog_info "install consul done."
fi

6、请确保服务器有unzip命令,不然就会报无解压命令
在这里插入图片描述
7、yum安装解压工具

yum install -y unzip

8、执行安装命令

sh install-consul.sh 192.168.1.133 ip替换为自己ip

在这里插入图片描述
服务已正常运行,默认端口8500
在这里插入图片描述

相关文章:

linux centos consul1.15.2一键安装部署

consul原理、作用、安装相关内容 一、理论部分二、安装下载版本地址三、安装consul服务 一、理论部分 1、consul的原理 Consul的原理及作用可以归纳为以下几点&#xff1a; ①、基于Gossip协议的通信&#xff1a;Consul使用了基于Gossip协议的Serf实现来进行通信。 Gossip协议…...

速盾:dns和cdn区别?

DNS&#xff08;Domain Name System&#xff09;和CDN&#xff08;Content Delivery Network&#xff09;是互联网中两个不同但相互关联的服务。下面将详细解释DNS和CDN的区别。 功能和作用&#xff1a; DNS&#xff1a;DNS是将域名转换为IP地址的服务&#xff0c;它充当着互联…...

多目标跟踪中用到的求解线性分配问题(Linear Assignment Problem,LAP)C++

多目标跟踪中用到的求解线性分配问题&#xff08;Linear Assignment Problem&#xff0c;LAP&#xff09;C flyfish python实现,说的比这里详细 lapjv.h和lapjv.cpp代码在https://github.com/shaoshengsong/DeepSORT C代码调用 #include <iostream> #include <ve…...

Unity | Shader基础知识(第十四集:简单效果练习)

目录 前言 一、效果预览 1.弧形边缘光 二、效果制作 1. 制作弧形边缘光 2.弧形边缘光进阶 3.弧形边缘光调节渐变范围 4.边缘光突变 5.同心圆 三、加入世界坐标做效果 1.绘制结界 2.斑马球 3.效果合并 四、作者的碎碎念 前言 有粉丝建议说&#xff0c;让我继续更新…...

Vue48-ref属性

一、需求&#xff1a;操作DOM元素 1-1、使用原生的id属性 不太好&#xff01; 1-2、使用 ref属性 原生HTML中&#xff0c;用id属性给元素打标识&#xff0c;vue里面用ref属性。 给哪个元素加了ref属性&#xff0c;vc实例对象就收集哪个元素&#xff01;&#xff01;&#xff0…...

【SpringCloud学习笔记】RabbitMQ(中)

1. 交换机概述 前面《RabbitMQ上篇》我们使用SpringAMQP来演示如何用Java代码操作RabbitMQ&#xff0c;当时采用的是生产者直接将消息发布给队列&#xff0c;但是实际开发中不建议这么做&#xff0c;更加推荐生产者将消息发布到交换机(exchange)&#xff0c;然后由exchange路由…...

【C++】类和对象的引入

文章目录 前言一、类的定义二、类的访问控制与封装三、类的作用域四、类的实例化五、类的存储方式及大小计算六、隐藏的this指针 前言 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&…...

11.5.k8s中pod的调度-cordon,drain,delete

目录 一、概念 二、使用 1.cordon 停止调度 1.1.停止调度 1.2.解除恢复 2.drain 驱逐节点 2.1.驱逐节点 2.2.参数介绍 2.3.解除恢复 3.delete 删除节点 一、概念 cordon节点&#xff0c;drain驱逐节点&#xff0c;delete 节点&#xff0c;在对k8s集群节点执行维护&am…...

Java中线程的创建方式

一、继承Thread类&#xff0c;重写run方法 public class MyThread{public static void main(String[] args) {Thread threadDome new ThreadDome();threadDome.start();} }class ThreadDome extends Thread{Overridepublic void run() {for (int i 0; i < 5; i) {try {Th…...

猫头虎推荐20个值得体验的通用大模型

猫头虎推荐20个值得体验的通用大模型 &#x1f680; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于科技领域的自媒体博主。今天是周一&#xff0c;新的开始&#xff0c;我们来深入探讨一下当前最值得体验的通用大模型。这些AI模型不仅功能强大&#xff0c;而且在各自领…...

Novartis诺华制药社招综合能力性格动机问卷入职测评笔试题库答案及包过助攻

【华东同舟求职】由资深各行业从业者建立的一站式人才服务网络平台&#xff0c;现阶段目标是“提升全市场各行业岗位信息的流动性和透明度”。我们接受众多行业机构的直接委托发布&#xff0c;并尽力通过各种方法搜寻高价值岗位信息。事实上&#xff0c;我们以发现不为人知的优…...

Adam优化算法

Adam优化算法 Adam&#xff08;Adaptive Moment Estimation&#xff09;是一种用于训练深度学习模型的优化算法&#xff0c;由Diederik P. Kingma和Jimmy Ba在2014年提出。Adam结合了动量和自适应学习率的方法&#xff0c;具有高效、稳定和适应性强的特点&#xff0c;被广泛应…...

MYSQL 三、mysql基础知识 7(MySQL8其它新特性)

一、mysql8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本 &#xff0c;可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上 做了显著的改进与增强&#xff0c;开发者对MySQL的源代码进行了重构&#xff0c;最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度…...

git error: does not have a commit checked out fatal: adding files failed

git add net error: net/ does not have a commit checked out fatal: adding files failed这个错误是因为尝试将一个尚未被提交的文件夹添加到Git中。解决这个问题的方法是先将文件夹中的文件提交到Git仓库中&#xff0c;然后再将文件夹添加到Git中。 首先&#xff0c;需要进…...

Java Websocket分片发送

一、分片发送和接收(复杂) 如果数据量太大&#xff0c;需要分多次发送&#xff0c; 需要考虑数据划分和重组的问题。 二、具体思路 每次发送和接收用一个布尔值变量指定是否为最后一个分片。 三、具体使用 (一)字符串分片发送&#xff1a; sendText(文本&#xff0c; 布尔值)…...

vivado NODE、PACKAGE_PIN

节点是Xilinx部件上用于路由连接或网络的设备对象。它是一个 WIRE集合&#xff0c;跨越多个瓦片&#xff0c;物理和电气 连接在一起。节点可以连接到单个SITE_&#xff0c; 而是简单地将NETs携带进、携带出或携带穿过站点。节点可以连接到 任何数量的PIP&#xff0c;并且也可以…...

JavaEE、SSM基础框架、JavaWeb、MVC(认识)

目录 一、引言 &#xff08;0&#xff09;简要介绍 &#xff08;1&#xff09;主要涉及的学习内容 &#xff08;2&#xff09;学习的必要性 &#xff08;3&#xff09;适用学习的人群&#xff08;最好有这个部分的知识基础&#xff09; &#xff08;4&#xff09;这个基础…...

【漏洞复现】飞企互联-FE企业运营管理平台 treeXml.jsp SQL注入漏洞

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与020等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。其特色在于提供…...

Android基础-运行时权限

一、引言 随着智能手机和移动互联网的普及&#xff0c;Android操作系统作为其中的佼佼者&#xff0c;其安全性问题日益受到关注。为了保障用户数据的安全和隐私&#xff0c;Android系统引入了权限机制来管理和控制应用程序对系统资源和用户数据的访问。特别是在Android 6.0&am…...

postman断言及变量及参数化

1&#xff1a;postman断言 断言&#xff1a;判断接口是否执行成功的过程 针对接口请求完成之后&#xff0c;针对他的响应状态码及响应信息进行判断,代码如下&#xff1a; //判断响应信息状态码是否正确 pm.test("Status code is 200", function () { pm.response.…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...