docker swarm

跨机器的集群则需要docker版本高于1.12 集成了docker swarm。

首先主机器进入docker swarm模式:docker swarm init

然后创建overlay网络:docker network create -d overlay --attachable mynet

从节点加入swarm集群(主节init swarm时候的指令)

接下来我们需要在一台机器上启动一个mdw主节点,另一台机器上启动一个seg从节点

docker run -tid --name mdw--hostname mdw --network mynet --ip 10.0.0.8 -p 5432:5432 -p 28080:28080 gp

docker run -tid --name seg --hostname seg --network mynet --ip 10.0.0.9  gp

 

然后只需要在mdw容器里初始化GP

./start.sh

 

 

#!/bin/sh
gpssh-exkeys -f ./all_segs
gpinitsystem -c gpconfigs/gpinitsystem_config -h  ./all_segs -a
echo "host all all 172.18.0.1/24 md5">>/gpmaster/gpseg-1/pg_hba.conf  #ip 地址为当前容器的网关地址
echo "host all all 10.0.75.1/24 md5">>/gpmaster/gpseg-1/pg_hba.conf  #ip是访问的主机的ip网关地址,
#sed -i '/local    all         gpadmin         ident/d' /gpmaster/gpseg-1/pg_hba.conf
sed -i '/local    replication gpadmin         ident/d' /gpmaster/gpseg-1/pg_hba.conf
echo "host gpperfmon gpmon ::1/128 md5">>/gpmaster/gpseg-1/pg_hba.conf
echo "gp_enable_gpperfmon=on">>/gpmaster/gpseg-1/postgresql.conf
echo "gpperfmon_port=8888">>/gpmaster/gpseg-1/postgresql.conf
echo "gp_external_enable_exec=on">>/gpmaster/gpseg-1/postgresql.conf
echo "gpperfmon_log_alert_level=warning">>/gpmaster/gpseg-1/postgresql.conf
gpperfmon_install --enable --password gpmon --port 5432
psql -f 1.sql #修改gpadmin密码
gpstop -ar


nohup ./ex.sh > ex.log 2>&1 &   #初始化gpcc监控时的人机交互
wait
echo "Done"

gpcmdr --start gpcc  #启动gpcc监控


###这个文件是用来启动GP和gpcc监控的

 

基本概念

swarm集群包含以下两种节点:

  • Manager Node —— 负责调度Task
  • Worker Node —— 接受Manager Node调度并指派的Task

每个nodeavailability包括:

  • Active:接受task
  • Pause:不接受task,已有task仍运转
  • Drain:不接受task,已有task被交接

集群构建

# 创建集群的Manager node

docker swarm init --advertise-addr Manager节点ip(本机只有一个ip的话就不用写)

# 管理join token(去中心化设计)

docker swarm join-token worker|manager

 

# worker node加入集群,成为一个工作副本

docker swarm join --token 令牌 Manager节点ip:2377manager节点初始化后会列出命令,见上面的截图)

 

# 查看集群节点

docker node ls

 

# 检查指定节点

docker node inspect self|NODE

 

# 节点状态变更

docker node update --availability drain manager # 设置Manager Node只具有管理功能

 

# 节点打标签

docker node update --label-add 键名称=

 

# 节点提权/降权

docker node promote 节点 # 升级为manager node

docker node demote 节点 # 降级为worker node

 

# 节点退出集群

docker swarm node leave [--force]

服务管理

Service 包含两种模式:

  • replicated:可指定服务驻留节点数量(默认)
  • global:服务驻留在全部节点

# 在集群中部署service

docker service create --replicas 副本数 --name 服务名称 镜像名称 command

 

# 滚动更新服务

docker service update --update-parallelism 并行更新限额数 --update-delay 更新间隔秒数 --image 镜像名称 服务名称

(如果有节点坏了,刷新后会自动在其他节点上补齐服务)

 

# 查看集群服务列表

docker service ls

# 查询指定服务的部署状况

docker service ps 服务名称

# 检查指定服务

docker service inspect --pretty 服务名称

# 集群服务扩容缩容

docker service scale 服务名称=节点数

# 删除集群指定服务及相关的副本

docker service rm 服务名称

网络管理

容器加入到同一网络中可以实现互访

# 创建网络

docker network create --driver overlay 网络名称

 

# 创建服务时指定网络

docker service create --network 网络名称 --replicas 副本数 --name 服务名称 镜像名称 command

 

 

 

docker service create  --help (该命令下可以使用的参数)

 

 

https://docs.docker.com/engine/swarm/(官方详细的文档)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值