參考:https://blog.csdn.net/achenyuan/article/details/80389410
gcp:
consul安裝目錄:/usr/local/bin/consul
consul配置目錄:/etc/consul.d
mac:
consul安裝目錄:/usr/local/bin/consul
consul配置目錄:/etc/consul.d
一、開發基本搭建
1.quick-start: consul agent -dev -http-port 8888 -ui -client 0.0.0.0
-dev 開發模式
-http-port 暴露http端口
-ui 開啟consulUI 默認開啟
-client 0.0.0.0 允許公網訪問
訪問 ip:8888/可以看到consul主界面
2.查看集群狀態
consul members
3.配置文件
使用-config-dir命令行參數,指定配置文件
就是指定加載置文件的目錄,該目錄下所有的以.json結尾配置文件加載進去,它的加載順序是根據26個字母的順序加進行加載配置文件的。目錄必需為consul.d,文件內容都是json格式的數據。默認后面文件定義配置會覆蓋前面文件定義的配置。
例如/etc/consul.d目錄下合建basic.json:
{
"ports": {
"http": 8888
}
}
consul agent -dev -config-dir /etc/consul.d/ -client 0.0.0.0
二、生產集群搭建
1.啟動server節點,並設為server-leader
consul agent -server -ui -bootstrap-expect=1 -config-dir=/tmp/consul.d -data-dir=/tmp/consul -node=gcp -advertise=35.220.183.116 -bind=0.0.0.0 -client=0.0.0.0
-server:服務器模式
-ui:能web-ui展示
-bootstrap-expect:server為1時即選擇server集群leader
-data-dir:consul狀態存儲文件地址
-node:指定結點名
advertise:本地ip地址(公網ip可以與不同內網的機器搭建集群,只是內網可以填內網ip)
-client:指定可訪問這個服務結點的ip
Version: 'v1.6.1'
Node ID: '2f25f9c0-f9d9-a857-1651-c451c9112a22'
Node name: 'gcp'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: true)
Client Addr: [0.0.0.0] (HTTP: 8888, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: IP (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
Cluster Addr集群地址是我們上面advertise指定的ip地址,8888是配置的tcp地址。
2.機器2(本地)server節點
consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul.d -node=mac-server -advertise=192.168.28.1 -bind=0.0.0.0 -client=0.0.0.0
advertise:192.168.28.1 vmvare的vmnet8地址
加入到gcp集群中:
consul join 公網ip
Error joining address '35.220.183.116': Unexpected response code: 500 (1 error occurred:
* Failed to join 35.220.183.116: dial tcp 35.220.183.116:8301: connect: connection refused
報這個錯的原因可能是防火牆的原因(gcp的部分端口不能開啟)。
在gcp的ports.json中配置LAN端口(LAN: 8301, WAN: 8302)serf_lan
dns : 默認8600.
http :默認8500.
https: 默認-1 (disabled).
serf_lan:默認8301.
serf_wan: 默認 8302.
server: 默認8300.
配置:
{
"ports": {
"http": 8888,
"serf_lan": 8889,
"serf_wan": 8890
}
}
Version: 'v1.6.1'
Node ID: '9eb7b273-8683-a67e-1a02-6077f014410f'
Node name: 'gcp'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: true)
Client Addr: [0.0.0.0] (HTTP: 8888, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: IP (LAN: 8889, WAN: 8890)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
可以看到LAN和WAN的ip已經修改:
Cluster Addr: IP (LAN: 8889, WAN: 8890)
再次執行:
consul join 公網ip