Consul服务器配置

微服务带来最大的好处就是把整个大项目分割成不同的服务,运行在不同服务器上,实现解耦和分布式处理。微服务虽然有很多好处,但是也会有不好的一方面。任何事物都会有两面性,在微服务里面运维会是一个很大的难题,如果有一天我们的服务数量非常的多,然后我们又不知道哪一个服务在什么机器上。

可能会有人说这部分直接写在程序的配置里面就好了,当我们服务少的时候是可以这么做的,也允许这么做,但是在实际当中我们要尽量避免这么做,比如说我们某一个服务,地址换了,那么我们设计的相关代码就得修改重新部署;又或者说我们有一天上线一个新服务或者下线一个服务,这时候我们又得修改程序代码,这是非常不合理的做法。那么有没有什么可以解决这样的问题呢?这里就需要用到我们的服务注册和发现了。

结构对比

没有服务注册发现的结构

<center>没有服务发现的架构</center>

上面图片我们可以看到在没有服务注册发现的时候一个调用者需要维护多个服务的ip和端口,这是非常不好的做法,当我们服务进行调整的时候就有可能导致服务调用失败,还有服务器更换服务器,上下新服务,都会受到影响。将来某一个服务节点出现问题,排查对于程序和运维人员来说都是一场很大的灾难,因为不知道哪一个节点出了问题,需要每一台服务器的去排查。

而当我们有使用服务注册发现之后的结构体是什么样子的呢?

有服务注册发现的结构

<center>有服务注册发现的结构</center>

我们从上图可以发现,当我们有注册中心之后调用者不需要自己去维护所有服务的信息了,仅需要向注册中心请求获取服务,就可以拿到想要的服务信息。这样当我们的服务有所调整,或者上线下线服务,都要可以轻松操作,并且可以在注册中间检查到服务的健康情况,帮助运维人员快速定位到故障的服务器。

关于 Consul

Swoft 推荐使用的就是 Consul,Consul是一个使用go写的服务注册、发现、配置管理系统。

  • Agent:Agent是Consul集群中一个常驻后台的程序。Agent有两种模式,一种是服务端,一种是客户端。所有Agent都可以运行DNS或者HTTP接口,并且负责检查服务是否存活,和保持服务同步。
  • Client:Client是一种Agent的运行模式,把所有RPC转发到Agent服务器的代理者,客户端会在后台有一个用最小带宽消耗把请求转发到后端的Agent服务,减轻Agent服务器的压力。
  • Server:Server是另一种Agent的运行模式,包括使用Raft算法处理数据,维护集群状态,响应RPC的请求,与其他集群的server交换数据或者远程数据中心。
  • RPC:远程过程调用,这是一种允许客户端发出服务器请求的请求/响应机制。

以上是我们本次比较重要的一些概念性的东西。知道每一个组件每一个部分干嘛的我们看以下的配置才会简单,才会事半功倍。

在 Consul 里面有很多组件,在这里我们暂时使用一个组件就够了就是agent,对于 Consul 的安装也是非常简单的毕竟只有一个二进制文件包,所以直接下载就可以使用了。

安装步骤

1、登录官网进行下载,下载地址

wget https://releases.hashicorp.com/consul/1.2.1/consul_1.2.1_linux_amd64.zip
unzip consul_1.2.1_linux_amd64.zip

2、设置环境变量,如果不设置可以直接把consul执行文件移动到/usr/bin目录下

mv consul /usr/bin

ok, 安装成功后,我们接下来进行一些配置来启用consul

Server配置

单机配置

  • 服务器1,IP 192.168.1.100

这种方式适合用于搭建服务调试使用

consul agent -bootstrap-expect 1 -server -data-dir /data/consul -node=swoft01 -bind=0.0.0.0 -config-dir /etc/consul.d -enable-script-checks=true -datacenter=sunny -client=0.0.0.0 -ui

可以通过 http://192.168.1.100:8500 查看服务信息

集群配置

这种方式适用于生产环境

  • 服务器1,IP 192.168.1.100
consul agent -bootstrap-expect 2 -server -data-dir /data/consul -node=swoft01 -bind=0.0.0.0 -client=0.0.0.0 -config-dir /etc/consul.d -enable-script-checks=true -datacenter=sunny -client=0.0.0.0

上面这个命令是以服务端模式启动一个代理,进群有两个扩展机器,设置集群持久化数据存放在/data/consul0下面,节点名称是swoft01,绑定0.0.0.0地址,服务配置文件存放在/etc/consul.d,开启检查心跳,数据中心的名称是dc1,可访问的客户端地址是0.0.0.0

  • 服务器2,IP 192.168.1.110
consul agent -server -data-dir /data/consul -node=swoft02 -bind=0.0.0.0 -client=0.0.0.0 -config-dir /etc/consul.d -enable-script-checks=true -datacenter=sunny -join 192.168.1.100

  • 服务器3,IP 192.168.1.120
consul agent -server -data-dir /data/consul -node=swoft03 -bind=0.0.0.0 -client=0.0.0.0 -config-dir /etc/consul.d -enable-script-checks=true -datacenter=sunny -join 192.168.1.100

以上服务器2和服务3使用 -join 加入集群,并且使用同一个数据名称 sunny

Client配置

  • 服务器4,IP 192.168.1.130
consul agent -ui -data-dir /data/consul -node=swoft04 -bind=0.0.0.0 -config-dir /etc/consul.d -enable-script-checks=true -datacenter=sunny -ui -client=0.0.0.0 -join 192.168.1.100

客户端如果不使用-server就是客户端模式运行,其他参数同上,服务端和客户端都启动了之后可以在浏览器输入 http://192.168.1.130:8500 来查看信息

查看集群成员:

consul members

查看集群信息:

consul info

命令解析

更多命令解析

  • -bootstrap-expect 数据中心中预期的服务器数。不应提供此值,或者该值必须与群集中的其他服务器一致。提供后,Consul将等待指定数量的服务器可用,然后引导群集。这允许自动选择初始领导者。这不能与传统-bootstrap标志一起使用。此标志需要在服务端模式下运行。
  • -server 以服务端模式启动
  • -data-dir 数据存放位置,这个用于持久化保存集群状态
  • -node 群集中此节点的名称。这在群集中必须是唯一的。默认情况下,这是计算机的主机名。
  • -bind 绑定服务器的ip地址
  • -config-dir 指定配置文件服务,当这个目录下有 .json 结尾的文件就会加载进来,更多配置可以参考 配置模版
  • -enable-script-checks 检查服务是否处于活动状态,类似开启心跳
  • -datacenter 数据中心名称
  • -client 客户端可访问ip,包括HTTP和DNS服务器。默认情况下,这是“127.0.0.1”,仅允许环回连接。
  • -ui 开启web的ui界面
  • -join加入到已有的集群中

以上内容希望帮助到大家,需要更多文章可以关注公众号:PHP从入门到精通,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些PHP高级、架构视频资料和大厂PHP面试PDF免费获取,需要戳这里PHP进阶架构师>>>实战视频、大厂面试文档免费获取

k8s consul 服务发现_Swoft之服务注册发现Consul服务器配置相关推荐

  1. springcloud(十三):注册中心 Consul 使用详解

    原文链接 我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件 ...

  2. ASP.NET Core gRPC 使用 Consul 服务注册发现

    一. 前言 gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍 ...

  3. 分布式服务发现与注册中心 Consul 中文入门指南

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 基础概念 什么是注册中心 随着微服务理论发展的成熟,越来越多互联网公司采用微服务架构来支持业务发展.各个微服务之间 ...

  4. python consul配置中心_微服务注册发现配置中心-consul

    Consul详解 近期在微服务业务中用的注册中心,在此简单记录下以备后用. 一 概述 1.1 概念 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.Con ...

  5. 服务发现 注册中心 consul 的介绍、部署和使用

    什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片: 图中,客户端 ...

  6. consul 日志配置_微服务:服务注册发现+ API 网关+配置中心+服务跟踪+服务熔断...

    服务注册发现 服务注册就是维护一个登记簿,它管理系统内所有的服务地址.当新的服务启动后,它会向登记 簿交待自己的地址信息.服务的依赖方直接向登记簿要 Service Provider 地址就行了.当下 ...

  7. 微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx

    在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求. 微服务系统动辄上万个服务,而且还要动态伸缩.以人工写好的IP.Port 硬编码脚本的方式无法做到大规模自 ...

  8. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  9. .NET Core 使用 Consul 服务注册发现

    Consul是一个用来实现分布式系统服务发现与配置的开源工具.它内置了服务注册与发现框架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具,使用起来也较为简单 ...

最新文章

  1. 【07月01日】A股滚动市净率PB历史新低排名
  2. linux基础命令_2
  3. python 网盘多帐号_CuteOne:一款基于Python3的OneDrive多网盘挂载程序,带会员/同步等功能...
  4. Netflix如何节省92%视频编码成本?
  5. 函数_月隐学python第9课
  6. androidsdk里的android.bat和uiautomatorview.bat启动就闪退问题
  7. 亚马逊如何变成 SOA(面向服务的架构)?
  8. mysql适合什么阵列_如何选择最合适的RAID级别
  9. 2014-10-22 NOIP模拟赛
  10. 删除8848的mysearch
  11. 两条信号之间加电容_信号完整性SI读书笔记之一
  12. C#-老生常谈的 值类型与引用类型
  13. 【毕设狗】【单片机毕业设计】基于单片机的红外非接触测温设计-实物设计
  14. linux arm sbus,嵌入式ARM系列linux2.4配置makefile完全注释(2)
  15. 确定有限自动机DFA非确定有限自动机NFA
  16. 一个英文字母,一个中文各占多少字节?
  17. 14个python就业前景_python普通人学有什么用 就业前景和工资待遇怎么样
  18. 使用Retrofit的过程中遇到 type xxx.xxx.xxxdoes not have type parameters
  19. android qmui教程,QMUI-Android
  20. java高级进阶知识整理

热门文章

  1. 窗体的布局 1124
  2. 9206-吃货联盟 需求分析
  3. python-while循环-完成一个简单三角形
  4. python-json模块
  5. 统计mysql binlog日志总大小
  6. prometheus修改数据保留时间
  7. Splunk学习心得
  8. ESXi安全引导如何提升vSphere安全性?
  9. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用
  10. Windows 窗体重绘