docker三剑客(二)swarm

    xiaoxiao2021-04-18  47

    swarm是什么

    碎一些闲篇,swarm貌似是从docker1.9版本开始就有了,但功能不完善、性能不稳定,一直不能登入生产环境,从1.12版本内置到了docker-engine中,可以直接使用docker swarm命令来操作swarm。 swarm是什么,swarm是docker集群的资源管理工具。简单点理解,在很多台机器上部署docker,组成一个docker集群,并把整个集群的资源抽象成资源池,使用者部署docker应用的时候,只需要将应用交给swarm,swarm会根据整个集群资源的使用情况来分配资源给部署的docker应用,可以将这个集群的资源利用率达到最大。

    类似的服务框架还有mesos+marathon,kubernetes。 编者是从很早接触docker的,swarm还没有出来,kubernetes还不成熟没有人在生产环境使用。 ①最早使用的是mesos+marathon那一套,优点是基于成熟的资源调度管理框架mesos,缺点是部署起来还是很麻烦的,像服务发现、负载均衡等概念在里面也都有,但都是碎片化以插件的形式存在,整个体系感觉不是很完善、不像一个整体。 ②kubernetes从发布1.0版本以后在生产得到了很多实践,开始步入主流压过swarm和mesos+marathon,kubernetes针对docker应用集群的特点,概括出几个对象,pod、service、replication controller,pod为运行的基本单元,service则是专门来服务发现和服务代理的,replication controller 应用的副本做负载均衡。kubernetes就是一个很专业很全面完善的docker集群管理工具。 ③swarm在很多方面很像kubernetes,不知道是不是偷偷抄袭的。swarm通过命令就可以很简单的在docker集群中创建应用设置副本数量,内置服务发现代理。swarm+compose≈kubernetes。swarm由于现在内置于docker中,使用部署更简单,功能上和kubernetes很相似,轻量级,所以也还是有很多的迷妹迷弟喜欢。

    使用在什么场景

    docker集群的资源管理框架适用于互联网场景,大量的应用以及负载均衡,适用于企业内部的大集群应用部署,适用于云计算的资源快速扩展和销毁场景。

    创建一个swarm集群

    swarm集群中是用两个节点类型的manager和worker

    #创建一个新的swarm集群,并将此节点当作manager节点 docker swarm init #命令输入完之后会打印出加入这个集群的命令,在另外一个节点上输入命令以worker节点加入集群 docker swarm join \ --token SWMTKN-1-5w0f44j4ecgljhqhqdy4yhz2osjit4dimn2hk40vx0a3c0pa8i-72nb4zzxw2acmk6wusr4mgf4x \ 192.168.1.28:2377 #查看集群节点情况 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS m352e8ocs9nq4zjfk4j4li0n4 * node28 Ready Active Leader qn7u85vn3jjq37caaliiki60z node29 Ready Active Reachable

    swarm的其它命令 Commands: init 初始化一个swarm集群,并将次节点当作manager join 加入一个swarm集群 join-token 查看加入此swarm集群的token信息,使用manager/worker参数查看两种,以manager加入进来的节点会当作备用manager节点 leave 离开swarm集群 unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm

    在集群中运行应用

    docker service create \ --replicas 2 \ --publish 8080:8080 \ --mount type=bind,src=/root/,dst=/usr/local/tomcat/webapps/ROOT \ --name=tomcat \ tomcat:7

    上面的应用创建后可以在任意一个节点上访问ip:8080访问tomcat服务,多个副本之间是做负载均衡的。 –replicas 副本数量 –publish 服务发现,端口映射 –mount 挂载文件 –name service名称

    #查看swarm集群中的服务 docker service ls #查看具体某个服务的情况 docker service ps tomcat
    转载请注明原文地址: https://ju.6miu.com/read-674447.html

    最新回复(0)