Consul 集群搭建
    一、安装 Consul
    1、Consul的官网下载地址:https://www.consul.io/downloads.html ,下载后解压就是一个可执行的二进制文件consul。建议使用我们自己制作好的 Consul 的压缩包,解压后包含了所有的文件,可直接使用。下载地址:

    consul_1.0.1_linux_amd64.zip

    2、配置环境变量;

    3、检查 Consul 是否可用:

    [root@localhost ~]# consul
    Usage: consul [—version] [—help] []

    Available commands are:
    agent Runs a Consul agent
    catalog Interact with the catalog
    event Fire a new event
    exec Executes a command on Consul nodes
    force-leave Forces a member of the cluster to enter the “left” state
    info Provides debugging information for operators.
    join Tell Consul agent to join cluster
    keygen Generates a new encryption key
    keyring Manages gossip layer encryption keys
    kv Interact with the key-value store
    leave Gracefully leaves the Consul cluster and shuts down
    lock Execute a command holding a lock
    maint Controls node or service maintenance mode
    members Lists the members of a Consul cluster
    monitor Stream logs from a Consul agent
    operator Provides cluster-level tools for Consul operators
    reload Triggers the agent to reload configuration files
    rtt Estimates network round trip time between nodes
    snapshot Saves, restores and inspects snapshots of Consul server state
    validate Validate config files/directories
    version Prints the Consul version
    watch Watch for changes in Consul

    [root@localhost ~]#
    如果出现上面这样代表consul是没问题的。

    二、启动 Consul 第一个Server Agent
    1、启动脚本

    consul agent -server -ui -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &
    2、配置文件 consul.d/agent-config.json 内容如下:

    {
    “ports”: {
    “dns”: 8600,
    “http”: 8500,
    “serf_lan”: 8301,
    “serf_wan”: 8302,
    “server”: 8303
    },
    “bootstrap_expect”: 3,
    “bind_addr”: “192.168.10.218”,
    “client_addr”: “192.168.10.218”,
    “data_dir”: “/app/newgetui/consul/consul_1.0.1_linux_amd64/data”,
    “datacenter”: “dc1”,
    “node_name”: “consul-agent-1”,
    “enable_script_checks”: true
    }
    三、启动 Consul 第二个Server Agent
    1、启动脚本

    consul agent -server -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &
    2、配置文件 consul.d/agent-config.json 内容如下:

    {
    “ports”: {
    “dns”: 8600,
    “http”: 8500,
    “serf_lan”: 8301,
    “serf_wan”: 8302,
    “server”: 8303
    },
    “bootstrap_expect”: 3,
    “bind_addr”: “192.168.10.221”,
    “client_addr”: “192.168.10.221”,
    “retry_join”: [
    “192.168.10.218”
    ],
    “data_dir”: “/app/newgetui/consul/consul_1.0.1_linux_amd64/data”,
    “datacenter”: “dc1”,
    “node_name”: “consul-agent-2”,
    “enable_script_checks”: true
    }
    四、启动 Consul 第三个Server Agent
    1、启动脚本

    consul agent -server -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &
    2、配置文件 consul.d/agent-config.json 内容如下:

    {
    “ports”: {
    “dns”: 8600,
    “http”: 8500,
    “serf_lan”: 8301,
    “serf_wan”: 8302,
    “server”: 8303
    },
    “bootstrap_expect”: 3,
    “bind_addr”: “192.168.10.222”,
    “client_addr”: “192.168.10.222”,
    “retry_join”: [
    “192.168.10.218”
    ],
    “data_dir”: “/app/newgetui/consul/consul_1.0.1_linux_amd64/data”,
    “datacenter”: “dc1”,
    “node_name”: “consul-agent-3”,
    “enable_script_checks”: true
    }
    五、检查Consul Server集群是否启动成功
    [root@DevGETUI-1 log]# consul members -http-addr=192.168.10.218:8500
    Node Address Status Type Build Protocol DC Segment
    agent-1 192.168.10.142:8301 alive server 1.0.1 2 dc1
    agent-2 192.168.10.221:8301 alive server 1.0.1 2 dc1
    agent-3 192.168.10.218:8301 alive server 1.0.1 2 dc1
    [root@DevGETUI-1 log]#
    如果出现类似上面的信息说明 Consul 集群启动成功。

    浏览器访问http://192.168.10.218:8500/可以看到页面。

    六、启动Consul client Agent
    1、Consul client Agent 的部署规则是使用到 Consul 的模块就要在该机器上部署一个 client Agent。

    2、启动脚本:

    consul agent -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &
    3、配置文件 consul.d/agent-config.json 内容如下:

    {
    “ports”: {
    “dns”: 8600,
    “http”: 8500,
    “serf_lan”: 8301,
    “serf_wan”: 8302,
    “server”: 8303
    },
    “bind_addr”: “192.168.10.142”,
    “client_addr”: “192.168.10.142”,
    “retry_join”: [
    “192.168.10.218”
    ],
    “data_dir”: “/app/newgetui/consul/consul_1.0.1_linux_amd64/data”,
    “datacenter”: “dc1”,
    “node_name”: “consul-agent-client-1”,
    “enable_script_checks”: true
    }
    六、启动参数说明
    -server:此选项用于控制agent是否处于服务器或客户端模式。提供时,agent将充当Consul服务器。 每个Consul集群必须至少有一个服务器,理想的情况是每个数据中心不超过5个。服务器充当其他数据中心的网关,并根据需要转发流量。

    -ui:启用内置的Web UI服务器和所需的HTTP路由。

    -bootstrap-expect:数据中心预期的服务器数量,配置此值时,Consul 会等待指定数量的服务器可用,然后引导集群、leader 自动选举。需要与-server 模式一起。

    -bind:内部集群通信应该绑定的地址。 这是集群中所有其他节点都应该可以访问的IP地址。 默认情况下,这是“0.0.0.0”,这意味着Consul将绑定到本地计算机上的所有地址,并将第一个可用的私有IPv4地址通告给集群的其余部分。 如果有多个私有IPv4地址可用,Consul将在启动时退出并出现错误。 如果指定“[::]”,则Consul将公布第一个可用的公共IPv6地址。 如果有多个公共IPv6地址可用,则Consul将在启动时退出并出现错误。 Consul同时使用TCP和UDP,并使用相同的端口。 如果你有任何防火墙,一定要允许这两个协议。

    -config-dir:要加载的配置文件的目录。Consul将加载后缀为“.json”的所有文件。 加载顺序是按字母顺序排列的。 这个选项可以多次指定加载多个目录。 config目录的子目录不被加载。

    -data-dir:该选项为agent提供一个数据目录来存储状态。 这对于所有agent都是必需的。 该目录在重新启动时应该是持久的。 这对于在服务器模式下运行的agent尤其重要,因为它们必须能够保持集群状态。

    -datacenter:此选项控制运行 Agent 的数据中心。 如果未提供,则默认为“dc1”。同一个数据中心内的节点应该在一个局域网上。

    -dns-port:监听的DNS端口。这将覆盖默认端口8600。

    -enable-script-checks:这将控制是否在此agent上启用执行脚本的运行状况检查,并且默认为false,因此操作员必须选择允许这些脚本。如果启用,建议启用ACL以控制哪些用户可以注册新的检查来执行脚本。

    -http-port:要监听的HTTP API端口。这覆盖了默认端口8500.当将Consul部署到通过与HTTP端口进行通信的环境中时,该选项是非常有用的。

    -retry-join:类似于-join,但允许在第一次尝试失败时重试连接。这对于知道地址最终可用的情况很有用。 该列表可以包含IPv4,IPv6或DNS地址。

    -node:集群中此节点的名称。这在集群中必须是唯一的。默认情况下,这是机器的主机名。

    七、配置的优先级顺序
    1、命令行参数
    2、环境变量
    3、配置文件
    当从文件目录加载配置文件时,按照字母的字典顺序加载配置文件。例如basic_config.json优先于extra_config.json的加载。配置文件内容格式支持.hcl或.json,文件必须带.hcl或.json的后缀名。

    相同的配置后面的会覆盖前面的。