微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例 docker compose是一种编排服务,基于python语言实现,是一个用于docker上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。 解决了容器与容器之间如何管理编排的问题。
docker
stack官方可能就是用stack替代compose的,compose可以做构建,开发人员用的比较多点 compose重点是编排。这里注重编排文件就可以。 docker-compose.yml 服务(service)一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 项目(project)由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件定义。
server1
mkdir compose/
cd compose/
ls
vim docker-compose.yml
高可用负载均衡。haproxy keepalived+lvs
netstat -antlp|grep :80
用自定义网络 web_net提供解析 把配置通过卷挂接到容器内,让它生效。
server2
docker images
docker run --rm -it nginx bash
ls
cd /etc/nginx/
ls -l
cd conf.d/
ls
default.conf
cd ..
cat nginx.conf
cd conf.d/
cat default.conf
cd ..
cat nginx.conf
将其中的内容复制下来
server1
mkdir proxy
cd prixy/
ls
\vi nginx.conf
vim nginx.conf
访问域名www.westos.org直接定义到负载均衡器westos上
cd compose/
vim docker-compose.yml
使用一个web_net自定义网络,然后每个网络使用卷
server1
mkdir web1
mkdir web2
cd web1
echo web1 > index.html
cd ..
cd web2/
echo web2 > index.html
cd ..
ls
docker-compose up
刚才的语法有问题,需要在最后一行web-net加冒号
宿主机
cd /etc/hosts/
ping www.westos.org
server1
docker-compose ps
docker-compose start
docker-compose ps
curl 172.25.0.1
curl www.westos.org
检测
server1
docker ps
docker stop compose-web1-1
docker ps
宿主机
curl www.westos.org只能显示web2
server1
docker-compose start 会将没有启动的,自动启动起来
tree .
server1
docker-compose down
docker ps -a
cd
cd harbor/
./install.sh --with-chartmuseum
docker-compose ps
server2
cd
docker swarm init
docker node ls
server3
server2
docker node ls
需要建一个内有仓库,外部仓库比较慢,会影响到部署效率
server1
cd /etc/docker/
ls
cat daemon.json
ls
server2
cd /etc/docker/
ls
scp -r daemon.json certs.d/ server3:/etc/docker/
scp -r daemon.json certs.d/ server4:/etc/docker/
server3/4
systemctl daemon-reload
systemctl reload docker
docker info
vim /etc/hosts
最后一行删除
server4
docker images
docker pull busybox
server3
cd /etc/sysctl.d/
ls
scp docker.conf server4:/etc/sysctl.d/
server4
systemctl --system
docker info
docker pull busybox
server1
cd harbor/
docker-compose down
ls
./prepare
ls
df -h /
去掉扫描功能不让磁盘增加过快。
vim docker-compose.yml
rm -f docker-compose.yml
ls
docker volume ls
docker volume prune
docker volume ls
ls
cd /data
ls
cp -r certs/ ~
rm -fr *
ls
cp -r ~/certs/ .
ls
cd
cd harbor/
ls
./install.sh --with-chartmuseum
docker push reg.westos.org/library/busybox:latest
docker push reg.westos.org/library/nginx:latest
server4
docker pull reg.westos.org/library/busybox
cd
docker images
server3
docker pull busybox
server2
docker pull busybox
docker node ls
docker service ls
在集群当中部署服务,以下是命令行方式
docker service create --name webservice -p 80:80 --replicas 3 nginx
docker service ls
server3
docker ps
server1做仓库,任何访问节点都可以做集群。
宿主机
curl 172.25.0.2
server2
docker service rm webservice
docker service ls
server1
docker search myapp
docker search ikubernetes
docker pull ikubernetes/myapp:v1
docker pull ikubernetes/myapp:v2
docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
docker push reg.westos.org/library/myapp:v1
docker push reg.westos.org/library/myapp:v2
server2
docker service create --name webservice -p 80:80 --replicas 3 myapp:v1
宿主机
curl 172.25.0.2/hostname.html
并且副本数可以随时增加或减少
server2
docker service scale webservice=6
docker service ls
docker service ps webservice
不要的时候就可以把webservice回收掉
docker service rm webservice
docker service ps webservice
问题:对于集群配置目录
宿主机
cd docker/
ls
cd supervisor/
cd ..
cd pub/images/
ls
ll visualizer.tar
代码在github.com,搜索visualizer.tar
server1
cd
docker node ls
宿主机
docker pull dockersamples/visualizer
docker tag dockersamples/visualizer:latest reg.westos.org/library/visualizer:latest
docker push reg.westos.org/library/visualizer:latest
server2
docker service ls
docker service create --name webservice -p 80:80 --replicas 3 myapp:v1
docker service scale webservice=20
在网页上搜172.25.0.2,出现以下则为成功 viz是监控
server2
docker service updata --image myapp:v2 --updata-parallelism 2 --updata-delay 2s webservice
宿主机
curl 172.25.0.2
server2
docker service rollback webservice
server3假设docker引擎出问题了,若3出问题了,便会均分到其他两个节点上
systemctl stop docker
docker ps
恢复的话
systemctl start docker
docker ps
isosize
写成文件的形式
server2
docker service rm webservice
docker service rm viz
docker service ls
cd
vim docker-compose.yml
server3
docker network ls
server2
docker stack deploy -c docker-compose.yml mycluster
docker service ls
docker service ps mycluster_webservice
docker service ps mycluster_visualizer
当不用的时候
docker stack rm mycluster
docker node ls
docker node promote server3升级
在除开leader所有节点上执行离开集群
docker swarm leave
在leader上
docker node rm server2
docker node ls
在管理端,整个集群就废了
docker swarm leave --force
体量越大,调度越慢
|