..

6.搭建swarm集群 && 安装visualizer可视化集群上的容器

1.准备三台机器,安装好docker并配置好加速后备用:192.168.100.62(manager62),192.168.100.63(node63),192.168.100.64(node64)

2.关闭防火墙,设置主机名,配置host,重启docker

# 192.168.100.62上执行
systemctl stop firewalld.service
systemctl disable firewalld.service
hostnamectl set-hostname manager62
echo "192.168.100.62 manager62" >> /etc/hosts
echo "192.168.100.63 node63"    >> /etc/hosts
echo "192.168.100.64 node64"    >> /etc/hosts
sudo systemctl restart docker

# 192.168.100.63上执行
systemctl stop firewalld.service
systemctl disable firewalld.service
hostnamectl set-hostname node63
echo "192.168.100.62 manager62" >> /etc/hosts
echo "192.168.100.63 node63"    >> /etc/hosts
echo "192.168.100.64 node64"    >> /etc/hosts
sudo systemctl restart docker

# 192.168.100.64上执行
systemctl stop firewalld.service
systemctl disable firewalld.service
hostnamectl set-hostname node64
echo "192.168.100.62 manager62" >> /etc/hosts
echo "192.168.100.63 node63"    >> /etc/hosts
echo "192.168.100.64 node64"    >> /etc/hosts
sudo systemctl restart docker


3.在62上创建swarm主节点

docker swarm init --advertise-addr 192.168.100.62

 

 

 4.在63,64上执行上面截图中标黄的命令。

 

 

 

 

 

 5.执行 docker info 可以查看swarm信息

 

 

 6.通过 docker node ls 可以查看swarm节点信息

7.节点下线 docker node update --availability drain node63 

8.节点上线 docker node update --availability active node63


 

在Swarm中部署服务(nginx为例):

1.创建网络 docker network create -d overlay nginx_net  查看命令是 docker network ls | grep nginx_net

2.部署 docker service create --replicas 1 --network nginx_net --name my_nginx -p 80:80 nginx # 就创建了一个具有一个副本(--replicas 1 )的nginx服务,使用镜像nginx

3.查看正在运行的服务列表 docker service ls

4.查看服务运行在哪些节点 docker service ps my_nginx

5.动态扩展服务数量 docker service scale my_nginx=4 

 

 

6. 动态缩容服务 docker service scale my_nginx=1

7.除了使用scale,还可以update第2步指定的实例数  docker service update --replicas 3 my_nginx 也可以更新启动参数

8.update 还可以升级镜像 docker service update --image nginx:new my_nginx

9.如果worker结点挂掉,worker节点上的容器会被转移到其他节点,保证节点的数量。当节点恢复后节点还会转移回来。

 

 


可选安装visualizer可视化已经启动的docker容器,github地址在这里,上面有详尽的文档

docker run -d -p 8081:8080 --name visualizer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  dockersamples/visualizer

 

推荐安装portainer

docker run -d -p 9000:9000 --restart=always --name prtainer-test docker.io/portainer/portainer

对于swarm集群中的每个节点如果想要被portainer连接上需要修改/lib/systemd/system/docker.service,

 

 

 

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
View Code

然后重启docker服务 systemctl daemon-reload && systemctl restart docker 

 

 


 

最后鸣谢参考文档

 


补充1:(如何加入集群,以worker 或者以 manager 的身份加入)      

docker swarm join-token manager #在mananger节点上执行,执行结果为,加入当前swarm节点作为一个manager节点的命令。
docker swarm join-token worker    #在mananger节点上执行,执行结果为,加入当前swarm节点作为一个work节点的命令。

补充2:(关于如何更新由docker stack部署的服务中的配置文件问题)

#docker config create 新的配置文件名字  dockerhost上面配置文件的路径(不是容器内的路径)
docker config create elk_logstash_pipeline2 /data/project/docker-elk/logstash/pipeline/logstash.conf


#先删除,再添加
#source就是上一步新建立的配置文件名称
#target就是容器内的文件路径
docker service update \
   --config-rm elk_logstash_pipeline \
   --config-add source=elk_logstash_pipeline2,target=/usr/share/logstash/pipeline/logstash.conf \
   elk_logstash

 

posted @ 2020-09-21 16:09  罗浩楠  阅读(497)  评论(1)    收藏  举报
..