zoukankan      html  css  js  c++  java
  • 使用nomad && consul && fabio 创建简单的微服务系统

    具体每个组件的功能就不详细说明了 nomad 一个调度工具,consul 一个服务发现,健康检查多数据中心支持的工具
    fabio 一个基于consul的负载均衡&&动态路由工具,对于集成的话,很简单就是定义简单的service tag 即可,格式为:
    urlprefix-/ 参考nomad 测试项目 https://github.com/rongfengliang/nomad-demo-template

    nomad 安装

    比较简单

    https://releases.hashicorp.com/nomad/0.8.4/nomad_0.8.4_linux_amd64.zip

    consul

    比较简单

    https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip

    fabio

    https://github.com/fabiolb/fabio/releases
    下载,配置环境变量即可

    启动服务

    • consul

      dev 模式

    consul agent --dev 
    • nomad

      dev 模式

    nomad agent --dev
    • fabio
    • consul 配置
    配置consul 地址,使用默认的localhost:8500
    一个参考配置
    # These two lines are example of running fabio with HTTPS certificates
    #proxy.cs = cs=lb;type=file;cert=/opt/fabio/certs.d/mydomain_com.ca-bundle.crt;key=/opt/fabio/certs.d/mydomain_com.key
    #proxy.addr = :443;cs=lb;tlsmin=tls11;tlsmax=tls12;tlsciphers="0xc02f,0x9f,0xc030,0xc028,0xc014,0x6b,0x39,0x009d,0x0035",#             :80
    proxy.addr = :9999
    proxy.header.tls = Strict-Transport-Security
    proxy.header.tls.value = "max-age=63072000; includeSubDomains"
    ui.addr = 10.185.20.180:9998
    ui.access = ro
    runtime.gogc = 800
    log.access.target = stdout
    log.access.format =  - - [] ""   ".Referer" ".User-Agent" "" "" "" ""
    log.access.level = INFO
    registry.consul.addr = 10.185.20.180:8500
    proxy.maxconn = 20000
    • 部署简单nomad 服务
    job "website" {
    datacenters = ["dc1"]
    type = "service"
    update {
    max_parallel = 1
    min_healthy_time = "10s"
    healthy_deadline = "3m"
    progress_deadline = "10m"
    auto_revert = false
    canary = 0
    }
    migrate {
    max_parallel = 1
    health_check = "checks"
    min_healthy_time = "10s"
    healthy_deadline = "5m"
    }
    group "website" {
    count = 1
    restart {
    attempts = 2
    interval = "30m"
    delay = "15s"
    mode = "fail"
    }
    ephemeral_disk {
    size = 300
    }
    task "graphql" {
    driver = "docker"
    config {
    image = "dalongrong/mygraphql"
    port_map {
    website = 80
    }
    }
    resources {
    cpu = 500 # 500 MHz
    memory = 256 # 256MB
    network {
    mbits = 10
    port "website" {}
    }
    }
    service {
    name = "graphql-website"
    tags = ["global", "website","graphql","urlprefix-/"]
    port = "website"
    check {
    name = "alive"
    type = "http"
    interval = "10s"
    path = "/"
    timeout = "2s"
    }
    }
    }
    }
    }
    

    参考界面

    • nomad
    • consul
    • fabio
    • 进行实例缩放
    group "website" {
    # The "count" parameter specifies the number of the task groups that should
    # be running under this group. This value must be non-negative and defaults
    # to 1.
    count = 3
    

    效果



    总结

    三个工具集成起来,开发部署,缩放,版本管理,灰度,如果集成了openresty、 coredns、envoy 的话如更简单。

    参考资料

    https://www.nomadproject.io/docs/
    https://fabiolb.net/quickstart/
    https://www.consul.io/docs/index.html
    https://github.com/rongfengliang/nomad-demo-template

  • 相关阅读:
    ORACLE11G 字符集更改(这里更改为AL32UTF8)
    linux 安装jdk1.8
    oracle的 listagg() WITHIN GROUP ()函数使用
    数据库事务中的隔离级别和锁以及spring @Transactional注解参数详解
    java读取Oracle中大字段数据(CLOB)的方法
    oracle常用函数_时间
    案例-todolist计划列表【添加计划】
    案例-todolist计划列表【显示列表】
    案例-todolist计划列表[基本代码]
    vue 阻止元素的默认行为
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/9303549.html
Copyright © 2011-2022 走看看