Ubuntu 下载安装 Consul1.17.1
下载
wget https://releases.hashicorp.com/consul/1.17.1/consul_1.17.1_linux_amd64.zip
解压:
unzip -d consul_1.17.1_linux_amd64.zip /opt/module
将解压出的二进制文件移动到 /usr/local/bin
目录中以便在系统中全局使用:
sudo mv consul /usr/local/bin/
验证安装是否成功:
consul --version
启动
创建存储 Consul 数据目录以及存放配置文件的目录:
sudo mkdir -p /opt/module/consul-1.17.1/data
/opt/module/consul-1.17.1/conf
进入 /opt/module/consul-1.17.1/conf 配置文件目录,创建一个配置文件:
cd /opt/module/consul-1.17.1/conf
sudo touch base_conf.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 服务文件:
[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 并设置随系统启动:
sudo systemctl enable consul
sudo systemctl start consul
你可以通过以下命令查看 Consul 服务状态(不分页):
sudo systemctl status consul --no-pager
为了方便启动、停止、查看 Consul 的状态,创建一个脚本 myConsul.sh,放到 /usr/local/bin 目录下(放在这个目录下是为了在任何路径都能使用 myConsul 这个脚本):
#!/bin/bashcase $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 认为服务是不健康的,需要在服务的配置中配置如下内容:
spring:application:name: cloud-order-servicecloud:consul:host: node73port: 8500discovery:service-name: ${spring.application.name}heartbeat:enabled: truehealth-check-url: http://192.168.10.103:${server.port}/management/healthconfig:profile-separator: '-'format: yamlwatch:wait-time: 3
重启服务,然后就会正常了: