搭建consul cluster(三节点)

SpringCloud提供了Eureka作为服务注册中心,我们可以开箱即用,但是随着Eureka 2.0版本开源停止,我们不得不选择其他。对此,专家建议开发者尽快将相关业务迁移到Consul/ZooKeeper/Etcd 等工具上。

Consul使用一个完全不同的架构进行健康检测。Consul客户端可以运行在集群中的每一个节点上,而不是拥有服务器节点,这些Consul客户端属于一个gossip pool,gossip pool提供了一些功能,包括分布式健康检测。gossip协议提供了一个高效的故障检测工具,这个故障检测工具可以应用到任意规模的集群,而不仅仅是作用于特定的服务器组。同时,这个故障检测工具也支持在本地进行多种健康检测。与此相反,ZooKeeper的临时节点只是一个非常原始的活跃度检测。因为有了Consul,客户端可以检测web服务器是否正在返回200状态码,内存利用率是否达到临界点,是否有足够的数据存储盘等。此外,ZooKeeper会暴露系统的复杂性给客户端,为了避免ZooKeeper出现的这种情况,Consul只提供一个简单HTTP接口。

Consul为服务发现、健康检测、K/V存储和多数据中心提供了一流的支持。为了支持任意存储,而不仅仅是简单的K/V存储,其他系统都要求工具和lib库要率先建立。然而,通过使用客户端节点,Consul提供了一个简单的API,这个API的开发只需要瘦客户端就可以了, 而且,通过使用配置文件和DNS接口,开发人员可以建立完整的服务发现解决方案,最终,达到避免开发API的目的。

 

下面介绍一下如何搭建consul集群,原文链接: https://devopscube.com/setup-consul-cluster-guide/

1. 先准备三台linux服务器

假设ip分别为:

10.128.0.2,10.128.0.3,10.128.0.4

2.  如下端口保证可以互通: 阿里云如果是在专有网络是互通的,否则需要增加安全组配置

  • 8300  – TCP
  • 8301  – TCP & UDP
  • 8302  – TCP & UDP
  • 8400  – TCP
  • 8500  – TCP
  • 8600  – TCP & UDP

3.  下载consul

cd /usr/local/bin
sudo wget https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip

 

4. 解压,然后删除zip文件

sudo unzip consul_1.2.0_linux_amd64.zip
sudo rm -f  consul_1.2.0_linux_amd64.zip

5. 创建如下目录

sudo mkdir -p /etc/consul.d/scripts
sudo mkdir /var/consul

6. 生成连接的认证key

consul keygen

7. 在三个服务器上创建配置文件:

sudo vi /etc/consul.d/config.json

 

输入如下内容文件:

{
    "bootstrap_expect": 3,
    "client_addr": "0.0.0.0",
    "datacenter": "Us-Central",
    "data_dir": "/var/consul",
    "domain": "consul",
    "enable_script_checks": true,
    "dns_config": {
        "enable_truncate": true,
        "only_passing": true
    },
    "enable_syslog": true,
    "encrypt": "goplCZgdmOFMZ2Q43To0jw==",
    "leave_on_terminate": true,
    "log_level": "INFO",
    "rejoin_after_leave": true,
    "server": true,
    "start_join": [
        "10.128.0.2",
        "10.128.0.3",
        "10.128.0.4"
    ],
    "ui": true
}

其中"encrypt"内容用第6步生成的内容代替,“datacenter”可以自定义,但三台要保持一致

8. 创建一个consul服务

sudo vi /etc/systemd/system/consul.service

输入如下内容:

[Unit]
Description=Consul Startup process
After=network.target
 
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir /etc/consul.d/'
TimeoutStartSec=0
 
[Install]
WantedBy=default.target

重启系统daemon服务,

sudo systemctl daemon-reload

在三台服务器上启动服务:

sudo systemctl start consul

 

9. 检查服务是否正常

[devopscube@consul-1 ~]$ /usr/local/bin/consul members
Node      Address          Status  Type    Build  Protocol  DC          Segment
consul-1  10.128.0.2:8301  alive   server  1.2.0  2         us-central  <all>
consul-2  10.128.0.3:8301  alive   server  1.2.0  2         us-central  <all>
consul-3  10.128.0.4:8301  alive   server  1.2.0  2         us-central  <all>

 

10.通过UI访问

  http://<consul-IP>:8500/ui

比如: 

  http://35.238.163.87:8500/ui

 

 

附录: 如何搭建consul agent:  https://devopscube.com/hsetup-configure-consul-agent-client-mode/

posted @ 2019-05-14 17:47  跳刀不跳  阅读(1257)  评论(0编辑  收藏  举报