consul配置

参考: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


若子节点为unhealth状态,则无法下掉服务,需要先下掉节点

posted @ 2019-09-29 17:38  爬上巨人的肩膀  阅读(2647)  评论(0编辑  收藏  举报