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

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

相关推荐
uup22 分钟前
Java 中 ArrayList 线程安全问题
java
W***832023 分钟前
如何在 Ubuntu 22.04 上安装 MySQL
linux·mysql·ubuntu
uup24 分钟前
Java 中日期格式化的潜在问题
java
老华带你飞33 分钟前
海产品销售系统|海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·海鲜商城购物系统
2401_8370885038 分钟前
Redisson的multilock原理
java·开发语言
今天你TLE了吗44 分钟前
Stream流学习总结
java·学习
wanhengidc1 小时前
云手机中的数据通常存储在哪里?
运维·服务器·安全·web安全·智能手机
凌寒111 小时前
Linux(Debain)安装Redis、数据迁移
linux·运维·服务器·redis
⑩-1 小时前
基于Redis Lua脚本的秒杀系统
java·redis
0和1的舞者2 小时前
《网络编程核心概念与 UDP Socket 组件深度解析》
java·开发语言·网络·计算机网络·udp·socket