如何启动 Linux 上的 Consul 服务? (linux consul 启动)

Consul是一种开源的、分布式的服务发现和配置管理系统,它通常被用作微服务的治理工具。Consul可以自动监测网络中的服务,或者手动管理服务与节点之间的关系,同时支持基于DNS或者HTTP的服务发现方式。Consul运行在Linux上,本文将向你介绍如何在Linux系统上启动Consul服务。

步骤一:下载Consul

在Linux上安装Consul之前,首先需要从HashiCorp官网(https://www.consul.io/downloads.html)下载Consul的最新版本。可以选择适合你所使用的操作系统,比如Linux、macOS或者Windows。Consul还根据不同的CPU架构提供不同的下载版本,比如AMD64,ARM等。

可以运行以下命令下载Consul的最新版本:

“`

$ wget https://releases.hashicorp.com/consul/1.8.4/consul_1.8.4_linux_amd64.zip

“`

解压下载的Consul文件:

“`

$ unzip consul_1.8.4_linux_amd64.zip

“`

步骤二:编写Consul配置文件

Consul需要一个配置文件才能启动,可以通过以下命令创建一个配置文件:

“`

$ sudo mkdir /etc/consul.d

$ sudo vi /etc/consul.d/config.json

“`

在创建的配置文件中,加入以下内容:

“`

{

“datacenter”: “mydc”,

“data_dir”: “/opt/consul”,

“log_level”: “INFO”,

“node_name”: “node1”,

“server”: true,

“bind_addr”: “192.168.56.2”,

“bootstrap_expect”: 1,

“ui”: true

}

“`

各个配置项的意义如下:

– datacenter:用于定义Consul集群所在的数据中心名称。

– data_dir:用于存储Consul数据的本地目录。

– log_level:指定Consul日志级别。

– node_name:指定当前节点的名称。

– server:如果值为true,说明当前节点是个服务器节点。

– bind_addr:用于指定Consul节点的IP地址。

– bootstrap_expect:指定需要至少几个服务器节点才能成立Consul集群。

– ui:如果为true,说明启用Consul的Web UI。

步骤三:启动Consul服务

Consul的启动需要指定配置文件路径,使用以下命令启动Consul:

“`

$ sudo ./consul agent -ui -config-dir=/etc/consul.d/

“`

关于上述命令的参数:

– agent:启动Consul的命令,agent在Consul中表示节点、客户端或服务器。

– ui:启用Consul的Web初始化界面(UI)。

– -config-dir:指定Consul的配置文件目录。

启动后,Consul将显示以下日志:

“`

==> Starting Consul agent…

==> Consul agent running!

Version: ‘1.8.4’

Node ID: ‘d70a75da-b089-2633-4c4e-82b4e8a995c4’

Node name: ‘node1’

Datacenter: ‘mydc’ (Segment: ”)

Server: true (Bootstrap: false)

Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)

Cluster Addr: 192.168.56.2 (LAN: 8301, WAN: 8302)

Encrypt: Gossip: true, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false

“`

Consul已启动并正在运行.

步骤四:验证Consul服务

可以通过以下命令验证Consul服务是否已启动:

“`

$ curl http://localhost:8500/v1/catalog/services

“`

这里将返回一个空ON({}),因为还没有任何服务或节点注册到Consul中。

如果要验证是否成功注册了节点,可以在另一个终端中运行以下命令:

“`

$ sudo ./consul members

“`

这里应该会返回刚刚启动的Consul节点的信息。

在浏览器中打开以下地址可以进入Consul的Web UI:

“`

http://localhost:8500/ui/

“`

相关问题拓展阅读:

Consul集群故障恢复

公司服务器突然断电宕机,通电开机后Consul集群自启动完成,但是无法注册握冲核服务,界面可以打开,但是无法一直在Loading状态,无法查看Nodes,无法查看Key/Value。

查看服务日志后发现是Master没有被选举出来,一直在报错 No cluster leader 。初步诊断为Consul集群数据不同步或Docker重启后IP变动和之前注册在raft中的不一致。

执行命令 consul operator raft list-peers 后提示500错误,无法正确展示。

排查段掘后定位问题为

Docker重判尘启后IP变动和之前注册在raft中的不一致

导致Consul集群无法自行选举出Master,这种问题需要手动恢复才能解决。

官方对于该问题的解决方案

这个问题解决需要用到 data/raft/peers.json 来进行手动选举与节点同步

PS:这里需要注意, peers.json 有两种格式,具体写描述可以查看 data/raft/peers.info 其中有详细的描述

如果直接按照官方的方式去做,还是会起不来的,因为各个节点之间互相不通信,每个节点都会投自己一票,结果永远会是同票数,同票数就意味着需要重新进行投票选举,就会一直陷入死循环,所以要让其他节点主动放弃自己的投票权,只保留一个节点进行投票,这样才能选举出Master。将 non_voter 设置为true就不会参与选举了。

我的是 Raft Protocol Version 3使用如下ON。

参数解释

PS:这个文件只要放在任意一个节点上面就行了,无需所有节点都放

重启Consul,集群恢复。

linux consul 启动的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux consul 启动,如何启动 Linux 上的 Consul 服务?,Consul集群故障恢复的信息别忘了在本站进行查找喔。


数据运维技术 » 如何启动 Linux 上的 Consul 服务? (linux consul 启动)