可自动扩展的高可用Swarm集群EdgeScaler的搭建

本文详细介绍了如何使用Docker Swarm、Registrator、Etcd、Confd和HAProxy搭建可自动扩展的EdgeScaler集群系统。EdgeScaler适用于提供APP服务集群和开发人员测试环境。集群架构包括Swarm管理节点、工作节点、Confd和HAProxy,通过Etcd进行服务发现。文章还涵盖了集群搭建的每一步骤,包括环境准备、各组件的配置和启动。
摘要由CSDN通过智能技术生成

项目简介

随着虚拟化和容器技术的日趋成熟,Docker越来越受到人们的关注,目前Docker已经发展到1.10版本,并且已经可以在生产环境大规模部署。本文介绍EdgeScaler集群系统,使用Swarm+Docker+Registrator+Etcd+Confd+HAProxy搭建了一个可自动可扩展的docker集群。

应用场景

EdgeScaler能满足一下两种业务场景:
1. 提供APP服务器集群服务,并提供负载均衡,端口暴露,资源隔离等基本功能。
2. 为开发人员提供内部PaaS级的测试环境。

集群架构

在EdgeScaler中,我们使用swarm对集群进行管理,其架构如下:

EdgeScaler架构图

其中:

  • swarm管理集群可以使用主从节点提高管理节点高可用性,通过标准RESTFul API对管理需求提供服务。
  • 由于Docker属于系统级别的虚拟化隔离,其功能特性依然依赖宿主机,目前在隔离性方面还有待完善,所以在实际生成环境中会将docker host运行在虚拟机中,虚拟机网络可以根据不同情况配置成互相隔离的专用网络,形成局部的封闭环境,保护物理主机的正常运行。
  • 在本图中左侧虚拟机为单独的局域网络

组件描述

Swarm:版本号为1.1.2。Swarm是一个docker官方提供的服务,他可以将多个docker实例抽象成一个ip加端口的地址,供其他docker管理工具调用。
Docker:版本号为1.10.2,自1.9+版本以后docker支持overlay网络,此网络为swarm跨主机网络方案。
Registrator:为最新registrator镜像,Registrator为docker端口服务映射服务,它监听docker socket端口信息,并对信息进行整理,存入如Etcd这样的服务发现的K-V存储系统中。
Etcd:在分布式系统中,如何管理节点间的状态同样一直是一个难题,Etcd是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。
Confd: Confd是一个轻量级的配置管理工具,通过定期从etcd中读出关心数据,并更新本地配置文件,同时reload读取配置文件的应用。
HAProxy: HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。

集群搭建

环境准备

IP定义:
etcd_host:为发现服务集群IP地址
swarm_manager_host:为swarm管理节点IP地址
swarm_local_node_host:为swarm从节点本地IP地址

  1. Docker 安装并配置
    获取最新的docker程序

    curl -fsSL https://get.docker.com/ | sh

    在所有swarm节点中配置docker daemon监听配置,使用nohup命令使daemon后台运行。

    nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock –cluster-store etcd://etcd_host:2379 –cluster-advertise swarm_local_node_host:2375 &

    -H 代表daemon监听所有2375端口的网络请求,并监听本地客户端socket请求信息
    –cluster-store 指定发现服务系统
    –cluster-advertise 广播本地节点服务地址

    启动后,可运行如下命令测试

    docker version

  2. 获取swarm
    最简单的获取安装swarm方法是直接拉去swarm镜像:

    docker pull swarm

  3. Etcd集群搭建
    在所有节点上搭建etcd服务发现系统,可从https://github.com/coreos/etcd/releases下载最新版本的Etcd,并用如下shell脚本运行Etcd服务,推荐节点数目>3并且为奇数。

    NAME=infra0
    MASTER_NAME=infra0
    SLAVE_NAME_1=infra1
    SLAVE_NAME_2=infra2
    LOCAL_IP=10.192.33.92
    MASTER=10.192.33.34
    SLAVE_IP_1=10.192.33.92
    SLAVE_IP_2=10.192.33.94
    etcd -name $NAME -initial-advertise-peer-urls http://$LOCAL_IP:2380 \
             -listen-peer-urls http://$LOCAL_IP:2380 \
             -listen<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值