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 查看集群成員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM