iliuyt / blog

1 stars 0 forks source link

swarm 部署集群的想法 #9

Open iliuyt opened 6 years ago

iliuyt commented 6 years ago

swarm

swarm 创建集群

注意集群最好是3 5 7个主机,并且要有多个管理员,否则一旦管理员挂了就挂了(未测试)

## 集群初始化
docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100

## 工作机假如
docker swarm  join-token worker

## 管理加入
docker swarm  join-token manager

## 加入集群
docker swarm join --token

swarm 创建网络

## 查看网络
docker network ls

## 创建网络
docker network create --driver overlay swarm_test

etcd

构建镜像

注意这里要用ENTRYPOINT,否则容易覆盖

FROM alpine:3.2

ENV ETCD_VERSION 3.2.10

COPY etcd-v${ETCD_VERSION}-linux-amd64.tar.gz etcd.tar.gz
RUN tar xzf etcd.tar.gz && \
mv etcd-*/etcd /bin/ && \
/bin/etcd --version && \
rm -rf etcd.tar.gz etcd-

COPY ./start.sh /bin

EXPOSE 2379 2380

ENTRYPOINT ["/bin/sh","/bin/start.sh"]

镜像脚本

注意:报奇怪的错误时,第一时间想到是因为文件格式问题,通过VIM创建文件编写文件 通过docker service create,容器内无法获取宿主机IP,可以继续研究

#!/bin/bash

LOCAL_IP=`ifconfig eth0|sed -n 2p|awk  '{ print $2 }'|awk -F : '{ print $2 }'`
NAME=`hostname -s`

etcd --name $NAME \
--initial-advertise-peer-urls http://$LOCAL_IP:2380 \
--listen-peer-urls http://0.0.0.0:2380 \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://$LOCAL_IP:2379

swarm部署

### 注意discovery地址是http,https需要服务器支持
docker service create --name test \
--network etcd_network \
--publish 2379:2379 \
--publish 2380:2380 \
--replicas 3 \
--detach=true \
--env ETCD_DISCOVERY=http://discovery.etcd.io/b2e95d029b61e65ddd90421979efd7f6 \
registry.cn-hangzhou.aliyuncs.com/liuyt/etcd:sh

confd

安装confd

根据etcd更新nginx配置

部署应用

swarm 创建应用

遗留问题

etcd

为什么--listen-peer-urls和--listen-client-urls在docker集群中必须写0.0.0.0,通信到底是什么样样子的 0.0.0.0代表缺省地址,代表的时候,请求无法处理时按0.0.0.0处理

docker service

在docker service create中,添加了replicas参数后无法使用名称做ip,原因是什么,为什么可以使用名称做路由

通过名称做路由参考文章http://blog.51cto.com/nosmoking/1962483

在docker service create中如何获取每一个容器的ip

需要做的

脚本或node快速添加ssh登录

动态设置hostname,根据下面地址API教程 https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates

注册Docker论坛 http://dockone.io/

未完待编辑