• consul部署多台Docker集群


    Consul

    1. 最近在学习Ocelot,发现里面集成Consul,所有部署一下多机版集群,后来发现网上都是在一台虚拟机中的Docker部署,而且大同小异,没有真正解释清楚。

    前提准备

    1. 4台Centos虚拟机,本人安装VM虚拟机,用复制镜像快速搭建环境。(需要脚本的话联系我)
    2. 第一台安装好后,把Docker安装好,设置docker开机启动,关掉防火墙,设置静态IP等。
    3. 然后用copy虚拟机,修改ip地址后,全部启动

      这些操作可自行百度

    Consul

    目前都是单数据中心,多数据中心后面更新,此篇仅供入门参考,如果有不对的地方欢迎指正

    1. Consul分client和server模式
    • client 负责注册服务,转发请求,没有持久化的功能 配置文件启动 ,会默认遍历所有/config/file 下的*.json文件
    • server 也可以注册服务,但是推荐client,能持久化数据,存放在 /config/data下

    在客户端模式下运行Consul Agent

    1. --net=host:docker内部对于虚拟机的来说也是localhost
    >如果主机上的其他容器也使用--net=host,这将是一个很好的配置,它还会将代理暴露给直接在容器外部的主机上运行的进程
    
    1. -bind:这是给其他consul server来加入集群的ip
    2. -join:加入集群
    3. -client:使用此配置,Consul的客户端接口将绑定到网桥IP,并可供该网络上的其他容器使用,但不能在主机网络上使用。

      Consul还将接受-client=0.0.0.0绑定到所有接口的选项。

    4. -bootstrap-expect 设置服务数量,当达到设定数量启动集群。-bind的这台机器成为leader
    5. -ui管理界面
    6. -h:设置node的名称,集群的服务器不能取同名的node名称
    7. CONSUL_BIND_INTERFACE :ifconfig查看,好像虚拟机的这个名称不一样,我的是ens33,还有叫eth0的。

    需要用到的命令

    1. Docker中Consul部署
    • docker inspect -f '{{.NetworkSettings.IPAddress}}' consul1查看容器内Consul1的ip
    • docker exec -t consul名称 consul members 查看集群成员
    • ifconfig 查看ip配置
    • /sbin/ifconfig ens33 | sed -n 's/.*inet (addr:)?([0-9.]{7,15}) .*/2/p'
    • docker run -d --name consul1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3  leader 服务
    • docker run -d --name consul2 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui  follower
    • docker run -d --name consul4 -h=node4--net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=false -client=0.0.0.0 -join=192.168.110.100 -ui client

    启动

    现有四台虚拟机,ip地址分别是:

    1. 192.168.110.100
    2. 192.168.110.101
    3. 192.168.110.102
    4. 192.168.110.103
      在第一台服务器中运行server作为leader
      docker run -d --name consul1 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3
      接下来三台台加入集群
      docker run -d --name consul2 -h=node2 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
      docker run -d --name consul3 -h=node3 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
      docker run -d -v /consulconfig:/config/file --name consul4 -h=node4 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=192.168.110.100 -ui

    如果需要挂载数据文件,请指定-data-dir

    查看状态

    • docker exec -t consul1 consul operator raft list-peers 查看投票状态
    • docker exec -t consul名称 consul members 查看集群成员
  • 相关阅读:
    Redis的安装和部署
    SaltStack应用grains和jinja模板-第四篇
    SaltStack部署配置Tomcat-第三篇
    python魔法方法、构造函数、序列与映射、迭代器、生成器
    python异常
    python类
    python之函数、参数、作用域、递归
    docker+openvswitch实现主机与容器的网络通信
    Docker网络和容器的通信
    docker命名空间、控制组及联合文件系统概念
  • 原文地址:https://www.cnblogs.com/gudanshiyigerendekuanghuan/p/10603516.html
Copyright © 2020-2023  润新知