docker进阶-利用dcoker Swarm搭建简单集群
什么是Swarm
在介绍Swarm之前我们要说一下什么Docker三剑客?
- Docker-Machine:负责在多种平台上快速安装 Docker 环境。
- Docker-Compose:Docker官网编排工具。负责快速的部署分布式应用
- Docker-Swarm: Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。
Swarm翻译中文的意思是蜂群的意思。大家都知道蜂群是很很多多蜜蜂在一起。里面有蜂王和工蜂,各司其职。那么在我们技术界把许许多多的Docker组织在一起,这样就是Docker集群。Swarm就是管理这些Docker的工具。同蜂群一样。也有蜂王(Master节点)工蜂(Node节点)各司其职。蜂王能调度和指挥所有的工蜂来完成各种任务。实现整个蜂群的正常运转。
为什么要用Swarm
因为在生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行。 这样能保证我们的服务可以做到不怠机。长时间稳定的运转下去。虽然Docker集群管理工具很多,有比较有名的Kubernetes和Mesos。但是我们为什么要选择Swarm呢?。首先对于一个刚刚入门和接触Docker的人来说。最好的学习资料是官方文档。Swarm是原生的,同时也是最简单,最易学,最节省资源的Docker集群管理工具。所以我相信Swarm不会让我失望的。
关于Machine
由于我们等会要使用Machine来创建节点。所以介绍Machine的基本使用。
Machine安装
#由于MacOs在安装docker的时候。已经默认安装Machine.这里根据官网给出的Linux安装命令
sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
#添加权限
sudo chmod +x /usr/local/bin/docker-machine
#查看当前Machine版本
docker-machine -v
#安装MacOs虚拟机xhyve驱动。也可以跳过
brew install docker-machine-driver-xhyve
使用Machine 创建虚拟机
使用Machine创建4个虚拟机
#create命令后面可以添加自定义参数.可以通过docker-machine create --driver virtualbox --help查看
#创建Master节点.这里dm因为我使用自定义命令。等同于docker-machine
dm create Master
#可以通过ls命令查看当前虚拟机.然后我们分别建立3个node节点,node1,node2,node3
dm create Node1
dm create Node2
dm create Node3
#创建然后通过ls查看
dm ls
######################
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
Master - virtualbox Running tcp://192.168.99.100:2376 v18.03.0-ce
Node1 - virtualbox Running tcp://192.168.99.102:2376 v18.03.0-ce
Node2 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce
Node3 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce
到此4台虚拟机已经创建完毕。下面开始使用Swarm搭建一个集群。
Swarm实践
创建集群
首先我们需要登录到Master这台虚拟机。创建初始化一个集群。
#登录到Master
dm ssh Master
#初始化集群。注意这里由于是虚拟机。有多个ip。所有必须制定ip.否则会报错.
docker swarm init --advertise-addr 192.168.99.100
#这里会提示创建manager成功。如果要加入worker。只需要在别的主机里面输入它已经生成的号的命令输入就可以了。
docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377
#登入Node1
dm ssh Node1
#输入上面命令。Node2和Node3操作一样
docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377
#登录Master,查看状态
dm ssh Master
#查看集群
docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
0vol8fdjksmabvmgx0x60ncyd * Master Ready Active Leader 18.03.0-ce
jnuun47ezvi0bl1iz1ccxmgto Node1 Ready Active 18.03.0-ce
ye6ghynu19tvdkf51kof13w6y Node2 Ready Active 18.03.0-ce
x84fqdefi4461gf087qcb9nmt Node3 Ready Active 18.03.0-ce
这里会看到4台虚拟机。其中Master台是Leader (就是我们的蜂王),剩下的3台就是我们的worker(工蜂)到这里我们一个简单的小集群就搭建完毕了。
运行服务
我们已经搭建好了集群。但是要怎么样通过Master管理我们的worker节点呢?
首先我们需要登录到Master这台虚拟机。然后通过这个台虚拟机来控制3个worker节点
#登录Master
dm ssh Master
#运行服务。
docker service create --replicas 4 -p 80:80 --name nginx nginx
#查看集群运行的服务
service ps nginx
这个时候4个虚拟机已经全部安装了nginx这个服务。我们打开任意一个节点的ip打开就可以看到熟悉的"Welcome to nginx!"的页面了。到此整个教程结束。
docker进阶-利用dcoker Swarm搭建简单集群的更多相关文章
- 初学Hadoop:利用VMWare+CentOS7搭建Hadoop集群
一.前言 开始学习数据处理相关的知识了,第一步是搭建一个Hadoop集群.搭建一个分布式集群需要多台电脑,在此我选择采用VMWare+CentOS7搭建一个三台虚拟机组成的Hadoop集群. 注:1 ...
- Apache httpd + tomcat 简单集群
集群其实很简单,我们就来说一下httpd+tomcat集群都要注意哪些部分: 首先使用的东西有 apache-tomcat-8.0.32 下载地址: http://tomcat.apache ...
- asp.net core 认证及简单集群
众所周知,在Asp.net WebAPI中,认证是通过AuthenticationFilter过滤器实现的,我们通常的做法是自定义AuthenticationFilter,实现认证逻辑,认证通过,继续 ...
- nginx做负载均衡和tomcat简单集群
Nginx做负载均衡和TOMCAT简单集群 1.下载安装nginx及其依赖包 ...
- Nginx+Tomcat简单集群
1.软件准备下载Nginx和Tomcat解压到一个目录2.修改Tomcat的端口Tomcat1:修改Server.xmlTomcat2:修改Server.xml3.测试Tomcat是否正常运行分别访问 ...
- net core 认证及简单集群
net core 认证及简单集群 在Asp.net WebAPI中,认证是通过AuthenticationFilter过滤器实现的,我们通常的做法是自定义AuthenticationFilter,实现 ...
- Mysql---搭建简单集群,实现主从复制,读写分离
参考博客:https://blog.csdn.net/xlgen157387/article/details/51331244 A. 准备:多台服务器,且都可以互相随意访问root用户,都可以随意进行 ...
- [原创]Docker学习记录: Shipyard+Swarm+Consul+Service Discover 搭建教程
网上乱七八糟的资料实在是太多了, 乱, 特别乱, 而看书呢, 我读了2本书, 一本叫做<>, 另一本叫做<< Docker进阶与实战>> 在 服务发现这块讲的又不清 ...
- docker~swarm搭建docker高可用集群
回到目录 Swarm概念 Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docker API接口作为其前端访问入 ...
随机推荐
- Git & github 使用指南
Git的安装: 1.下载 Git for windows下载网址:https://git-for-windows.github.io/ 2.安装 选择安装路径: 选择组件:默认 是否修改环境变量 : ...
- SQL Server使用侦听器IP访问时遇到"The target principal name is incorrect. Cannot generate SSPI context"
在测试SQL Server 2016 Always On时,在创建侦听器后,在客户端使用SSMS, 可以用侦听器名称访问Always On集群,但是使用侦听器IP访问时遇到"The targ ...
- php session 和cookie
先简单的说明下session和cookie的区别. 1.session存放在服务器的文件中,或者是内存中.而cookie存在客服端. 2.session比cookie安全 3.session存放在服务 ...
- AlarmManager(全局定时器/闹钟)详解
AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.指定时长或以周期形式执行某项操作.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的 ...
- Java Web项目(Extjs)报错二
1.Java Web项目(Extjs)报错二 具体报错如下: usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ...
- 小实验3:实现haproxy的增、删、查
# Author:Alano # -*- conding:utf-8 -*- # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在? f = ...
- pat1021-1030
1021求树的直径网上一搜就有,但是我不太理解 只需要一共求两次的dfs的论调,好吧我收回这句话,好想脑补了下,第一次dfs有多个最长点,只需要搜一个就行QAQ.这么看来我写麻烦了 #include& ...
- 谈谈在.NET Core中使用Redis和Memcached的序列化问题
前言 在使用分布式缓存的时候,都不可避免的要做这样一步操作,将数据序列化后再存储到缓存中去. 序列化这一操作,或许是显式的,或许是隐式的,这个取决于使用的package是否有帮我们做这样一件事. 本文 ...
- 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)
洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...
- [HNOI2011]XOR和路径 && [HNOI2013]游走
[HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权 ...