zoukankan      html  css  js  c++  java
  • 搭建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/

  • 相关阅读:
    [TimLinux] myblog 创建第一个app
    [TimLinux] MySQL InnoDB的外键约束不支持set default引用选项
    [TimLinux] 养成一个习惯
    [TimLinux] myblog 页面Axure设计
    [TimLinux] MySQL 中的CASE/WHEN语法
    [TimLinux] Python Django myblog启动
    [TimLinux] Python 模块
    [TimLinux] JavaScript 获取元素节点的5种方法
    堆和栈的一点知识
    OpenCV2基础操作----直线、矩形、圆、椭圆函数的使用
  • 原文地址:https://www.cnblogs.com/cs99lzzs/p/10863591.html
Copyright © 2011-2022 走看看