




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Doceker+swarm+etcd 部署 一、概念Docker Swarm是Docker原生的集群管理工具,它把多个Docker主机抽象成一个单一的虚拟主机。Docker Swarm支持标准的Docker API,所以任何可以与Docker Daemon通信的工具都可以使用Docker Swarm扩展到多个主机。特别值得关注的是对Docker命令行的支持,为使用者提供了从单一Docker主机到Docker集群的无缝切换。etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。以下是测试环境docker 架构图:分深圳,武汉集群,实现深圳同学使用深圳docker 容器,不跨公网传输数据,节省办公网带宽资源。2、 Docekr swarm etcd集群部署 试验环境:A). docker daemon 安装(31,32都执行)Unzip -o docker_install_bi.zip & Cd docker_install_bi & sh docker_install.sh#查看docker daemon进程:ps -ef|grep dockerroot 145439 1 0 Jul23 ? 00:02:02 docker daemon -storage-opt dm.basesize=200G -H tcp:/:2375 -H unix:/var/run/docker.sock -api-cors-header=true -iptables=true -graph=/data/docker -insecure-registry=54:5000root 145444 145439 0 Jul23 ? 00:00:01 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock -runtime docker-runc -start-timeout 2mB). etcd 集群安装,考虑高可用,官方建议最少三个节点。Etcd相关词汇: Raft:etcd所采用的保证分布式系统强一致性的算法。 Node:一个Raft状态机实例。 Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。 Cluster:由多个Member构成可以协同工作的etcd集群。 Peer:对同一个etcd集群中另外一个Member的称呼。 Client: 向etcd集群发送HTTP请求的客户端。 #在31上执行 #Unzip -o docker_install_bi.zip & Cd docker_install_bi cp etcd* /usr/bin/. chmod +x /usr/bin/etcd*mkdir -p /data/etcd3nohup etcd -name swarm0 -data-dir=/data/etcd3 -initial-advertise-peer-urls 1:2380 -listen-peer-urls 1:2380 -listen-client-urls 1:2379 -advertise-client-urls 1:2379 -initial-cluster-token swarm-etcd-cluster -initial-cluster swarm0=1:2380,swarm1=2:2380,swarm2=0:2380 -initial-cluster-state new /data/etcd3/etcd.log &注解:-name 成员名(即etcd实例)-data-dir 数据存放路径peerurls是成员之间通信的入口,clienturls是成员跟用户通信的访问入口。-initial-cluster-token token 在启动时初始集群token-initial-cluster-state new 初始化状态(new or existing),-initial-cluster参数中配置的url地址必须与各个节点启动时设置的initial-advertise-peer-urls参数相同。(initial-advertise-peer-urls参数表示节点监听其他节点同步信号的地址#在32执行Unzip -o docker_install_bi.zip & Cd docker_install_bi cp -f etcd* /usr/bin/. chmod +x /usr/bin/etcd*mkdir -p /data/etcd3nohup etcd -name swarm1 -data-dir=/data/etcd3 -initial-advertise-peer-urls 2:2380 -listen-peer-urls 2:2380 -listen-client-urls 2:2379 -advertise-client-urls 2:2379 -initial-cluster-token swarm-etcd-cluster -initial-cluster swarm0=1:2380,swarm1=2:2380,swarm2=0:2380 -initial-cluster-state new /data/etcd3/etcd.log 启动完毕查看下日志tailf /data/etcd3/etcd.log #在30上执行Unzip -o docker_install_bi.zip & Cd docker_install_bi cp -f etcd* /usr/bin/. chmod +x /usr/bin/etcd*mkdir -p /data/etcd3nohup etcd -name swarm2 -data-dir=/data/etcd3 -initial-advertise-peer-urls 0:2380 -listen-peer-urls 0:2380 -listen-client-urls 0:2379 -advertise-client-urls 0:2379 -initial-cluster-token swarm-etcd-cluster -initial-cluster swarm0=1:2380,swarm1=2:2380,swarm2=0:2380 -initial-cluster-state new /data/etcd3/etcd.log 查看成员信息:root192-168-18-31 docker_install_bi# etcdctl -peers 1:2379 member list3d72ae42256da433: name=swarm1 peerURLs=2:2380 clientURLs=2:2379 isLeader=false7777d8ff5ec110fe: name=swarm0 peerURLs=1:2380 clientURLs=1:2379 isLeader=falsea12ee7abcbea57ef: name=swarm2 peerURLs=0:2380 clientURLs=0:2379 isLeader=trueC). swarm manage集群安装#31上执行cp -f swarm /usr/bin/chmod +x /usr/bin/swarmnohup swarm manage -H :2377 -replication -advertise 1:2377 -strategy binpack -filter health etcd:/1:2379,2:2379,0:2379/wh-swarm /data/docker/swarm_manage.log &注解:-H :2377 :swarm manager监听端口 -replication 开启swarm manager 复制功能 -advertise :swarm manger加入集群的地址。 -strategy binpack 调度策略,binpack:最大化,run 容器前面节点放满放后面节点,spread:最小化,跟binpack 相反,random随机调度(不会根据资源调度)。 -filter 过滤策略,run 容器检查节点health去调度。 Ectd:/ etcd集群地址#32 上执行cp -f swarm /usr/bin/chmod +x /usr/bin/swarmnohup swarm manage -H :2377 -replication -advertise 2:2377 -strategy binpack -filter health etcd:/1:2379,2:2379,0:2379/wh-swarm /data/docker/swarm_manage.log 查看日志Cat /data/docker/swarm_manage.logD).启动swarm agent#31上执行nohup swarm join -advertise 1:2375 etcd:/1:2379,2:2379,0:2379/wh-swarm /data/docker/swarm_join.log 上执行nohup swarm join -advertise 2:2375 etcd:/1:2379,2:2379,0:2379/wh-swarm /data/docker/swarm_join.log 查看日志Cat /data/docker/swarm_join.logE).检查集群信息(命令docker -H swarm_ip:swarm_manager_port cmd)1、显示节点root192-168-18-32 docker_install_bi# swarm list etcd:/1:2379/wh-swarm INFO0000 Initializing discovery without TLS 1:23752:23752、显示集群节点信息root192-168-18-31 docker_install_bi# docker -H :2377 info (确定各节点状态正常)3、创建容器(也可以用api接口调用实现run,stop 等开容器操作,uwork 接口还在开发中,操作以后讲)docker -H 1:2377 run -privileged=true -d -m 10G -memory-swap=10G -cpuset-cpus=0-3 -cpu-period=100000 -cpu-quota=200000 54:5000/juanpi_comm显示创建的容器三、网络实现容器网络实现有以下几种方式-net=bridge 这个是默认值,连接到默认的网桥。-net=host 告诉 Docker 不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用 -privileged=true ,容器会被允许直接配置主机的网络堆栈。-net=container:NAME_or_ID 让 Docker 将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信。-net=none 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置我们用第四种,宿主机网络配置成bridge,run 容器的时候不指定网络(-net=none),创建完后用pipework 指定ip,这样的好处:宿主机跟容器同一网段,直接对外提供业务,弊:容器重启ip 地址消失,需要配置ip地址。设置桥接脚本,注意根据实际情况修改,确定如果内网卡不是em1需要修改(脚本名:setbridge.sh)设置容器ip地址:例:容器ID设置ip:40,网段:/23,gateway:pipework br0 容器ID 40/23四、容器资源管理 在容器内,使用top.free,df看到都都是宿主机资源,是看到分配给容器的资源,但是也可以限制内存,cpu,磁盘等资源。A).内存限制,在run 容器的时候加 -m、-memory-swap(默认swap 跟-m 一样,可以不指定),目前只有两个参数,默认开启OOM,当容器进程超过最大配额,宿主机会出发OOM,kill容器内的进程,为确保宿主机稳定,最好限定每个容器的内存!其他参数可以测试下。例:#指定100M内存,100M swapdocker -H 1:2377 run -privileged=true -d -m 10G -memory-swap=10G -cpuset-cpus=0-3 -cpu-period=100000 -cpu-quota=200000 54:5000/juanpi_commB).容器磁盘配额考虑测试环境数据安全,容器坏了,数据不丢失,容器数据目录挂载宿主机上,不做配额限制,有兴趣的童鞋可以限制目录配额,xfs支持。.il/blog/2008/07/per-directory-quota-not-a-dream/C).cpu资源限制。 -cpu-shares 一个cpu有1024个cpu shares,24核有24*1024个cpu shares,用来设置一个CPU使用优先级的相对比例值,通过对这个值的修改可以标识出不同Container在使用CPU时的优先级。越=大的优先级越高。 -cpuset-cpus,将Container限制在具体的核。 -cpu-period,-cpu-quota 这两个值一般要配合使用,个人理解是cpu-quota/cpu-period*100为使用的cpu值,这是一个绝对值,例如:docker -H 1:2377 run -privileged=true -d -m 10G -memory-swap=10G -cpuset-cpus=0-3 -cpu-period=100000 -cpu-quota=200000 54:5000/juanpi_commCpu 只能使用到200%D).动态修改容器资源,docker update -cpu-period=100000 -cpu-quota=50000 -cpu-shares=512 427afd699e485、 容器申请 uwork 申请通过后自动创建容器,邮件给申请同学,申请失败运维手动开,超哥
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45999.2-2025牙科学牙科烧结炉第2部分:上釉烧结评价烧结炉程序设计的测试方法
- 2025年儿童安全常识题及答案打印
- 草坪园艺技术常见问题解答参考
- 2025年民航安检技术员考试试题及答案解析
- 2025年金融风险管理师职业资格考试题及答案解析
- 2025年初级UT无损检测员面试题库集
- 2025年学校宿舍安全培训题及答案
- 2025年中学生防欺凌试题及答案
- 2025年安全员考试案例分析题库
- 机电电气知识培训课件
- 《中央企业合规管理办法》解读与启示
- 王洪图黄帝内经80课时讲稿
- 王力宏经典歌曲歌词全集
- 2023年山西日报社招聘笔试模拟试题及答案解析
- 国土空间生态修复规划与全域土地综合整治的衔接
- 糖皮质激素性骨质疏松症及其治疗
- 2022年省直辖行政单位政务中心综合窗口人员招聘笔试试题及答案解析
- YY/T 0127.11-2014口腔医疗器械生物学评价第11部分:盖髓试验
- T-CIATCM 002-2019 中医药信息数据元目录
- 班主任培训讲稿(共12张PPT)
- 推拿手法精品课件
评论
0/150
提交评论