docker资源限制与compose_docker compose cpuset(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

二、Cgroup 资源配置方法

docker 使用cgroup控制资源

 respones
    request

Docker通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。

Cgroup 是 Control Groups 的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 CPU、内存、磁盘 IO 等等)的机制

07年谷歌,可以控制资源分配通过操作系统内核,控制应用程序使用内存资源、cpu资源、 文件系统资源等等
cgroup是一种资源控制手段
也是容器隔离的6个名称空间的一种实现手段

每个容器相当于一个进程

三、CPU使用率控制

cpu周期: 1s为一个周期的定律,参数值一般为100000 (CPU衡量单位是秒)。

假如需要给此容器分配cpu使用率的20%,则参数需要设置为20000,相当于每个周期分配给这个容器0.2s。

cpu在一个时刻,只能给一个进程占用。

使用 stress 工具测试 CPU 和内存

使用 Dockerfile 来创建一个基于 Centos 的 stress 工具镜像。

mkdir /opt/stress

vim /opt/stress/Dockerfile

FROM centos:7
RUN yum install -y wget
RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install -y stress

cd /opt/stress/

docker build -t centos:stress .

使用如下命令创建容器,命令中的–cpu-shares 参数值不能保证可以获得 1 个 vcpu 或 者多少 GHz 的 CPU 资源,它仅是一个弹性的加权值。

docker run -itd --cpu-shares 100 centos:stress

默认情况下,每个 Docker容器的CPU份额都是1024。单独一个容器的份额是没有意义的。只有在同时运行多个容器时,容器的 CPU 加权的效果才能体现出来。
       两个容器 A、B 的 CPU 份额分别为 1000 和 500,在CPU进行时间片分配的时候,容器A比容器B多一倍的机会获得 CPU 的时间片。
       但分配的结果取决于当时主机和其他容器的运行状态, 实际上也无法保证容器 A一定能获得CPU时间片。比如容器A的进程一直是空闲的,那么容器B是可以获取比容器A更多的CPU时间片的。极端情况下,例如主机上只运行了一个容器,即使它的 CPU 份额只有 50,它也可以独占整个主机的CPU资源。

一个主机运行一个容器,只运行了一个应用(容器也是虚拟化技术  )
一个主机运行一个应用

Cgroups 只在容器分配的资源紧缺时,即在需要对容器使用的资源进行限制时,才会生效。因此,无法单纯根据某个容器的CPU份额来确定有多少CPU资源分配给它,
        资源分配 结果取决于同时运行的其他容器的CPU分配和容器中进程运行情况。
        可以通过 cpu share 可以设置容器使用 CPU 的优先级/权重,比如启动了两个容器及运行查看 CPU 使用百分比。

docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10   
容器产生10个子函数进程


docker exec -it f4953c0d7e76 bash  
进入容器使用top查看cpu使用情况

再开启一个容器做比较
docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10


docker exec -it 5590c57d27b0 bash  //进容器使用top对比两个容器的%CPU,比例是1:2

docker stats 查看资源使用

四、 CPU 周期限制

Docker 提供了–cpu-period、–cpu-quota 两个参数控制容器可以分配到的 CPU 时钟周期。
–cpu-period 是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配。

cd /sys/fs/cgroup/cpu/docker容器ID/cpu.cfs_quota_us

宿主机怎么提供资源、怎么控制docker容器中的应用的: 
        CPU→VCPU→以进程的方式体现在workstation环境(docker环境中)→docker表现形式是容器→Vcpu以进程的方式控制容器→容器中的应用需要的是服务进程支持→宿主机内核中cpu可以被cgroup管理(通过分配资源手段)→linux 内核中的cgroup可以控制管理docker 容器中的应用。

–cpu-quota 是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。
与 --cpu-shares 不同的是,这种配置是指定一个绝对值,容器对 CPU 资源的使用绝对不会超过配置的值。

cpu-period 和 cpu-quota 的单位为微秒(μs)。cpu-period 的最小值为 1000 微秒, 最大值为 1 秒(10^6 μs),默认值为 0.1 秒(100000 μs)。
      cpu-quota 的值默认为 -1, 表示不做控制。cpu-period 和 cpu-quota 参数一般联合使用。redis 中,用来表示的永久 -1

ttl teacher 
-1
lrange teacher 0 -1

容器进程需要每 1 秒使用单个 CPU 的 0.2 秒时间,可以将 cpu-period 设置 为 100000(即 1 秒),cpu-quota 设置为 20000(0.2 秒)。
         当然,在多核情况下,如果允许容器进程完全占用两个 CPU,则可以将 cpu-period 设置为 10000(即 0.1 秒), cpu-quota 设置为 200000(0.2 秒)。

选项描述
–pus=指定容器可以使用多少可用CPU资源。例如,如果主机有两个CPU,并且您设置了而Cpus =“1.5”, 那么该容器将保证最多可以访问一个半的CPU。这相当于设置-cpu-period ="100000"和–cpu- quota =“150000”。在Docker 1.13和更高版本中可用。
–Cpu-period=指定CPU CFS调度程序周期,该周期与–pu-quota-起使用。默认为100000微妙,以微秒表示。 大多数用户不会从默认值更改此设置。如果您使用Docker 1.13或更高版本,请改用–cpus。
–Cpu-quota=在容器上添加CPU CFS配额。每个–cpu-period允许CPU访问的容器数微秒数。换句话说,cpu- quota/ cpu-period。如果您使用Docker 1.13或更高版本,请改用-cpuS。
–cpuset-cpus限制容器可以使用的特定CPU或核心。如果您有多个CPU,则容器可以使用的逗号分隔列表或连字 符分隔的CPU范围。第一个CPU编号为0.有效值可能为0-3 (使用第一,第二,第三和第四个 CPU)或1,3 (使用第二个和第四个CPU)。
–Cpu-shares将此标志设置为大于或小于默认值1024的值,以增加或减少容器的重量,并使其能够访问主机 CPU周期的更大或更小比例。这仅在CPU周期受到限制时才会执行。当大量CPU周期可用时,所有 容器都使用尽可能多的CPU。这样,这是一个软限制。 --cpu-shares不会阻 止容器在群集模式下进 行调度。它优先考虑容器CPU资源的可用CPU周期。它不保证或保留任何特定的CPU访问权限。
docker run -tid --cpu-period 100000 --cpu-quota 200000 centos:stress

docker exec -it 98d2aaa50019 bash

查询容器的资源限制参数

(1)在指定容器目录中
cat /sys/fs/cgroup/cpu/docker/容器ID/cpu.cfs_period_us

cat /sys/fs/cgroup/cpu/docker/容器ID/cpu.cfs_quota_us
(2)使用docker inspect 容器ID/容器名
"CpuPeriod": 
 "CpuQuota": 

五、 CPU Core 控制

对多核 CPU 的服务器,Docker 还可以控制容器运行使用哪些 CPU 内核,即使用–cpuset-cpus 参数。
       这对具有多 CPU 的服务器尤其有用,可以对需要高性能计算的容器进行性能最优的配置。

docker run -tid --name cpu1 --cpuset-cpus 0-1 centos:stress

执行以上命令需要宿主机为双核,表示创建的容器只能用 0、1两个内核。最终生成 的 cgroup 的 CPU 内核配置

cat /sys/fs/cgroup/cpuset/docker/

通过下面指令可以看到容器中进程与 CPU 内核的绑定关系,达到绑定 CPU 内核的目的。

docker exec   taskset -c -p 1    
容器内部第一个进程号pid为1被绑定到指定CPU上运行pid 1's current affinity list: 0,1

创建容器时 直接使用参数指定资源限制

创建容器后,指定资源分配
修改宿主机对应容器资源控制的文件
/sys/fs/cgroup/*

六、 CPU 配额控制参数的混合使用

通过 cpuset-cpus 参数指定容器 A 使用 CPU 内核 0,容器 B 只是用 CPU 内核 1。
在主机上只有这两个容器使用对应 CPU 内核的情况,它们各自占用全部的内核资源,cpu-shares 没有明显效果。

cpuset-cpus、cpuset-mems 参数只在多核、多内存节点上的服务器上有效,并且必须与实际的物理配置匹配,否则也无法达到资源控制的目的。

在系统具有多个 CPU 内核的情况下,需要通过 cpuset-cpus 参数为设置容器 CPU 内核才能方便地进行测试。
      宿主系统修改为4核心CPU

docker run -tid --name cpu3 --cpuset-cpus 1 --cpu-shares 512 centos:stress stress -c 1

docker exec -it 84598dfadd34 bash

exit


top   
按1查看每个核心的占用

docker run -tid --name cpu4 --cpuset-cpus 3 --cpu-shares 1024 centos:stress stress -c 1

docker exec -it  bash

上面的 centos:stress 镜像安装了 stress 工具,用来测试 CPU 和内存的负载。通过 在两个容器上分别执行 stress -c 1 命令,将会给系统一个随机负载,产生 1 个进程。这个进程都反复不停的计算由 rand产生随机数的平方根,直到资源耗尽。 
       观察到宿主机上的 CPU 使用率,第三个内核的使用率接近 100%, 并且一批进程的 CPU 使用率明显存在 2:1 的使用比例的对比。

七、 内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和 Swap。 
Docker 通过下面两组参数来控制容器内存的使用量。

-m 或 --memory:设置内存的使用限额,例如 100M、1024M。 
–memory-swap:设置 内存+swap 的使用限额。 
执行如下命令允许该容器最多使用 200M 的内存和 300M 的 swap。
#单纯做swap 和物理内存的硬限制

docker run -it -m 200M --memory-swap=300M centos:stress

–vm 1:启动 1 个内存工作线程。 
–vm-bytes 280M:每个线程分配 280M 内存。 
默认情况下,容器可以使用主机上的所有空闲内存。
与 CPU 的 cgroups 配置类似, Docker 会自动为容器在目录 /sys/fs/cgroup/memory/docker/<容器的完整长 ID>
中创建相应 cgroup 配置文件

如果让工作线程分配的内存超过 300M,分配的内存超过限额,stress 线程报错,容器 退出。

docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 310M

八、Block IO 的限制

默认情况下,所有容器能平等地读写磁盘,可以通过设置–blkio-weight 参数来改变 容器 block IO 的优先级。 
–blkio-weight 与 --cpu-shares 类似,设置的是相对权重值,默认为 500。
在下面 的例子中,容器 A 读写磁盘的带宽是容器 B 的两倍。

docker run -it --name container_A --blkio-weight 600 centos:stress

cat /sys/fs/cgroup/blkio/blkio.weight

docker run -it --name container_B --blkio-weight 300 centos:stress

cat /sys/fs/cgroup/blkio/blkio.weight

九、 bps 和 iops 的限制

bps 是 byte per second,每秒读写的数据量。 
iops 是 io per second,每秒 IO 的次数。 
可通过以下参数控制容器的 bps 和 iops:

–device-read-bps,限制读某个设备的 bps。
–device-write-bps,限制写某个设备的 bps。
–device-read-iops,限制读某个设备的 iops。
–device-write-iops,限制写某个设备的 iops。

限制容器写 /dev/sda 的速率为 5 MB/s。

docker run -it --device-write-bps /dev/sda:5MB centos:stress

dd if=/dev/zero of=test bs=1M count=1024 oflag=direct   
可以按ctrl+c中断查看

通过 dd 命令测试在容器中写磁盘的速度。因为容器的文件系统是在 host /dev/sda上的,在容器中写文件相当于对 host /dev/sda 进行写操作。另外,oflag=direct 指定用 direct IO 方式写文件,这样 --device-write-bps 才能生效。

结果表明限速 5MB/s 左右。作为对比测试,如果不限速,结果如下。

docker run -it centos:stress

dd if=/dev/zero of=test bs=1M count=1024 oflag=direct

十、 构建镜像(docker build)时指定资源限制

build-arg=[]设置镜像创建时的变量
cpu-shares设置 cpu 使用权重
cpu-period限制 CPU CFS周期
cpu-quota限制 CPU CFS配额
cpuset-cpus指定使用的CPU id
cpuset-mems指定使用的内存 id
disable-content-trust忽略校验,默认开启
-f指定要使用的Dockerfile路径
force-rm设置镜像过程中删除中间容器
isolation使用容器隔离技术
label=[]设置镜像使用的元数据
-m设置内存最大值
memory-swap设置Swap的最大值为内存+swap,"-1"表示不限swap
no-cache创建镜像的过程不使用缓存
pull尝试去更新镜像的新版本
quiet, -q安静模式,成功后只输出镜像 ID
rm设置镜像成功后删除中间容器
shm-size设置/dev/shm的大小,默认值是64M
ulimitUlimit配置
squash将 Dockerfile 中所有的操作压缩为一层
tag, -t镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
network默认 default。在构建期间设置RUN指令的网络模式

1.资源限制的主要类型

1)CPU 权重shares、quota、cpuset
2)磁盘 BPS、TPS限制,指定使用哪个磁盘、磁盘分区
3)内存 -m -swap 内存、交换分区
大部分做的是上限的限制

2.资源限制的几种方式

1)build 构建镜像时,可以指定该镜像的资源限制
2)run 将镜像跑为容器的时候,可以指定容器的资源限制

3)容器启动之后, 可以在宿主机对应容器的目录下。修改资源限制,然后重载
/sys/fs/cgroup/*(cpu、blk、mem)/docker/容器ID/→修改对应的资源限制文件参数就可以

3.资源限制的状态查询

1)docker inspect 镜像ID/容器ID 
2)直接查看宿主机对应容器ID资源限制的文件
3)docker stats

cgroup 资源 docker 原理之一 ,namespaces 6个名称空间

十一、 compose部署

Docker Compose配置常用字段

字段描述
build dockerfile context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的如果指定自定 义名称,则无法scale
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停止/启动/重启服务

环境部署所有主机安装docker环境(内容为docker基础)

yum install docker-ce -y

下载compose

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

cp -p docker-compose /usr/local/bin/

chmod +x /usr/local/bin/docker-compose

mkdir /root/compose_nginx

tree ./
./
├── docker-compose.yml        创建模板脚本
├── nginx
   ├── Dockerfile             创建容器脚本
   ├── nginx-1.15.9.tar.gz    复制源码包
└── wwwroot
    └── index.html            站点
vim /root/compose_nginx/docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:
docker-compose -f docker-compose.yml up -d

docker 基础操作/常规操作
1)image 容器的管理命令
2)dockerfile 
3)docker 网络 
4)docker 私有仓库
registry 
harbor

docker-compose→资源编排和管理手段 (docker swarm)

Harbor 服务

Harbor被部署为多个Docker 容器,因此可以部署在任何支持Docker 的Linux 发行版

上。(registry 为其核心组件)

Harbor比registry相比好处是: harbor 支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制。

服务端主机需要安装Python、 Docker 和Docker Compose。(web 环境支持的是PY语言,故需要安装Python)。

1.下载Harbor 安装程序

wget http:// harbor.orientsoft.cn/habor-1.2.2/harborofline-installer-v1.2.2.tgz

tar zxvf harbor oflie-installer-v1.2.2.tgz -C /usr/local/

2.配置Harbor 参数文件

vim /us/local/harbor/harbor.cfg

第五行  hostname = 主机ip

关于Harbor.cfg 配置文件中有两类参数:所需参数和可选参数

(1)参数

所需参数这些参数需要在配置文件Harbor.cfg 中设置。

如果用户更新它们并运行install.sh 脚本重新安装Harbor,参数将生效。

具体参数

①hostname:用于访问用户界面和reeister 服务。它应该是目标机器的IP 地址或完全限定

的域名(FQDN)。

②ui url _protocol: (http 或https, 默认为http) 用于访问UI和令牌/通知服务的协议。如

果公证处于启用状态,则此参数必须为https。(身份验证时会向Mysql数据库进行比对,

然后授予令牌)

③max_ job_workers: 镜像复制作业线程。

④db_ password: 用于db_ auth的MySQL数据库root用户的密码。

⑤customize_ crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。

当由外部来源提供密钥和根证书时,将此属性设置为off。

⑥ssl_cert: SSL 证书的路径,仅当协议设置为https 时才应用。

⑦ssl cert_key: SSL 密钥的路径,仅当协议设置为https 时才应用。

⑧secretkey_ path:用于在复制策略中加密或解密远程register 密码的密钥路径。

(2)可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbor 后在Web UI上进行更新。

如果进入Harbor.cfg, 只会在第一次启动 Harbor时生效,随后对这些参数的更新,Harbor.cfg将被忽略。

注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来

说,必须在注册或在Harbor 中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除了默认的admin 用户),auth_mode 不能被修改。具体参数如下:

①Email: Harbor 需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能

时才需要。

请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSLemailssl=TRUE。

②harbour_admin_password: 管理员的初始密码,只在Harbour第-次启动时生效。之后,此

设置将被忽略,并且应UI中设置管理员的密码。

请注意,默认的用户名/密码是admin/Harbor12345 。

③auth mode:使用的认证类型,默认情况下,它是db_auth, 即凭据存储在数据库中。对于

LDAP身份验证(以文件形式验证),请将其设置为ldap_auth。

④self_registration: 启用/禁用用户注册功能。禁用时,新用户只能由Admin 用户创建,只有

管理员用户可以在Harbour中创建新用户。

注意:当auth_mode设置为ldap_auth时,自注册功能将始终处于禁用状态,并且该标志

被忽略。

⑤Token_ expiration: 由令牌服务创建的令牌的到期时间(分钟),默认为30分钟。

project_creation. restriction: 用于控制哪些用户有权创建项目的标志。默认情况下,每个人

都可以创建一个项目。

如果将其值设置为“adminonly",那么只有admin可以创建项目。

⑥verify_remote_cert: 打开或关闭,默认打开。此标志决定了当Harbor与远程register 实例通信时是否验证SSL/TLS 证书。

将此属性设置为off 将绕过SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

另外,默认情况下,Harbor 将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如S3、Openstack Swif、Ceph 等。但需要更新common/templates/egistry/config.yml 文件。

3.启动Harbor

sh /usr/local/harbor/install.sh

打开浏览器输入主机ip即可访问harbor

4.查看Harbor启动镜像

查看镜像

docker images

查看容器

docker ps -a

cd /usr/local/harbor/

docker-compose ps

此时可使用Docker 命令在本地通过127.0.0.1 来登录和推送镜像。默认情况下,

Register服务器在端口80. 上侦听。

登录

docker login -u admin -P Harbor12345 http://127.0.0.1

下载镜像进行测试

docker pull cirros

镜像打标签

docker tag cirros 127.0.0.1/myproject-kgcirros:v1

上传镜像到Harbor

docker push 127.0.0.1/myproject-kgc/cirros:v1

以上操作都是在Harbor 服务器本地操作。如果其他客户端上传镜像到Harbor, 就会报

如下错误。出现这问题的原因Docker Registry 交互默认使用的是HTTPS,但是搭建私有镜

像默认使用的是HTTP 服务,所以与私有镜像交互时出现以下错误。

docker login -u admin -P Harbor12345 http://主机ip

会报错

解决

vim /us/ib/systemd/system/docker.service

ExecStart=/us/bin/dockerd -H fd:// -insecure-registry 主机ip

--containerd=/run/containerd/containerd.sock

systemctl daemon-reload

systemctl restart docker

docker login -u admin -p Harbor12345 http://主机ip

十二、 consul部署

consul 注册中心/注册机

服务器nginx: Nginx 、Consul、 Consul-template
服务器docker: Docker-ce、registrator(自动发现、注册的组件)

template 模板(更新)
registrator(自动发现)
        后端每构建出一个容器,会向registrator进行注册,控制consul 完成更新操作,consul会触发consul template模板进行热更新。
        核心机制:consul :自动发现、自动更新,为容器提供服务(添加、删除、生命周期辅助功能)。

1.consul服务器

mkdir /root/consul

cp consul_0.9.2_linux_amd64.zip /root/consul

cd /root/consul

unzip consul_0.9.2_linux_amd64.zip

mv consul /usr/bin


consul agent \
-server \		                  server模式
-bootstrap \	                  前端框架(node.js)
-ui \		                      可被访问的web界面
-data-dir=/var/lib/consul-data \
-bind= \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind= \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

2.通过httpd 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       集群节点详细信息

3.容器服务自动加入consul集群

(1)安装 Gliderlabs/Registrator

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

var/lib/consul-data \

-bind=
-client=0.0.0.0
-node=consul-server01 &> /var/log/consul.log &


### 


![](https://img-blog.csdnimg.cn/f99235b4ace84b8dba03479f728c7d2e.png) 


![](https://img-blog.csdnimg.cn/992e570af449487d85c865599f66e4f2.png) 


 


### 2.通过httpd 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 集群节点详细信息


### 


![](https://img-blog.csdnimg.cn/6c99db74320b42c995f32d47732a0101.png) 


 


### 3.容器服务自动加入consul集群


#### (1)安装 Gliderlabs/Registrator

[外链图片转存中…(img-z77b0O3q-1715785229166)]
[外链图片转存中…(img-hDWZbpBO-1715785229166)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值