我最近正在做一个 新项目 ,来帮助大家搭建多个物理机跑裸机上的docker swarm集群。 在这个项目里, 我用脚本来实现一个Ambari集群, 使得搭建一个hadoop集群变的相当简单。 你可以通过一组异构的物理服务器来创建docker 集群, 而且可以随时间持续扩展。
针对Ambari的这些指令也可以扩展到其他有集群功能的服务上, 例如 Apache Tomcat, Apache Nifi, Apache Spark, Apache Storm等。 我所用的试验环境的说明 在此 。
裸机的docker swarm集群使用了多个物理服务器, 在这些机器上本机安装docker 和 swarm, 没有使用docker machine.
选择consul有3个原因:
- Go语言 确保你主机上已经有最新版的Go。如果你没有, go Dep和swarm将没法编译。
- Go Dep 根据指令来下载安装。在运行指令前你可能需要设置一组环境变量(GOROOT, GOCODE)
- Docker 根据你linux的发行版的指令来安装, docker版本至少是1.9+. 安装时你会安装一个初始化脚本然后你以访问服务的方式访问它。你将需要根据docker swarm安装的指令来修改docker swarm启动脚本。
- Docker Swarm 根据指令来下载安装。 如果你成功编译了swarm, 那么将${GOCODE}/bin下的可执行文件复制到/usr/bin下(也可以别的适当的标准目录)
- Consul 根据指令安装。 如果你不是将它部署在一个生产环境, 你就只需要装在一个host上。 确保你暴露了53端口用作DNS(官方网站上有说明)
Docker compose 与swarm一样, 你需要将可执行文件复制到/usr/bin/下
$export DOCKER_MANAGER=tcp://192.168.1.18:2376
$export OVERLAY_NETWORK=my-net
$export CONSUL=192.168.1.18
$ . ambari-functions
$ amb-start-cluster 5
$ get-swarm-host amb-server $ ubuntu-hp-jdavis
在我的环境中, ambari服务器的访问地址是
http://ubuntu-hp-jdavis:8182/#/login