Docker原生编排工具——compose+consul群集+template

网友投稿 242 2022-10-30

Docker原生编排工具——compose+consul群集+template

Docker原生编排工具

一、docker-compose

概念

Compose默认管理对象是项目,通过子命令对项目中的一组容器进行生命周期的管理。

Compose项目由Python实现,实现上调用了Docker服务提供的API来对容器进行管理。

配置步骤

1、安装Docker-ce引擎

比较简单不在赘述,直接上shell脚本

#!/bin/bash #Docker引擎部署 #安装依赖包 yum install yum-utils device-mapper-persistent-data lvm2 -y #设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装Docker-ce yum install -y docker-ce #关闭防火墙及增强型安全功能 systemctl stop firewalld.service setenforce 0 #启动Docker并设置为开机自启动 systemctl start docker.service systemctl enable docker.service #网络优化 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p service network restart systemctl restart docker

2、部署docker-compose

#下载安装compose curl -L -s`-`uname -m` -o /usr/local/bin/docker-compose #提权方便调用 chmod +x /usr/local/bin/docker-compose #建立compose站点 mkdir /root/docker_compose

3、compose练习实例

Docker Compose配置常用字段

字段 描述
build dockerfile context 指定Dockerfile文件名构建镜像上下文路径
image 指定镜像
command 执行命令,覆盖默认命令
container name 指定容器名称,由于容器名称是唯一的
deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
environment 添加环境变量
networks 加入网络
ports 暴露容器端口,与-p相同,但端口不能低于60
volumes 挂载宿主机路径或命令卷
restart 重启策略,默认no,always, no-failure,unless-stoped
hostname 容器主机名

Docker Compose常用命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出的日志文件
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

集合部署nginx+Tomcat

#建立compose文件 vim /root/docker-compose/docker-compose.yml #compose版本号,有1、2、3 version: '3.3' #服务名称 services: nginx: #主机名 hostname: nginx #建立镜像需要的目录、dockerfile脚本名 build: context: ./nginx dockerfile: Dockerfile #映射宿主机端口 ports: - 1216:80 - 1200:443 #工作组:同一集群一个名字 networks: - test #建立数据集的目录 volumes: - ./wwwroot:/usr/local/nginx/html tomcat: hostname: tomcat build: context: ./tomcat dockerfile: Dockerfile ports: - 888:8080 networks: - test networks: test: #需要建立新镜像的服务需要放在compose工作站点中 [root@localhost docker_compose]# ls docker-compose.yml nginx tomcat #建立容器 “-f” 指定compose文件 docker-compose -f docker-compose.yml up -d

二、docker-consul集群+template

实验准备

名称 角色 IP地址 预装环境
centos7-1 master 192.168.142.66 Docker-ce、Compose 3、Consul、Consul-template
centos7-2 slave1 192.168.142.77 Docker-ce、registrator
centos7-min slave2 192.168.142.136 Docker-ce、registrator

docker-consul集群实验步骤

master端

//安装Consul [root@localhost ~]# mkdir consul [root@localhost ~]# cd consul/ [root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip [root@localhost consul]# ls consul consul_0.9.2_linux_amd64.zip

后台启动

//移动文件,方便识别 [root@localhost consul]# mv consul /usr/bin/ [root@localhost consul]# consul agent \ -server \ -bootstrap \ -ui \ -data-dir=/var/lib/consul-data \ -bind=192.168.142.66 \ -client=0.0.0.0 \ -node=consul-server01 &> /var/log/consul.log & [root@localhost consul]# jobs [1]+ 运行中 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.142.66 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &

"agent" 使用agent代理功能 "-server" 提供server功能 "-bootstrap" 参与选举为领袖 "-ui" 提供用户界面 "-data-dir" 参数存储位置 "-bind" 绑定地址 "-node" 定义节点名称

检查群集

//查看群集信息 [root@localhost consul]# consul members Node Address Status Type Build Protocol DC consul-server01 192.168.142.66:8301 alive server 0.9.2 2 dc1 //过滤leader信息 [root@localhost consul]# consul info | grep leader leader = true leader_addr = 192.168.142.66:8300

通过api 获取集群信息

curl 127.0.0.1:8500/v1/status/peers //查看集群server成员 curl 127.0.0.1:8500/v1/status/leader //集群Raf leader curl 127.0.0.1:8500/v1/catalog/services //注册的所有服务。 curl 127.0.0.1:8500/v1/catalog/nginx //查看nginx服务信息 curl 127.0.0.1:8500/v1/catalog/nodes //集群节点详细信息

使节点服务器中的容器自动加入

//安装registrator(注册器) //该工具可检查容器运行状态自动 进行注册,还可注销docker容器的服务 [root@localhost ~]# docker run -d \ --name=registrator \ --net=host \ -v /var/run/docker.sock:/tmp/docker.sock \ --restart=always \ gliderlabs/registrator:latest \ -ip=192.168.142.77 \ consul://192.168.142.66:8500

测试功能是否正常

[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginx [root@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx [root@localhost ~]# docker run -itd -p:85:80 --name test-03 -h test03 httpd [root@localhost ~]# docker run -itd -p:86:80 --name test-04 -h test04 ~]# unzip consul-template_0.19.3_linux_amd64.zip //启用template命令 [root@localhost ~]# mv consul-template /usr/bin/

编写nginx配置文件模板

[root@localhost consul]# vim nginx.ctmpl //nginx配置文件的模板 upstream { //服务器池的名称 {{range service "nginx"}} server {{.Address}:{{.Port}}; //调用变量:服务器节点的地址和端口 {{end}} } server { listen 110; server_name localhost 192.168.142.66; //master端地址 access_log /var/log/nginx/kgc.cn-access.log; index index.html index.php; location / { //请求头部信息的设定 proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; //后端服务器IP proxy_set_header Client-IP $remote_addr; //client的IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //forward跳转地址 proxy_pass //请求跳转给http_backend服务器池 } }

进行配置

//更改nginx配置文件 [root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf //在18行下插入以下内容 include vhost/\*.conf; //添加include方便nginx识别模板生成的配置文件 //此时还没有这个文件,需要去创建 [root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/ [root@localhost conf]# mkdir vhost //创建虚拟机目录 //启用template模板(启用后会进入监控模式) [root@localhost ~]# consul-template -consul-addr 192.168.142.66:8500 \ -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \ --log-level=info

“-consul-addr” #指定consul端地址 “-template” #后方从左到右分别为:模板文件路径、生成的配置文件名称、重载nginx “--log-level” #写入日志的等级

因为template是在consul集群的基础上进行搭建的,因此在启动template后就能直接识别slave中的nginx容器

后续进行新的nginx容器的添加时,直接run一个新的容器后便会自动添加进配置文件中

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一文汇总常用的硬件接口
下一篇:SpringBoot统计、监控SQL运行情况的方法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~