zoukankan      html  css  js  c++  java
  • Windows10 上Docker 安装运行Consul

    背景简介

    Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全服务网格。 Consul需要数据平面并支持代理和本机集成模型。 Consul附带一个简单的内置代理,因此一切都可以开箱即用,但也支持第三方代理集成,如Envoy。

    Consul的主要特点是:

    • 服务发现:Consul的客户端可以注册服务,例如api或mysql,其他客户端可以使用Consul来发现给定服务的提供者。 使用DNS或HTTP,应用程序可以轻松找到它们所依赖的服务。

    • 运行状况检查:Consul客户端可以提供任意数量的运行状况检查,这些检查与给定服务(“是Web服务器返回200 OK”)或本地节点(“内存利用率低于90%”)相关联。运营商可以使用此信息来监控群集运行状况,服务发现组件使用此信息将流量路由远离不健康的主机。

    • KV存储:应用程序可以将Consul的分层键/值存储用于任何用途,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。

    • 安全服务通信:Consul可以为服务生成和分发TLS证书,以建立相互的TLS连接。可以使用意图来定义允许哪些服务进行通信。可以使用可以实时更改的意图轻松管理服务分段,而不是使用复杂的网络拓扑和静态防火墙规则。

    • 多数据中心:Consul支持多个数据中心。这意味着Consul的用户不必担心构建额外的抽象层以扩展到多个区域。

    Consul旨在对DevOps社区和应用程序开发人员友好,使其成为现代,有弹性的基础架构的理想选择。

    基于Docker On WSL2安装Consul

    docker run --publish 8600:8600 --publish 8500:8500 --publish 8300:8300 --publish 8301:8301 --publish 8302:8302 --name consul-01 --restart always 
    --volume /home/username/consul/data:/consul/data 
    --volume /home/username/consul/config:/consul/config 
    consul:latest 
    agent -server 
    -bootstrap-expect=1 
    -ui 
    -bind=0.0.0.0 
    -client=0.0.0.0
    

    其中,端口示意:

    • 8500端口,用于Consul的HTTP接口及Web UI界面。
    • 8600端口,用于Consul已注册服务的DNS服务。
    • 8300端口,用于同一数据中心内Consul Server的RPC通信。
    • 8301端口,用于同一数据中心内Consul Server的gossip serf lan通信。
    • 8302端口,用于不同数据中心内Consul Server的gossip serf wan通信。

    其中,参数示意:

    • –net=host docker参数, 使得docker容器越过了net namespace的隔离,免去手动指定端口映射的步骤
    • -server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求
    • -advertise 将本机私有IP传递到consul
    • -retry-join 指定要加入的consul节点地址,失败后会重试, 可多次指定不同的地址
    • -client 指定consul绑定在哪个client地址上,这个地址可提供HTTP、DNS、RPC等服务,默认是>127.0.0.1
    • -bind 绑定服务器的ip地址;该地址用来在集群内部的通讯,集群内的所有节点到地址必须是可达的,>默认是0.0.0.0
    • allow_stale 设置为true则表明可从consul集群的任一server节点获取dns信息, false则表明每次请求都会>经过consul的server leader
    • -bootstrap-expect 数据中心中预期的服务器数。指定后,Consul将等待指定数量的服务器可用,然后>启动群集。允许自动选举leader,但不能与传统-bootstrap标志一起使用, 需要在server模式下运行。
    • -data-dir 数据存放的位置,用于持久化保存集群状态
    • -node 群集中此节点的名称,这在群集中必须是唯一的,默认情况下是节点的主机名。
    • -config-dir 指定配置文件,当这个目录下有 .json 结尾的文件就会被加载,详细可参考https://www.consul.io/docs/agent/options.html#configuration_files
    • -enable-script-checks 检查服务是否处于活动状态,类似开启心跳
    • -datacenter 数据中心名称
    • -ui 开启ui界面
    • -join 指定ip, 加入到已有的集群中

    通过http://192.168.1.4:8500/可以查看Web管理后台。

    查看已存在节点的IP

    docker inspect --format='{{.NetworkSettings.IPAddress}}' consul-01
    

    新建第二个节点,加入主节点

    docker run --publish 8501:8500 --name consul-02 --restart always 
    --volume /home/username/consul-02/data:/consul/data 
    --volume /home/username/consul-02/config:/consul/config 
    consul:latest 
    agent -server 
    -ui 
    -bind=0.0.0.0 
    -client=0.0.0.0 
    -join 172.17.0.7
    

    新建第三个节点,加入主节点

    docker run --publish 8502:8500 --name consul-03 --restart always 
    --volume /home/username/consul-03/data:/consul/data 
    --volume /home/username/consul-03/config:/consul/config 
    consul:latest 
    agent -server 
    -ui 
    -bind=0.0.0.0 
    -client=0.0.0.0 
    -join 172.17.0.7
    

    查看Consul集群信息

    docker exec -it consul-01 consul members
    

    资源

  • 相关阅读:
    django.template.exceptions.TemplateDoesNotExist: login.html 错误处理
    pycharm 如何进行全部搜索
    python调用 sshpass
    sshpass 使用方法
    ssh 绕过The authenticity of host '*.*.*.*' can't be established 直接输入密码
    Django深入----django.db.transaction
    django深入----django.db.transaction
    Flask+ Angularjs 实例: 创建博客
    Python --写excel
    Python --链接Mongodb
  • 原文地址:https://www.cnblogs.com/craigtaylor/p/13989921.html
Copyright © 2011-2022 走看看