广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.NetCore服务治理Consul搭建集群
  • 723
分享到

.NetCore服务治理Consul搭建集群

2024-04-02 19:04:59 723人浏览 安东尼
摘要

延续上一篇的话题继续,顺便放上一篇的传送门:点这里。 集群的必要性 consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管

延续上一篇的话题继续,顺便放上一篇的传送门:点这里。

集群的必要性

consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管理集群的consul挂掉了,那么相当于上下游应用都变成了瞎子,看不到也调不到。所以集群的必要性不用我说了吧?

Server & Client

生产环境下,可以选择上面两种模式,下面我就简称S端、C端。说说它俩有啥不一样:

S端:

  • 1、数量不宜过多,一般推荐3、5个,要求是奇数。
  • 2、持久化保存节点数据。
  • 3、多个S端之间是主从关系(Leader/Follower),Leader要额外负责监控各节点的健康并且同步给Follower。

C端:

  • 1、数量没限制。
  • 2、不保存节点数据。

相同点就是S端、C端都可以注册、查询。

Leader & Follower

这模式我简称主从好了,它只针对S端。Leader是根据Raft算法自动选举得出的,不用手动指定,所有的Follower接到信息以后,都要提交给Leader,然后Leader同步给其他的Follower。并且Leader要一直发心跳给所有的Follower证明“我还活着”,否则其他的Follower之间就要再选举出一个新的Leader了。这就导致S端最好不要扩展太多,否则你会怀疑人生。至于为什么要求S端数量是奇数,其实很好理解,偶数容易影响选举结果导致效率变低,比如两票对两票,谁来当Leader?其实去了解一下Raft算法就知道这里的主从怎么运行的,什么原理。我上个神器:戳这里,不用谢我。

S端

老规矩,还是用Docker。先跑三个起来:

docker run -d --restart=always --name=server1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 8600:8600 -h server1 consul agent -server -bind=0.0.0.0 -bootstrap-expect=3 -node=server1 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

docker run -d --restart=always --name=server2 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 9300:8300 -p 9301:8301 -p 9301:8301/udp -p 9302:8302/udp -p 9302:8302 -p 9400:8400 -p 9500:8500 -p 9600:8600 -h server2 consul agent -server -bind=0.0.0.0 -join=你服务器的IP -node=server2 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

docker run -d --restart=always --name=server3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 10300:8300 -p 10301:8301 -p 10301:8301/udp -p 10302:8302/udp -p 10302:8302 -p 10400:8400 -p 10500:8500 -p 10600:8600 -h server3 consul agent -server -bind=0.0.0.0 -join=你服务器的IP -node=server3 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

bootstrap-expect:集群所需S端的最小数量,低于这个数量无法选举出leader。

join:加入到哪个集群,需要目标服务器放通tcp8301端口,否则会出现这种情况

可以语句查看主从关系:

docker exec -t server1 consul operator raft list-peers

也可以直接进入页面查看主从关系,结果一样:

把现在的leader干掉的话,会自动选举一个新的leader出来:

server3成为了新的leader,而且只要它不挂,leader身份是不会转移的。比如我把server1启动以后,leader没有转移过去:

OK,现在S端已经是集群了,而且它们之间的数据都是互通共存的。验证一下:

server1新增键值,key=shenzhenma,value=hellow:

server2查看:

server3修改value=hellow world以后,server1查看:

C端

现在再来启动客户端:

docker run -d --restart=always --name=client1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 11300:8300 -p 11301:8301 -p 11301:8301/udp -p 11302:8302/udp -p 11302:8302 -p 11400:8400 -p 11500:8500 -p 11600:8600 -h client1 consul agent -bind=0.0.0.0 -retry-join=你服务器的IP -node=client1 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

想要多个客户端的话,改一下端口和名字就可以了,我这里跑了3个,如图:

和刚才的3个S端一起,这6个都是一体的,数据都会自动同步,任意节点注册修改数据都会在其他节点看到。

入口统一

我把集群弄好了,但是现在的集群还没有发挥作用。前几篇文章有讲服务注册,consul注册的时候需要一个固定的地址。集群有很多节点,每一个IP端口都不一样,如果下端只和其中一个节点产生联系,万一这个节点挂了,下端就失去consul的支持了,集群的作用也没发挥出来。所以给下端一个统一的入口是必要的,这里用Nginx的Upstream模式实现,修改下配置文件就行了:

upstream myconsul {
    server 42.XX.XX.64:8500;
    server 42.XX.XX.64:9500; 
    server 42.XX.XX.64:10500;
    server 42.XX.XX.64:11500;
    server 42.XX.XX.64:12500;
    server 42.XX.XX.64:13500;
} 

server{
    listen       88;
    server_name  localhost;
    location / {
        proxy_pass Http://myconsul;
    }
}

配置文件修改好重启一下,进去看看能不能访问:

OK,下端注册服务时,统一用这个地址就可以了。跑两个试试(下端代码就不发了,前面几篇文章有):

成功了!切换到其他consul节点看下能否正确展示:

很显然是OK的。基于我之前为服务配置的健康检查,最后来看下服务状态变化会不会同步给其他节点,比如我停掉其中一个:

变更的状态也很快同步到了其他节点。到这里为止,consul的集群就已经实现了,东西还是有点多的,如果实践遇到麻烦,欢迎讨论。

到此这篇关于.net core服务治理Consul搭建集群的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: .NetCore服务治理Consul搭建集群

本文链接: https://www.lsjlt.com/news/161737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NetCore服务治理Consul搭建集群
    延续上一篇的话题继续,顺便放上一篇的传送门:点这里。 集群的必要性 consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管...
    99+
    2022-11-12
  • .NetCore服务治理Consul自动扩展和服务调用
    今天有写文章的时间了,开心。延续上一篇的话题继续,顺便放上一篇的传送门:点这里。 服务调用 既然服务注册已经搞完了,那么现在就开始调用这些注册好的服务。先做一下准备动作,把consu...
    99+
    2022-11-12
  • 云服务器集群搭建
    云服务器是一种通过虚拟化技术,将服务器资源(包括计算、存储和网络)集中存储管理的服务。 云服务器主要分为两类:S3云(Sandy Frigg、Amazon Web Services 3)和G2云(Google Cloud Platform...
    99+
    2023-10-27
    集群 服务器
  • 云服务器搭建集群
    云服务器搭建集群的过程比较复杂,具体的步骤如下: 确定所需资源:首先需要明确所需云服务器的大小、类型和要求,并准备相应的硬件和软件。 安装必要的工具:接下来需要安装必要的工具,包括操作系统、网络设置、数据库管理等。 搭建集群:根据所需容...
    99+
    2023-10-26
    集群 服务器
  • 云服务器搭建hadoop集群
    要搭建一个hadoop集群,通常需要以下步骤: 购买或租用:在购买云服务器之前,需要先了解其支持的硬件环境和性能要求。如果您选择使用公共云,通常需要购买一个可用于构建Hadoop集群的虚拟机,或者租用一个公共云服务器提供的存储服务。 安...
    99+
    2023-10-27
    集群 服务器 hadoop
  • centos集群服务器怎么搭建
    搭建CentOS集群服务器需要以下步骤: 安装CentOS操作系统:在每个服务器上安装CentOS操作系统。可以选择最新版本的C...
    99+
    2023-10-24
    centos 服务器
  • 云服务器集群搭建教程
    选择合适的云服务器:首先需要考虑你的业务需要哪种类型的云服务器,例如企业级的云服务器或者是弹性云服务器等。根据你的业务需求选择最合适的云服务器。 安装云服务器:首先需要从阿里云官网上下载相应的云服务器操作系统和相关的云服务器管理软件,根据...
    99+
    2023-10-27
    集群 服务器 教程
  • 云服务器集群搭建方法
    一、云服务器配置 云服务器的配置是指在使用云服务器时需要具备的各种资源和服务,包括服务器硬件、操作系统、网络连接、存储空间、数据库、应用程序等。在搭建云服务器时,需要先选择适合自己的服务器硬件和操作系统,然后根据业务需求,配置好各种资源和...
    99+
    2023-10-27
    集群 服务器 方法
  • 云服务器集群搭建方案
    云服务器是一种基于互联网的服务器架构,它通过虚拟化技术将多台服务器的计算能力打包成一个大型的计算资源池,以供用户使用。云服务器具有高可靠性、高可扩展性和高可用性等特点,可以提供大规模的数据处理能力。 在搭建云服务器集群时,需要考虑以下几个...
    99+
    2023-10-27
    集群 服务器 方案
  • linux服务器中搭建redis6.0.7集群
    目录一、安装Redis源码安装:二、编译安装三、启动Redis四、配置主从五、redis-sentinel---哨兵模式六、redis cluster集群搭建环境准备安装redis 并配置redis-cluster七、r...
    99+
    2022-11-09
  • Windows10怎么搭建ElasticSearch集群服务
    这篇“Windows10怎么搭建ElasticSearch集群服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Window...
    99+
    2023-06-05
  • 微服务 & 云原生:搭建 K8S 集群
    为节约时间和成本,仅供学习使用,直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境:CentOS-7-x86_64-Minimal-2009 镜像,为方便起见,直接在 root 账户下...
    99+
    2023-09-08
    云原生 微服务 kubernetes 容器
  • 多服务器redis集群怎么搭建
    要搭建多服务器的Redis集群,可以按照以下步骤进行操作:1. 安装Redis:在每台服务器上安装Redis,并确保它们都能正常运行...
    99+
    2023-09-11
    redis 服务器
  • 一台云服务器怎么搭建集群
    要搭建一台云服务器集群,你需要先确定你的云服务器的配置和规模。你可以使用 PHP 或 Node.js 库来编写一个代码,来实现所需要的功能。 以下是一个简单的云服务器配置示例代码,用于在 AWS Web Services 中搭建一个 AW...
    99+
    2023-10-26
    一台 集群 服务器
  • VMware ESXI服务器虚拟化搭建集群
    目录摘要环境和工具准备服务器安装虚拟化 VMware ESXI创建虚拟机操作系统Windows server 2012 R2安装在Windows Server 2012 R2 上面安...
    99+
    2022-11-12
  • SpringCloud eureka(server)微服务集群搭建过程
    目录工作原理:eureka 高可用集群项目创建:Maven 依赖本地hosts文件修改启动服务测试工作原理: Spring Cloud框架下的服务发现Eureka...
    99+
    2022-11-13
  • 服务器集群搭建有哪些优势
    服务器集群搭建的优势有:1、可伸缩性较强,能向集群系统软件加上大量的服务器,实现服务器同时运用和数据库操作;2、可用性高,有避免系统...
    99+
    2023-02-08
    服务器集群 服务器
  • 一台云服务器可以搭建集群吗
    云服务器可以搭建集群,也就是说云服务器可以通过负载均衡技术将多个云服务器集合成一个集群,从而为用户提供更好的服务。 在使用云服务器集群的情况下,用户可以使用多台云服务器进行数据同步处理,以确保数据的一致性和安全性。云服务器可以实现多台服务...
    99+
    2023-10-26
    一台 集群 服务器
  • 一台云服务器怎么搭建集群的
    要搭建一个云服务器集群,您可以按照以下步骤进行: 确定您要使用多少台云服务器:首先,需要确定您需要使用的云服务器数量和所需容量。您可能需要将一台云服务器分配为多个虚拟实例。 选择云服务器供应商:在您需要使用云服务器之前,您需要选择供应商...
    99+
    2023-10-26
    一台 集群 服务器
  • 一台云服务器怎么搭建集群的服务器
    要搭建一个云服务器,通常需要准备以下几个步骤: 安装云服务器操作系统 云服务器操作系统需要支持多个云服务器操作系统(如Salesforce,Amazon,Microsoft等),可以使用虚拟主机或者镜像安装等方式进行安装。 安装云服...
    99+
    2023-10-26
    服务器 一台 集群
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作