Docker-Compose与consul

文章目录

第一章:Docker-Compose 简介

一、什么是 Docker-Compose?

在容器化技术中,Dockerfile 可以帮助我们定义和管理一个单独的应用容器。然而,在实际工作中,我们往往需要多个容器协同工作,来完成某个完整的应用或服务。这时就需要一种方式来管理和编排多个容器。Docker Compose 正是 Docker 官方提供的一个强大工具,专门用于多容器服务的编排和管理。

1.1 Docker Compose 的概念

Docker Compose 是 Docker 官方的开源项目,它的主要功能是实现对多个 Docker 容器的快速编排。通过 Docker Compose,用户可以在一个配置文件(通常为 docker-compose.yml)中定义多个相关的服务容器(称为一个 project 项目),并通过一个命令来启动和管理这些容器。

例如,在构建一个完整的 Web 应用时,可能会需要:

  • 一个 Web 服务容器(例如,Nginx 或 Node.js 容器)
  • 一个数据库服务容器(例如,MySQL 或 PostgreSQL 容器)
  • 甚至还可以包括一个缓存容器(如 Redis)

所有这些服务可以通过 Compose 统一定义、管理和启动,而无需手动逐一操作每个容器。

1.2 Docker Compose 的分层结构

Docker Compose 的架构可以分为三个层次:

  • 工程(project): 一个 Docker Compose 项目代表了所有与当前应用相关的服务。项目由运行目录下的所有文件组成,通常包括 docker-compose.yml 和一些环境变量文件。默认情况下,项目名即为当前目录名,但也可以通过配置文件或命令行参数进行修改。

  • 服务(service): 一个服务定义了一个容器的运行配置。每个服务包含容器运行的镜像、启动命令、端口映射、环境变量、依赖关系等。服务通常与实际应用模块一一对应,比如 Web 服务、数据库服务等。

  • 容器(container): 每个服务在实际运行时,会启动一个或多个容器实例。虽然 Compose 定义了容器的运行,但它本身不负责负载均衡或服务发现,这些功能需要借助其他工具(如 Consul、Nginx)来实现。

1.3 Docker Compose 的优点

  • 简化多容器管理: 在 Compose 中,所有容器的配置都集中在一个 docker-compose.yml 文件中,这使得管理和编排变得非常方便,只需一个命令就可以启动和停止所有相关容器。

  • 跨平台支持: Compose 是用 Python 编写的,利用 Docker 提供的 API 来管理容器。因此,只要平台支持 Docker API,就可以在该平台上使用 Compose 进行编排。

  • 依赖关系管理: Compose 能够管理服务之间的依赖关系,例如让数据库服务在 Web 服务启动之前先启动。

二、Docker Compose 的核心文件:docker-compose.yml

Docker Compose 使用 docker-compose.yml 文件来定义项目中的所有服务。这个文件是 YAML 格式的,简单明了,可以通过少量的配置描述多个服务的容器、依赖关系和运行参数。

一个典型的 docker-compose.yml 文件包含以下内容:

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword

在这个示例中,docker-compose.yml 定义了两个服务:

  • web 服务: 使用 Nginx 作为 Web 服务器,暴露 80 端口,并将本地 html 目录挂载到 Nginx 容器内的静态文件目录中。
  • db 服务: 使用 MySQL 作为数据库服务,并设置了 MySQL 的 root 用户密码。

2.1 Compose 文件版本

docker-compose.yml 文件的开头有一个 version 字段,用于指定 Compose 文件的版本。不同版本的 Compose 文件支持的功能有所不同,常用的版本有:

  • version: "3" 是目前较为常用的版本,兼容性较好。
  • version: "2" 适用于一些较旧的 Docker 环境。

2.2 服务定义

每个服务(如 webdb)定义了以下重要的参数:

  • image: 指定容器使用的镜像。
  • ports: 容器与主机之间的端口映射,格式为 主机端口:容器端口
  • volumes: 主机与容器之间的卷挂载,便于数据持久化或共享文件。
  • environment: 指定容器的环境变量,通常用于传递配置项。

2.3 服务之间的依赖

在复杂项目中,不同的服务可能有依赖关系。例如,Web 服务需要依赖数据库服务,这时可以通过 depends_on 字段定义服务之间的依赖关系,确保服务按顺序启动。

services:
  web:
    image: nginx
    depends_on:
      - db
  db:
    image: mysql

在这个例子中,web 服务会等待 db 服务启动后再启动。

第二章:Docker Compose 部署指南

一、Docker Compose 环境安装

Docker Compose 是一个独立于 Docker 的工具,因此在安装了 Docker 之后,还需要单独安装 Docker Compose。

1.1 安装步骤

首先确保已经安装 Docker,然后按照以下步骤安装 Docker Compose:

# 下载 Docker 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

# 添加可执行权限
chmod +x /usr/local/bin/docker-compose

# 查看版本信息,确认安装成功
docker-compose --version

如果需要安装新版本,例如 2.26.0,可以执行以下命令:

# 下载新的 Docker Compose 版本
sudo curl -L "https://github.com/docker/compose/releases/download/2.26.0/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose

# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

通过 docker-compose --version 来验证是否安装成功。

二、YAML 文件格式及编写注意事项

YAML 是 Docker Compose 使用的配置文件格式,其语法简单明了,易于理解和使用。

2.1 YAML 基础语法

  • 大小写敏感:YAML 文件中的内容区分大小写。
  • 缩进:通过缩进表示层级关系,缩进只能使用空格,不能使用 tab 键。通常推荐使用 2 个空格。
  • 注释:使用 # 进行注释。
  • 符号:符号(如 :- 等)后面必须加一个空格。

2.2 YAML 数据结构

YAML 支持几种数据结构:

  • 对象映射(字典):键值对的形式,例如:

    animal: pets
    
  • 序列(数组):表示列表数据,例如:

    - Cat
    - Dog
    - Fish
    
  • 布尔值:表示 truefalse,例如:

    debug: true
    

2.3 YAML 示例

languages:
  - Java
  - Python
  - Go

resources:
  cpu: "2"
  memory: "1024M"
  swap: "2048M"
  disk: "60G"

三、Docker Compose 配置常用字段

docker-compose.yml 文件中包含多个配置字段,用于定义服务、网络、卷等内容。

3.1 常用字段描述

字段描述
build指定 Dockerfile 的路径,用于构建镜像。
image指定服务使用的镜像。
command覆盖容器的默认启动命令。
container_name设置容器的自定义名称。
ports宿主机与容器之间的端口映射。
volumes挂载宿主机目录或卷到容器。
environment配置环境变量,传递给容器。
depends_on定义服务的依赖关系,确保按顺序启动。
networks定义服务加入的网络。
restart设置容器的重启策略,例如 alwayson-failure

3.2 示例

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example

四、Docker Compose 常用命令

Docker Compose 提供了一系列命令,用于管理和控制容器化的服务。

命令描述
build构建服务镜像。
ps列出当前运行的容器。
up启动并创建容器。
down停止并删除容器、网络和数据卷。
logs查看容器的日志输出。
exec在容器内执行命令。
restart重启服务。

4.1 常用命令示例

  • 启动服务

    docker-compose up -d
    
  • 查看容器

    docker-compose ps
    
  • 停止服务并删除资源

    docker-compose down
    

五、Docker Compose 项目结构

在实际使用中,Docker Compose 项目通常包含多个配置文件和目录。以下是一个典型的 Docker Compose 项目结构示例:

/opt/compose_nginx/
├── docker-compose.yml           # Docker Compose 配置文件
├── nginx
│   ├── Dockerfile               # Nginx Dockerfile
│   ├── nginx-1.12.0.tar.gz      # Nginx 源码包
│   └── run.sh                   # Nginx 启动脚本
└── wwwroot
    └── index.html               # 网站首页文件

5.1 创建依赖文件

mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

创建 run.sh 文件:

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

创建 Dockerfile 文件:

vim Dockerfile
# 使用 CentOS 基础镜像
FROM centos:7
MAINTAINER this is nginx image <hmj>

# 安装依赖
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx

# 解压 Nginx 源码
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0

# 编译并安装 Nginx
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install

# 环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

# 暴露端口
EXPOSE 80 443

# 配置 Nginx 前台运行
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/run.sh"]

创建 index.html 文件:

echo "<h1>This is a test web page</h1>" > /opt/compose_nginx/wwwroot/index.html

5.2 编写 docker-compose.yml 文件

version: '3'
services:
  nginx:
    container_name: web1
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - "1216:80"
      - "1217:443"
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16

5.3 启动 Docker Compose 项目

进入项目目录并启动容器:

cd /opt/compose_nginx/
docker-compose up -d

5.4 查看容器状态

使用以下命令查看容器运行状态:

docker-compose ps

此时,访问浏览器 http://<宿主机IP>:1216,应该可以看到 index.html 文件的内容。

5.5 使用命令启动和管理项目

使用以下命令启动 Docker Compose 项目:

docker-compose -f docker-compose.yml up -d
  • -f, --file FILE:指定要使用的 compose 模板文件,默认为 docker-compose.yml
  • -p, --project-name NAME:指定项目名称,默认使用目录名称。
  • -d:在后台运行。

查看运行中的容器:

docker ps -a

输出示例:

CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
b48dceee248f   compose_nginx_nginx   "/run.sh"   About a minute ago   Up About a minute   0.0.0.0:1216->80/tcp, 0.0.

第三章:Consul 服务注册与部署详解

一、什么是服务注册与发现

服务注册与发现是微服务架构中的核心组件,用于解决服务节点动态变化的问题。在最初的单节点架构中,服务之间的调用仅通过静态的接口访问,但随着系统规模的扩大和分布式架构的普及,前端必须了解后端所有服务的网络位置。这样就引入了几个问题:

  • 配置复杂:如果前端需要调用多个后端服务,每个服务的网络位置都需要手动配置,增加了工作量和出错的风险。
  • 动态变更问题:当后端服务的网络位置变化时,所有调用者都需要更新配置,导致维护困难。

为了解决这些问题,服务注册与发现被引入:

  • 后端服务动态地将自己的网络位置注册到服务发现模块中,该模块通过键值对(K-V)形式记录下服务的名称(Key)和对应的 IP 和端口(Value)。
  • 前端服务不再需要关心后端服务的具体位置,而是通过服务发现模块来动态获取服务的网络位置。

通过这种方式,实现了前端和后端的解耦,简化了服务的管理和配置。

二、什么是 Consul

Consul 是由 HashiCorp 开发的一个分布式、高可用的服务管理平台,支持服务注册与发现、健康检查、Key/Value 存储、多数据中心架构等功能。

Consul 提供了以下核心功能:

  • 服务注册与发现:通过 DNS 或 HTTP 接口轻松实现服务的注册与发现。
  • 健康检查:内置的健康检查机制可以快速检测集群中的服务状态,防止流量被转发到故障服务。
  • Key/Value 存储:提供简单的存储系统,适用于存储动态配置信息。
  • 多数据中心支持:无需复杂配置即可支持多个数据中心。

Consul 使用 Raft 一致性算法,确保服务的高可用性。Consul 集群中的每个节点都运行一个Agent,该 Agent 可以作为 Server 或 Client 角色。官方建议每个数据中心至少有 3 到 5 个 Server 节点,以保证数据的持久化和故障恢复。

2.1 Consul 的关键组件

  • Server 节点:保存注册的服务信息并进行持久化。Server 节点还负责集群的选举和同步。
  • Client 节点:将服务注册信息转发给 Server 节点,不保存服务数据。
  • Leader 节点:Server 节点中选举出的 Leader 负责将服务信息同步给其他 Server 节点,并进行节点健康检查。

三、Consul 的部署

在本节中,我们将介绍如何在两台服务器上部署 Consul 和相关组件。

3.1 环境准备

环境信息:
  • Consul 服务器:192.168.10.23(运行 Consul 服务、Nginx 服务、Consul-Template 守护进程)
  • Registrator 服务器:192.168.10.13(运行 Registrator 容器和 Nginx 容器)

首先,确保两台服务器的防火墙已关闭并关闭 SELinux:

systemctl stop firewalld.service
setenforce 0

3.2 在 Consul 服务器上安装并配置 Consul

1. 安装 Consul
mkdir /opt/consul
cp consul_0.9.2_linux_amd64.zip /opt/consul
cd /opt/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/
2. 启动 Consul 服务端

使用以下命令启动 Consul 服务端,并设置为后台运行:

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.10.23 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
参数说明:
  • -server:以 Server 模式启动,默认是 Client 模式。
  • -bootstrap:让该节点成为 Bootstrap Server,并可进行 Server Leader 的选举。
  • -ui:开启 Web UI 界面,访问地址为 http://localhost:8500/ui
  • -data-dir:指定数据存储目录。
  • -bind:指定集群内部通讯地址,集群内所有节点必须能够访问该地址。
  • -client:指定 Consul 的客户端绑定地址,提供 HTTP、DNS 和 RPC 服务。
3. 查看 Consul 的运行状态

启动 Consul 后,Consul 默认监听以下端口:

  • 8300:用于 Leader 选举和数据复制。
  • 8301:用于 LAN 内的 Gossip 协议通信。
  • 8302:用于 WAN 内的 Gossip 协议通信。
  • 8500:用于访问 Web UI 界面。
  • 8600:用于 DNS 协议。

可以通过以下命令查看 Consul 是否正常启动:

netstat -natp | grep consul
4. 查看集群状态
  • 查看节点成员状态:

    consul members
    
  • 查看 Raft 集群状态:

    consul operator raft list-peers
    
  • 查看当前 Leader 节点:

    consul info | grep leader
    
5. 通过 HTTP API 获取 Consul 信息
  • 查看集群中 Server 成员:

    curl 127.0.0.1:8500/v1/status/peers
    
  • 查看当前 Server Leader:

    curl 127.0.0.1:8500/v1/status/leader
    
  • 查看已注册的服务:

    curl 127.0.0.1:8500/v1/catalog/services
    
  • 查看 Nginx 服务信息:

    curl 127.0.0.1:8500/v1/catalog/nginx
    
  • 查看集群节点信息:

    curl 127.0.0.1:8500/v1/catalog/nodes
    

四、Registrator 服务器部署与配置

4.1 安装 Gliderlabs/Registrator

Registrator 是一个自动化工具,能够监控 Docker 容器的启动与停止,并将容器信息自动注册到服务发现系统中(如 Consul、Etcd 等)。通过使用 Registrator,可以在容器启动时自动加入到 Consul 中,并在停止时自动注销。

以下命令在 Registrator 服务器上运行,用于启动 Registrator,并将服务信息注册到 Consul:

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
--ip=192.168.10.13 \
consul://192.168.10.23:8500
参数说明:
  • --net=host:使用宿主机的网络模式,允许容器直接访问宿主机网络。
  • -v /var/run/docker.sock:/tmp/docker.sock:挂载 Docker 守护进程的 Unix 套接字,使得 Registrator 可以监控 Docker 容器的状态。
  • --restart=always:设置 Registrator 容器在退出时自动重启。
  • --ip:指定 Registrator 的 IP 地址为宿主机的 IP。
  • consul://192.168.10.23:8500:指定 Consul 服务器的 IP 和端口,用于服务注册。

4.2 测试服务发现功能

通过以下命令在 Registrator 服务器上启动几个测试服务:

docker run -itd -p 83:80 --name test-01 -h test01 nginx
docker run -itd -p 84:80 --name test-02 -h test02 nginx
docker run -itd -p 88:80 --name test-03 -h test03 httpd
docker run -itd -p 89:80 --name test-04 -h test04 httpd

这些命令分别启动了 Nginx 和 Httpd 容器,注册到 Consul 中。

4.3 验证服务是否成功注册到 Consul

通过浏览器访问 Consul 的 Web UI,打开 http://192.168.10.23:8500,点击 “NODES” 选项,查看 Consul 节点中的服务。如果配置正确,你将看到 5 个注册的服务,包括 Nginx 和 Httpd。

可以在 Consul 服务器上使用 curl 命令测试服务是否正确注册:

curl 127.0.0.1:8500/v1/catalog/services

输出示例:

{"consul":[],"httpd":[],"nginx":[]}

五、Consul-Template 部署与配置

Consul-Template 是一个用于从 Consul 中实时获取服务信息并更新配置文件的工具。它能够根据服务变化动态更新 Nginx、HAProxy 等的配置,并自动重载服务。

5.1 准备 Nginx 模板文件

首先,在 Consul 服务器上创建 Nginx 的模板文件:

vim /opt/consul/nginx.ctmpl

内容如下:

upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.Port}};
   {{end}}
}

server {
    listen 8000;
    server_name localhost 192.168.10.23;
    access_log /var/log/nginx/kgc.com-access.log;
    index index.html index.php;
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Client-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://http_backend;
    }
}

这个模板文件定义了 Nginx 的反向代理配置,代理到 Consul 中的 nginx 服务。

5.2 编译安装 Nginx

在 Consul 服务器上安装 Nginx:

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

5.3 配置 Nginx

编辑 Nginx 配置文件,增加虚拟主机目录:

vim /usr/local/nginx/conf/nginx.conf

http 配置块中添加如下配置:

http {
    include       mime.types;
    include       vhost/*.conf;   # 添加虚拟主机目录
    default_type  application/octet-stream;
    ...
}

创建虚拟主机目录和日志文件目录:

mkdir /usr/local/nginx/conf/vhost
mkdir /var/log/nginx

启动 Nginx 服务:

nginx

5.4 配置并启动 Consul-Template

下载并安装 Consul-Template:

unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/

启动 Consul-Template 服务,实时监控 Consul 中的 Nginx 服务变化并更新 Nginx 配置:

consul-template --consul-addr 192.168.10.23:8500 \
--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

在另外一个终端中查看生成的 Nginx 配置文件:

cat /usr/local/nginx/conf/vhost/kgc.conf

输出示例:

upstream http_backend {
   server 192.168.10.13:83;
   server 192.168.10.13:84;
}

server {
    listen 8000;
    server_name 192.168.10.23;
    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;
        proxy_set_header Client-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://http_backend;
    }
}

5.5 测试 Consul-Template 配置

通过 Docker 查看当前运行的容器:

docker ps -a

编辑 Nginx 容器的 index.html 文件,测试 Nginx 的负载均衡功能:

docker exec -it 4f74d2c38844 bash
echo "this is test1 web" > /usr/share/nginx/html/index.html

docker exec -it b73106db285b bash
echo "this is test2 web" > /usr/share/nginx/html/index.html

访问 http://192.168.10.23:8000/ 并刷新页面,可以看到负载均衡在不同的 Nginx 容器之间轮询。

5.6 增加 Nginx 容器节点

新增一个 Nginx 容器节点,验证服务发现和配置更新功能:

docker run -itd -p 85:80 --name test-05 -h test05 nginx

观察 Consul-Template 是否自动更新 /usr/local/nginx/conf/vhost/kgc.conf 文件并重载 Nginx。

查看 Nginx 配置文件内容:

cat /usr/local/nginx/conf/vhost/kgc.conf

输出示例:

upstream http_backend {
   server 192.168.10.13:83;
   server 192.168.10.13:84;
   server 192.168.10.13:85;
}

查看各个 Nginx 容器的日志,验证请求是否被轮询到各个容器:

docker logs -f test-01
docker logs -f test-02
docker logs -f test-05

这样,服务发现和负载均衡的功能已经通过 Consul 和 Nginx 配置成功。

五、Consul 多节点集群配置

为了增强 Consul 集群的高可用性和容错能力,我们可以通过添加多台 Consul 服务器来构建分布式集群。本节将介绍如何在已有的 Consul 集群中添加一台新服务器。

5.1 添加新节点到 Consul 集群

我们将一台已有 Docker 环境的服务器(192.168.10.14/24)加入到现有的 Consul 集群中。通过以下命令在新服务器上启动 Consul,并将其添加到现有集群:

consul agent \
-server \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.10.14 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.10.23 &> /var/log/consul.log &
参数说明:
  • -server:启动 Consul 节点为 Server 模式。
  • -ui:开启 Web UI 界面。
  • -data-dir:指定数据存储目录。
  • -bind:设置集群通讯地址,指定为新节点的 IP 地址。
  • -client:设置客户端访问地址,指定为 0.0.0.0 允许所有外部访问。
  • -node:指定新节点的名称,在集群中必须唯一。
  • -enable-script-checks=true:启用脚本健康检查功能,确保节点能够正常运行。
  • -datacenter=dc1:指定数据中心名称。
  • -join 192.168.10.23:指定要加入的集群主节点的 IP 地址。

5.2 查看集群状态

添加节点后,可以通过以下命令检查集群中节点的状态:

consul members

输出示例:

Node             Address             Status  Type    Build  Protocol  DC
consul-server01  192.168.10.23:8301  alive   server  0.9.2  2         dc1
consul-server02  192.168.10.14:8301  alive   server  0.9.2  2         dc1

这表明新节点 consul-server02 已成功加入集群,并处于活跃状态。

5.3 查看 Raft 集群信息

通过 raft 命令可以查看集群中的 Raft 状态,以及节点的角色(Leader 或 Follower):

consul operator raft list-peers

输出示例:

Node             ID                  Address             State     Voter  RaftProtocol
consul-server01  192.168.10.23:8300  192.168.10.23:8300  leader    true   2
consul-server02  192.168.10.14:8300  192.168.10.14:8300  follower  true   2

从以上输出可以看到:

  • consul-server01 是当前的集群 Leader。
  • consul-server02 是 Follower,正在跟随 Leader 同步数据。

5.4 验证 Consul 多节点的工作

通过浏览器访问 http://192.168.10.23:8500/uihttp://192.168.10.14:8500/ui,可以看到 Consul 的 Web UI 界面。在 “Nodes” 页面中,可以看到集群中的所有节点,确认多节点配置成功。

此外,通过监控集群的 Raft 日志和节点健康状况,可以确保新加入的节点正常参与集群的服务发现和数据同步。
erver02 192.168.10.14:8301 alive server 0.9.2 2 dc1


这表明新节点 `consul-server02` 已成功加入集群,并处于活跃状态。

### 5.3 查看 Raft 集群信息

通过 `raft` 命令可以查看集群中的 Raft 状态,以及节点的角色(Leader 或 Follower):

```bash
consul operator raft list-peers

输出示例:

Node             ID                  Address             State     Voter  RaftProtocol
consul-server01  192.168.10.23:8300  192.168.10.23:8300  leader    true   2
consul-server02  192.168.10.14:8300  192.168.10.14:8300  follower  true   2

从以上输出可以看到:

  • consul-server01 是当前的集群 Leader。
  • consul-server02 是 Follower,正在跟随 Leader 同步数据。

5.4 验证 Consul 多节点的工作

通过浏览器访问 http://192.168.10.23:8500/uihttp://192.168.10.14:8500/ui,可以看到 Consul 的 Web UI 界面。在 “Nodes” 页面中,可以看到集群中的所有节点,确认多节点配置成功。

此外,通过监控集群的 Raft 日志和节点健康状况,可以确保新加入的节点正常参与集群的服务发现和数据同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值