Ubuntu 下载安装 Consul1.17.1

下载

shell 复制代码
wget https://releases.hashicorp.com/consul/1.17.1/consul_1.17.1_linux_amd64.zip

解压:

shell 复制代码
unzip -d consul_1.17.1_linux_amd64.zip /opt/module

将解压出的二进制文件移动到 /usr/local/bin 目录中以便在系统中全局使用:

shell 复制代码
sudo mv consul /usr/local/bin/

验证安装是否成功:

shell 复制代码
consul --version

启动

创建存储 Consul 数据目录以及存放配置文件的目录:

shell 复制代码
sudo mkdir -p /opt/module/consul-1.17.1/data
/opt/module/consul-1.17.1/conf

进入 /opt/module/consul-1.17.1/conf 配置文件目录,创建一个配置文件:

shell 复制代码
cd /opt/module/consul-1.17.1/conf
sudo touch base_conf.json

配置文件内容如下:

json 复制代码
{
    "datacenter": "dc",
    "data_dir": "/opt/module/consul-1.17.1/data",
    "log_level": "INFO",
    "node_name": "node73",
    "server": true,
    "bootstrap_expect": 1,
    "bind_addr": "192.168.10.73",
    "advertise_addr": "192.168.10.73",
    "client_addr": "0.0.0.0",
    "ui_config": {
        "enabled": true
      }
}

client_addr 配置项指定了 Consul 代理监听来自客户端请求的网络接口地址。

bind_addr 设置为 ip,设置成 hostname 会有问题。

为了让 Consul 能作为服务自动启动,我们需要创建一个 systemd 服务文件:

shell 复制代码
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
User=consul
Group=consul
ExecStart=sudo /usr/local/bin/consul agent -server -data-dir=/opt/module/consul-1.17.1/data -config-dir=/opt/module/consul-1.17.1/conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

执行以下命令启动 Consul 并设置随系统启动:

shell 复制代码
sudo systemctl enable consul
sudo systemctl start consul

你可以通过以下命令查看 Consul 服务状态(不分页):

shell 复制代码
sudo systemctl status consul --no-pager

为了方便启动、停止、查看 Consul 的状态,创建一个脚本 myConsul.sh,放到 /usr/local/bin 目录下(放在这个目录下是为了在任何路径都能使用 myConsul 这个脚本):

shell 复制代码
#!/bin/bash

case $1 in
"start"){
	sudo systemctl start consul
};;
"stop"){
    sudo systemctl stop consul
};;
"status"){
    sudo systemctl status consul --no-pager
};;
esac

访问 8500 端口就能看到 Consul 的页面了,使用 myConsul.sh start命令就可以启动 Consul 了。

服务出现红叉叉问题

这是因为注册的服务没有配置心跳检测,导致 Consul 认为服务是不健康的,需要在服务的配置中配置如下内容:

yaml 复制代码
spring:
  application:
    name: cloud-order-service
  cloud:
    consul:
      host: node73
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        heartbeat:
          enabled: true
        health-check-url: http://192.168.10.103:${server.port}/management/health
      config:
        profile-separator: '-'
        format: yaml
        watch:
          wait-time: 3

重启服务,然后就会正常了:

相关推荐
梵得儿SHI几秒前
Java 反射机制深度剖析:性能与安全性的那些坑
java·开发语言·安全·反射·动态代理·性能·反射机制
虫小宝7 分钟前
Java分布式架构下的电商返利APP技术选型与架构设计实践
java·分布式·架构
007php00710 分钟前
百度面试题解析:Zookeeper、ArrayList、生产者消费者模型及多线程(二)
java·分布式·zookeeper·云原生·职场和发展·eureka·java-zookeeper
Murphy_lx19 分钟前
Linux系统--信号(4--信号捕捉、信号递达)陌生概念篇
linux·运维·服务器
Asuncion00727 分钟前
Docker核心揭秘:轻量级虚拟化的革命
服务器·开发语言·docker·云原生
4Forsee38 分钟前
【Android】浅析 Android 的 IPC 跨进程通信机制
android·java
来旺1 小时前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
Json____1 小时前
使用node Express 框架框架开发一个前后端分离的二手交易平台项目。
java·前端·express
since �1 小时前
前端转Java,从0到1学习教程
java·前端·学习
詩句☾⋆᭄南笙1 小时前
Mybatis一对一、一对多
java·mybatis·resulttype·resultmap·一对多·一对一