[原创]Docker学习记录: Shipyard+Swarm+Consul+Service Discover 搭建教程
网上乱七八糟的资料实在是太多了, 乱, 特别乱, 而看书呢, 我读了2本书, 一本叫做<<第一本 Docker 书>>, 另一本叫做<< Docker进阶与实战>> 在 服务发现这块讲的又不清不楚的, 坑死个人. 今天特意记录下, 并整理下来,以防自己哪天又忘了, 也给同在研究Docker 的朋友们一个安装教程.
我单位测试机一共四台, 各位可以起4个虚拟机对应, 假定分别是141,142,143,144. 都是 CentOS 6.x 系统.
Step1. 升级 CentOS 内核到3.10版本以上
首先升级141, 其它机器也是同样的方法.
访问elrepo.org, 按照网站上的提示一步步的安装public key.
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
然后141是 CentOS6.x, 所以选择安装CentOS 6.x 的版本
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
装好了后, 点击elrepo 网站最上面的Packages 菜单, 找到 kernel-lt
http://elrepo.org/tiki/kernel-lt
按照提示直接装最新版的 kernel long term 版本
yum --enablerepo=elrepo-kernel install kernel-lt
然后编辑/etc/grub.conf 文件, 找到 default=1, 改成 default=0, 然后重启 linux, 就搞定了!!!
其它服务器依照此方法分别都更新. 更新完了, 用下面的命令看是否内核正确调用了.
# uname -r
4.1.2-1.el6.elrepo.x86_64
Step2. 安装 Docker
访问 Docker 官网, 找到针对CentOS 的安装指示页面.
https://docs.docker.com/engine/installation/linux/centos/
安装官方的安装说明安装吧, 我就不为了显摆而复述了. 其它机器也是这样安装. 装好了请不要着急启动 docker deamon...
因为还有坑... 请执行下面的命令修改 Docker 的默认启动参数.
针对 ubuntu, 修改下面的文件:
vi /etc/default/docker
添加这么一行:
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
针对 CentOS, 则改为下面的这个文件:
vi /etc/sysconfig/docker
修改 other_args 为
other_args="-H unix:///var/run/docker.sock -H 0.0.0.0:2375"
然后你就可以启动Docker服务了.
service start docker
Step3. Consul
这就开始了, 因为有了docker,所以千万千万就不要老想着源代码安装了,那样太 low B 了, 恩. consul 的概念请阅读 consul 官网的资料(当然跟上面一样都是英文的).
https://www.consul.io/intro/getting-started/install.html
上面是原理, 看懂了就得了, 因为安装的话我们是用 Docker 来部署的, 恩, 经过本人各种尝试, 和各种百度以及翻墙 Google, 终于搭建起来了可以跨主机互联的服务发现, 下面是我的总结:
docker run -d \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 8600:53 \
-p 8600:53/udp \
-h dev141 \
--restart=always \
--name=consul progrium/consul -server -bootstrap -ui-dir=/ui -advertise 192.168.123.141 -client 0.0.0.0
解释下各个参数:
-d容器在后台运行, detached mode--restart=always重启模式, always 表示永远-p 8400:8400映射 consul的 rpc 端口8400-p 192.168.123.141:8500:8500映射到公共 IP 这样方便我们使用 UI 界面.-p 172.17.42.1:53:53/udp绑定udp 端口53(默认 DNS端口)在 docker0 bridge 地址上.-advertise 192.168.123.141服务对外公布的 IP, 这里特意设置为141, 否则 service 会显示为内部的容器的 IP 地址, 这样就访问不到了.-client 0.0.0.0consul 监听的地址.
然后咱们开始部署其它三台consul agent机器, 这次要增加 -join 参数, 先部署142, 假设142的 docker0的 bridge 地址依然是172.17.42.1
docker run -d --restart=always \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-h dev142 \
--name=consul progrium/consul -server -join 192.168.123.141 -advertise 192.168.123.142 -client 0.0.0.0
然后是143服务器
docker run -d --restart=always \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-h dev143 \
--name=consul progrium/consul -join 192.168.123.141 -advertise 192.168.123.143 -client 0.0.0.0
144
docker run -d --restart=always \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-h dev144 \
--name=consul progrium/consul -join 192.168.123.141 -advertise 192.168.123.144 -client 0.0.0.0
看看 consul 的节点是不是增加了.
Step4. Swarm+Shipyard
swarm的资料在 docker 官网上有给, 所以你可以先看看 docker 官网的介绍资料, 恩, 还是那句话, 你先看看, 部署的话不要用那个... 下面有讲.
https://docs.docker.com/swarm/overview/
恩, swarm 的比较知名的而且经过我实际测试的非常牛逼的docker管理系统 是 shipyard, 官网是
http://www.shipyard-project.com
看完shipyard 介绍请移步它的安装页面.
http://www.shipyard-project.com/docs/deploy/manual/
不要看着 Deploy 有个自动的就想去装自动那个啊, 自动那个是 etcd 不是 consul 的, consul 是 docker 官网推荐的, 阿里云啊, 新浪啊都是 consul 流派, 另外我看着名字好听也是倾向 consul 啊.
先在141服务器装 rethinkdb 数据库, 按照我给的命令来装哈, 要不然你会装不成功, 当然我这个是入门基础搭建教程, 不是原理教程, 先搭起来你再慢慢想呗?
docker run -d --restart=always --name shipyard-rethinkdb rethinkdb
然后下一步shipped 的 discovery 的就不要装了,还有 proxy 那个也不用装了.
咱们在141上继续装 swarm manager, 请参照下面的命令来安装, IP-OF-CONSUL-HOST替换为你的 consul 安装的 ip地址.
docker run -d -p 3375:3375 --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 consul://192.168.123.141:8500
然后在142,143,144上分别安装 swarm agent. ip-of-host是指你部署的机器的 ip 地址, 你在哪台机器上部署swarm agent容器你就设置哪个地址.
docker run -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr <ip-of-host>:2375 consul://192.168.123.141:8500
然后回到141机器部署 shipyard.
docker run -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8080:8080 shipyard/shipyard:latest server -d tcp://swarm:3375
然后你就可以在浏览器访问141这台机器的8080端口, 就能看到 shipyard 的登录页面拉, 默认账户是 admin, 密码shipyard.
Step5. Registrator
registrator 是基于 docker 的 sock 文件来做服务发现的一个第三方的方案, 我试了下, 使用起来非常简单. 在141-143机器上执行下面的命令分别安装registrtator
docker run -d --restart=always --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip <ip-of-host> consul://localhost:8500
参数解释:
-v /var/run/docker.sock:/tmp/docker.sock映射 docker 的 socket 到 container 中的对应位置, 这样 registration 就能监控有哪些服务启动了.<ip-of-host>registration 所属的主机 IP, 一定要设置此属性, 否则服务IP会显示为127.0.0.1consul://localhost:8500consul 绑定到本地的 consul 接口上
参考资料:
Docker DNS & Service Discovery with Consul and Registrator
装个 nginx, 挂个域名, 再装个 registry 啥的都是后续的玩法, 前面咱们已经搭起来玩的环境了, 我后面再写服务发现的例子, 这些够大家玩了, have fun, 自己体会吧.
本篇文章是我原创, 未经本人允许, 请勿转载. 谢谢!!
[原创]Docker学习记录: Shipyard+Swarm+Consul+Service Discover 搭建教程的更多相关文章
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- Docker学习记录--入门了解+安装
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...
- 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)
目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...
- Springboot学习记录1--概念介绍以及环境搭建
摘要:springboot学习记录,环境搭建: 官方文档地址:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/ht ...
- Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)
最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...
- docker学习之使用 DockerFile 构建镜像并搭建 swarm+compose 集群
题目要求 (1)将springboot应用程序打成jar包:Hot.jar (2)利用dockerfile将Hot.jar构建成镜像 (3)构建 Swarm 集群 (4)在 Swarm 集群中使用 c ...
- Docker 学习记录笔记(一)
Docker 一些简单的命令列表docker build -t friendlyhello . # Create image using this directory's Dockerfiledock ...
- docker学习记录1
起因 现在自己学习微服务,服务器越来越多,虽然自己写了一些shell脚本来安装需要的软件,比如mysql,redis,jdk等等,但是还是好麻烦.希望学习docker能够快速安装部署这些东西. 记录一 ...
- Docker 学习记录
docker logs 查看日志 docker logs 容器id docker logs -f 容器id 这次命令后面添加了一个新的标识 -f. 和 tail -f 类似, docker logs ...
随机推荐
- H5输入框在输入信息的时候 页面会变形 并且在页面不变形的时候 键盘会遮挡 输入框的解决办法
$(document).ready(function () { $('body').css({'height':$(window).height()})});//这行是解决输入框在输入信息弹出键盘后页 ...
- 『C++』Temp_2018_12_06
#include <iostream> #include <string> using namespace std; class Type{ public: string Na ...
- python3中sys.argv[]小记
1.python3中sys.argv[]用于传递程序外部的参数,外部一般指命令行输入的参数,argv[]所传递的参数实质上是一个列表,其第一个元素为程序本身. 2. sys.argv[] #传入的参数 ...
- Django的MVT的思路
1.先上两张图片 2.我的理解 view在MVT框架里面,起到的是中间调度的作用. a.在diango里面有个关键性路径的配置 就是在django2.0前的url和在2.0后的path. 为避免一个项 ...
- C# 发送Http协议 模拟 Post Get请求
1.参数 paramsValue的格式 要和 Reques.ContentType一致, 如果 contentype "application/x-www-form-urlencoded& ...
- 帝国cms发布信息时替换正文IMG图片标签里的ALT内容
帝国cms发布信息时替换正文IMG图片标签里的ALT内容 在 e/class/userfun.php 里面增加 //替换正文IMG里的ALT内容 function user_imgalt($mid,$ ...
- 运用busybox构建最小根文件系统
平台:vmware下ubuntu14.04前期准备:安装交叉编译环境arm-linux-gcc-4.5.1;下载完成BusyBox 1.23.2一.busybox构建1.make menuconfig ...
- HDOJ:1533-Going Home(最小费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1533 解题心得: 第一次写最小费用流的题,去hdoj上找了一个入门级题目,建图比较简单,用了spfa和 ...
- uCrop 源码剖析
GitHub: uCrop, 版本为 2.2.2 主要是探究一下内部对于图片按比例的裁剪以及压缩, 应该会更很长一段时间 疑惑点 这里记下一些源码分析过程中遇到的疑惑点 sample/src/main ...
- Address already in use: JVM_Bind,tomcat启动异常
严重: StandardServer.await: create[8050]: java.net.BindException: Address already in use: JVM_Bind tom ...