三种安装方式
1、使用编译好的二进制文件进行安装
2、使用源码进行安装
3,在Kubernetes环境中安装
二进制方式安装
1,下载并安装
下载地址:consul_1.7.0_linux_amd64.zip
下载consul二进制格式的压缩包,解压后里面只有一个名为consul的二进制可执行文件,只需该文件的查找路径在系统的PATH中即可。
方法1:拷贝该文件,直接放入 /usr/local/bin/ 路径下
unzip consul_${CONSUL_VERSION}_linux_amd64.zip
sudo chown root:root consul
sudo mv consul /usr/local/bin/
consul --version
方法2:修改环境变量配置文件
例如在~/.bashrc 、vim /etc/profile中添加consul的访问路径,首先可以通通过以下指令查看当前的PATH环境变量的配置项
$ echo $PATH
以编辑“~/.bashrc”文件为例
export PATH=/path/to/consul:$PATH
执行以下命令使配置生效
source ~/.bashrc
2,验证安装
重新打开一个命令行窗口,输入以下指令
consul
如果安装正常,则会输出以下的内容
usage: consul [--version] [--help] <command> [<args>]
Available commands are:
agent Runs a Consul agent
event Fire a new event
3,运行Consul Agent
安装Consul后,需要启动Consul代理。本次将在开发模式下运行Consul,这种模式不安全,也不可扩展,但可以让您轻松体验Consul的大部分功能,而无需额外配置。
执行以下命令完成Agent的启动
consul agent -dev
警告:永远不要在生产中运行Consul的-dev模式。这个模式会快速启动一个单节点的Consul且不能数据持久化。
查看Consul成员信息
consul members
4,停止Consul Agent
使用以下指令关闭Consul Agent
consul leave
附:常用的几个简单指令
命令 | 说明 |
---|---|
consul agent -dev | 以开发模式运行Consul |
consul members | 检查Consul数据中心的成员 |
consul leave | 关闭Consul代理 |
5,使用服务注册
Consul服务搭建好之后通过提供服务定义或HTTP API注册一个服务。
1)通过配置文件
问价的后缀必须为“.json”或".hcl"才能被Consul所加载
方法1:通过“-config-file”参数制定服务配置
方法2:将服务配置文件放置到“-config-dir”目录下
consul agent -dev -config-dir /etc/consul.d
其中“/etc/consul.d”为自己创建的文件夹
一个Server的完整配置格式如下:
{
"service": {
"id": "redis",
"name": "redis",
"tags": ["primary"],
"address": "",
"meta": {
"meta": "for my service"
},
"tagged_addresses": {
"lan": {
"address": "192.168.0.55",
"port": 8000,
},
"wan": {
"address": "198.18.0.23",
"port": 80
}
},
"port": 8000,
"enable_tag_override": false,
"checks": [
{
"args": ["/usr/local/bin/check_redis.py"],
"interval": "10s"
}
],
"kind": "connect-proxy",
"proxy_destination": "redis", // Deprecated
"proxy": {
"destination_service_name": "redis",
"destination_service_id": "redis1",
"local_service_address": "127.0.0.1",
"local_service_port": 9090,
"config": {},
"upstreams": [],
"mesh_gateway": {
"mode": "local"
},
"expose": {
"checks": true,
"paths": [
{
"path": "/healthz",
"local_path_port": 8080,
"listener_port": 21500,
"protocol": "http2"
}
]
}
},
"connect": {
"native": false,
"sidecar_service": {}
"proxy": { // Deprecated
"command": [],
"config": {}
}
},
"weights": {
"passing": 5,
"warning": 1
},
"token": "233b604b-b92e-48c8-a253-5f11514e4b50",
"namespace": "foo"
}
}
服务定义必须包含名称(name ),并且可以选择提供id、标记(tags)、地址(address)、元(meta)、端口(port)、启用标记覆盖(enable_tag_override)和检查(check)。如果未提供,则将id设置为名称。所有服务都要求每个节点有一个唯一的ID,因此如果名称可能冲突,那么应该提供唯一的ID。
可以使用“services”在配置文件中同时提供多个服务定义
{
"services": [
{
"id": "red0",
"name": "redis",
"tags": [
"primary"
],
"address": "",
"port": 6000,
"checks": [
{
"args": ["/bin/check_redis", "-p", "6000"],
"interval": "5s",
"timeout": "20s"
}
]
},
{
"id": "red1",
"name": "redis",
"tags": [
"delayed",
"secondary"
],
"address": "",
"port": 7000,
"checks": [
{
"args": ["/bin/check_redis", "-p", "7000"],
"interval": "30s",
"timeout": "60s"
}
]
},
...
]
}
HCL格式为
services {
id = "red0"
name = "redis"
tags = [
"primary"
]
address = ""
port = 6000
checks = [
{
args = ["/bin/check_redis", "-p", "6000"]
interval = "5s"
timeout = "20s"
}
]
}
services {
id = "red1"
name = "redis"
tags = [
"delayed",
"secondary"
]
address = ""
port = 7000
checks = [
{
args = ["/bin/check_redis", "-p", "7000"]
interval = "30s"
timeout = "60s"
}
]
}
2)通过HTTP API动态注册服务
6,启动管理界面
这是最简单快速的启动方式,在启动consul时直接启动webui界面,跟上-ui参数参考以下示例,端口默认为8500,访问方式:8500/ui
[root@hp161 consul]# consul agent -dev -ui -client=0.0.0.0
==> Starting Consul agent...
Version: 'v1.7.0'
Node ID: '33935b63-f499-3c3d-3856-fbb47851bbab'
Node name: 'hp161'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
Consul UI
网友评论