docker部署consul集群

小咪咪 2022-12-04 01:17 273阅读 0赞

通过docker部署consul集群。最新版本:1.8.3

官方Dockerfile:https://github.com/hashicorp/docker-consul/blob/master/0.X/Dockerfile

  1. FROM alpine:3.12
  2. LABEL org.opencontainers.image.authors="Consul Team <consul@hashicorp.com>"
  3. ENV CONSUL_VERSION=1.8.3
  4. ENV HASHICORP_RELEASES=https://releases.hashicorp.com
  5. RUN addgroup consul && \
  6. adduser -S -G consul consul
  7. RUN set -eux && \
  8. apk add --no-cache ca-certificates curl dumb-init gnupg libcap openssl su-exec iputils jq libc6-compat && \
  9. gpg --keyserver pgp.mit.edu --recv-keys 91A6E7F85D05C65630BEF18951852D87348FFC4C && \
  10. mkdir -p /tmp/build && \
  11. cd /tmp/build && \
  12. apkArch="$(apk --print-arch)" && \
  13. case "${apkArch}" in \
  14. aarch64) consulArch='arm64' ;; \
  15. armhf) consulArch='armhfv6' ;; \
  16. x86) consulArch='386' ;; \
  17. x86_64) consulArch='amd64' ;; \
  18. *) echo >&2 "error: unsupported architecture: ${apkArch} (see ${HASHICORP_RELEASES}/consul/${CONSUL_VERSION}/)" && exit 1 ;; \
  19. esac && \
  20. wget ${HASHICORP_RELEASES}/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_${consulArch}.zip && \
  21. wget ${HASHICORP_RELEASES}/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_SHA256SUMS && \
  22. wget ${HASHICORP_RELEASES}/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_SHA256SUMS.sig && \
  23. gpg --batch --verify consul_${CONSUL_VERSION}_SHA256SUMS.sig consul_${CONSUL_VERSION}_SHA256SUMS && \
  24. grep consul_${CONSUL_VERSION}_linux_${consulArch}.zip consul_${CONSUL_VERSION}_SHA256SUMS | sha256sum -c && \
  25. unzip -d /bin consul_${CONSUL_VERSION}_linux_${consulArch}.zip && \
  26. cd /tmp && \
  27. rm -rf /tmp/build && \
  28. gpgconf --kill all && \
  29. apk del gnupg openssl && \
  30. rm -rf /root/.gnupg && \
  31. consul version
  32. RUN mkdir -p /consul/data && \
  33. mkdir -p /consul/config && \
  34. chown -R consul:consul /consul
  35. RUN test -e /etc/nsswitch.conf || echo 'hosts: files dns' > /etc/nsswitch.conf
  36. VOLUME /consul/data
  37. EXPOSE 8300
  38. EXPOSE 8301 8301/udp 8302 8302/udp
  39. EXPOSE 8500 8600 8600/udp
  40. COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
  41. ENTRYPOINT ["docker-entrypoint.sh"]
  42. CMD ["agent", "-dev", "-client", "0.0.0.0"]

consul容器启动时,agent将从 /consul/config 中读取配置JSON文件,数据将保留在 /consul/data 中,可以此进行存储持久化。


这里启动4个Consul Agent。其中3个Server(选举出一个leader),1个Client。

  • 主机说明:






























系统 ip 角色
CentOS 7.8 192.168.30.128 Server
CentOS 7.8 192.168.30.129 Server
CentOS 7.8 192.168.30.130 Server
CentOS 7.8 192.168.30.131 Client
  • 拉取镜像:

所有节点拉取镜像,

  1. mkdir -p /consul/{ config,data}
  2. docker pull consul
  • 集群部署:

第一个server启动,

  1. docker run -d --name=consul-server1 --net=host -e CONSUL_BIND_INTERFACE=ens33 -v /consul/config:/consul/config -v /consul/data:/consul/data consul:latest agent -server -node=agent128 -bootstrap-expect=3 -client=0.0.0.0 -ui
  2. docker exec consul-server1 consul members
  3. Node Address Status Type Build Protocol DC Segment
  4. agent128 192.168.30.128:8301 alive server 1.8.3 2 dc1 <all>

剩下两个Server启动并加入集群,

  1. docker run -d --name=consul-server2 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server -node=agent129 -client=0.0.0.0 -join 192.168.30.128
  2. docker run -d --name=consul-server3 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server -node=agent130 -client=0.0.0.0 -join 192.168.30.128

Client启动并加入集群,

  1. docker run -d --name=consul-client1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -node=agent131 -client=0.0.0.0 -join 192.168.30.128
  • 查看集群:

    docker exec consul-server1 consul members

    Node Address Status Type Build Protocol DC Segment
    agent128 192.168.30.128:8301 alive server 1.8.3 2 dc1
    agent129 192.168.30.129:8301 alive server 1.8.3 2 dc1
    agent130 192.168.30.130:8301 alive server 1.8.3 2 dc1
    agent131 192.168.30.131:8301 alive client 1.8.3 2 dc1

  • 访问ui:

访问192.168.30.128:8500/ui

在这里插入图片描述

consul集群部署完成。


发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Docker搭建Consul

    微服务管理--Docker搭建Consul集群 一台主机上搭建Consul集群并测试 借助Docker容器,已经启动了一个server节点,并能够与之通信。 接下来

    相关 Consul部署

    Consul介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul 是分布式的、高可用的、可横向扩展的。 官网

    相关 consul部署

    consul的原理 Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性: 服务发现以及注册: 当服务Pr