• Docker集群管理(二)—— docker+swarm+etcd+shipyard


    引言

    前一篇介绍如何简单的搭建一个可视化管理的docker集群,本篇将在此基础之上引入etcd发现服务。

    目的

    使用etcd发现服务解决swarm内置发现服务的不稳定问题。etcd采用raft算法,这里有篇容易理解的raft算法
    Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。

    • 简单:支持 curl 方式的用户 API (HTTP+JSON)
    • 安全:可选 SSL 客户端证书认证
    • 快速:单实例可达每秒 1000 次写操作
    • 可靠:使用 Raft 实现分布式

    安装etcd

    docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery docker.io/microbox/etcd -name discovery
    

    启动swarm manger

    docker run -ti -d -p 2376:2375 --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:2375 etcd://192.168.139.128:4001
    

    很容易发现,只是将原来的 token://xxx 换成了 etcd://xxx

    启动swarm agent,

    在每个docker节点分别执行,将当前docker节点加入到集群中:

    docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.128:2375 etcd://192.168.139.128:4001
    
    docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.129:2375 etcd://192.168.139.128:4001
    
    docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.130:2375 etcd://192.168.139.128:4001
    

    我们来看下集群中的节点:

    docker run --rm swarm list etcd://192.168.139.128:4001
    

    会报这个错误:“client: etcd cluster is unavailable or misconfigured,自然在shipyard中的节点、容器和镜像都是空的。这是因为防火墙的问题,在防火墙中添加4001端口

    firewall-cmd --zone=public --permanent --add-port=4001/tcp
    
    firewall-cmd --reload
    

    现在看看shipyard中是不是已经有了docker集群信息了.

    在集群中启动一个服务

  • 相关阅读:
    浅谈线段树
    并查集最简单讲解
    mysql索引原理深度解析
    算法、数据结构可视化
    php算法题---对称的二叉树
    php算法题---连续子数组的最大和
    Jsoup一个简短的引论——采用Java抓取网页数据
    宏定义详细信息
    解决java.sql.SQLException: ORA-01789: query block has incorrect number of result columns
    BZOJ 2435 NOI2011 道路建设 BFS/DFS
  • 原文地址:https://www.cnblogs.com/ikodota/p/docker_swarm_etcd_shipyard.html
Copyright © 2020-2023  润新知