基于Docker的Etcd分布式部署的方法步骤

yizhihongxing

下面我将详细讲解基于Docker的Etcd分布式部署的方法步骤。

准备工作

在进行Etcd分布式部署前,需要先准备以下环境:

  • 安装了Docker和Docker Compose的Linux服务器节点,建议使用Ubuntu 18.04及以上版本。
  • 至少三台Linux服务器节点,建议使用3台或其倍数个节点。

步骤一:编写Docker Compose文件

  1. 在任意一台Linux服务器上创建一个文件夹,用于存放Docker Compose文件。可以使用如下命令:
mkdir etcd_compose && cd etcd_compose
  1. 在该文件夹下创建一个空白的Docker Compose文件,可以使用如下命令:
touch docker-compose.yml
  1. 使用文本编辑器(如vim、nano等)打开Docker Compose文件,编写如下代码:
version: '3'

services:
  etcd1:
    image: quay.io/coreos/etcd:v3.5.0-rc.3
    volumes:
      - etcd_data:/etcd-data
    command: etcd --name etcd1 --initial-advertise-peer-urls http://etcd1:2380 --listen-peer-urls http://0.0.0.0:2380 --advertise-client-urls http://etcd1:2379 --listen-client-urls http://0.0.0.0:2379 --initial-cluster etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 --initial-cluster-token my-etcd-token --initial-cluster-state new --auto-compaction-retention 1
    ports:
      - "2379:2379"
      - "2380:2380"
    networks:
      - etcd-network

  etcd2:
    image: quay.io/coreos/etcd:v3.5.0-rc.3
    volumes:
      - etcd_data:/etcd-data
    command: etcd --name etcd2 --initial-advertise-peer-urls http://etcd2:2380 --listen-peer-urls http://0.0.0.0:2380 --advertise-client-urls http://etcd2:2379 --listen-client-urls http://0.0.0.0:2379 --initial-cluster etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 --initial-cluster-token my-etcd-token --initial-cluster-state new --auto-compaction-retention 1
    ports:
      - "2381:2380"
      - "2379:2379"
    networks:
      - etcd-network

  etcd3:
    image: quay.io/coreos/etcd:v3.5.0-rc.3
    volumes:
      - etcd_data:/etcd-data
    command: etcd --name etcd3 --initial-advertise-peer-urls http://etcd3:2380 --listen-peer-urls http://0.0.0.0:2380 --advertise-client-urls http://etcd3:2379 --listen-client-urls http://0.0.0.0:2379 --initial-cluster etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 --initial-cluster-token my-etcd-token --initial-cluster-state new --auto-compaction-retention 1
    ports:
      - "2382:2380"
      - "2379:2379"
    networks:
      - etcd-network

volumes:
  etcd_data:

networks:
  etcd-network:

该文件定义了三个Etcd节点,分别是etcd1、etcd2和etcd3。每个节点都使用quay.io/coreos/etcd:v3.5.0-rc.3镜像作为容器镜像,并挂载一个名为etcd_data的卷用于存放Etcd数据。以etcd1为例,其命令行参数说明如下:

  • --name etcd1:指定节点名称为etcd1。
  • --initial-advertise-peer-urls http://etcd1:2380:指定节点地址和端口。
  • --listen-peer-urls http://0.0.0.0:2380:指定节点监听地址和端口。
  • --advertise-client-urls http://etcd1:2379:指定客户端地址和端口。
  • --listen-client-urls http://0.0.0.0:2379:指定客户端监听地址和端口。
  • --initial-cluster etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380:指定初始集群成员列表。
  • --initial-cluster-token my-etcd-token:指定初始集群标识符。
  • --initial-cluster-state new:指定初始集群状态为new。
  • --auto-compaction-retention 1:指定自动压缩保留时间为1天。

步骤二:启动Docker容器

  1. 在Linux服务器上运行以下命令来启动所有Etcd节点的Docker容器。
docker-compose up -d
  1. 等待一段时间,使用以下命令查看Docker容器的状态。
docker-compose ps

如果所有三个节点的状态均为Up,则表示容器已成功启动。

示例:使用Etcd集群存储配置信息

在本示例中,我们将使用Etcd分布式集群存储一个简单的键值对:name=etcd_test。

  1. 在任意一台Linux服务器节点上安装etcdctl命令行工具,可以使用以下命令:
sudo apt-get update && sudo apt-get install etcd-client -y
  1. 使用etcdctl工具连接到Etcd分布式集群,并在其中添加一个名为name的键,并设置其值为etcd_test。可以使用以下命令:
export ETCDCTL_ENDPOINTS="http://localhost:2379,http://localhost:2381,http://localhost:2382"
etcdctl put name "etcd_test"
  1. 使用etcdctl工具从Etcd分布式集群中获取刚才添加的键值对。可以使用以下命令:
etcdctl get name

结果应该为:name=etcd_test。

示例:使用Etcd集群实现服务发现

在本示例中,我们将使用Etcd分布式集群来实现一个简单的服务发现功能。

  1. 在任意一台Linux服务器节点上安装nginx,并启动nginx服务。
sudo apt-get update && sudo apt-get install nginx -y
sudo systemctl start nginx
  1. 配置nginx监听8080端口,并用以下内容替换默认的index.html文件。
<!DOCTYPE html>
<html>
  <head>
    <title>ETCD Sample Page</title>
  </head>
  <body>
    <ul>
      {{range $key, $value := .}}
      <li>{{$key}} - {{$value}}</li>
      {{end}}
    </ul>
  </body>
</html>
  1. 重启nginx服务
sudo systemctl restart nginx
  1. 使用etcdctl工具连接到Etcd分布式集群,并添加一个名为web的服务,同时将nginx监听的地址和端口添加到该服务的值中。可以使用以下命令:
export ETCDCTL_ENDPOINTS="http://localhost:2379,http://localhost:2381,http://localhost:2382"
etcdctl put service/web "http://<nginx-ip-address>:8080"

其中,<nginx-ip-address>须替换为nginx所在Linux服务器节点的IP地址。

  1. 在任意一台Linux服务器节点上安装curl工具,并使用curl工具连接到Etcd分布式集群,查询名为web的服务。可以使用以下命令:
curl http://<etcd-ip-address>:2379/v2/keys/service/web

其中,<etcd-ip-address>须替换为任意一台运行Etcd分布式集群的Linux服务器节点的IP地址。结果应该为:{"action":"get","node":{"key":"/service/web","value":"http://<nginx-ip-address>:8080","modifiedIndex":3,"createdIndex":3}}

  1. 在任意一台Linux服务器节点上使用curl工具连接到Etcd分布式集群查询名为web的服务的值,并将其输出到前面所配置的index.html文件中。可以使用以下命令:
export ETCDCTL_ENDPOINTS="http://localhost:2379,http://localhost:2381,http://localhost:2382"
etcdctl get service/web -w json | jq -r '.node.value' | curl -sL -D - -X GET -H "Content-Type: text/html" -H 'Accept: text/html' -o /usr/share/nginx/html/index.html -K -

接下来,可以在任意一台Linux服务器上使用浏览器访问该服务所在的nginx地址和端口(如http://:8080/),就可以看到服务发现的结果了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Docker的Etcd分布式部署的方法步骤 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Docker命令行入门大全(这18条,你不得不知)

    下面为大家详细讲解“Docker命令行入门大全(这18条,你不得不知)”的攻略。 1. docker version 该命令可以查看Docker客户端和服务端的版本信息,用于确认Docker是否正确安装和运行。具体的使用方法为: docker version 2. docker info 该命令可以查看Docker的一些详细信息,包括镜像数量、容器数量、运行…

    Docker 2023年5月16日
    00
  • Docker 容器互联互通的实现方法

    当使用 Docker 部署多个容器时,这些容器之间需要进行互相通信才能完成某些应用程序的功能。下面就是实现 Docker 容器互联互通的方法攻略。 方法一:使用 Docker 服务发现 Docker 官方提供了 Docker 服务发现框架(Docker Swarm Mode)。通过 Docker Swarm Mode,可以将多个 Docker 节点集中管理并…

    Docker 2023年5月15日
    00
  • 使用docker mediawiki,搭建网页wiki

      我只是想做一个大家都能访问的wiki,用于成员间共享和维护一些文档。找到了docker的mediawiki,这里记录一下我怎么搭的吧。   首先,如果你在一个局域网里,有公用的可以访问的服务器,那可以直接在那上面搭建,比如我们实验室的服务器,只要在校园网下,都可以访问。不过这篇博客是在我的阿里云的服务器上实现的,我租的是阿里云轻量应用型服务器,原因是便宜…

    Docker 2023年4月11日
    00
  • Prometheus Operator 与 kube-prometheus 之一-简介

    简介 Prometheus Operator Prometheus Operator: 在 Kubernetes 上管理 Prometheus 集群。该项目的目的是简化和自动化基于 Prometheus 的 Kubernetes 集群监控堆栈的配置。 kube-prometheus 最简单的方法是将 Prometheus Operator 作为 kube-p…

    2023年4月8日
    00
  • SRS+Docker部署教程

    SRS+Docker部署教程 安装Docker Windows安装docker 安装Hyper-V Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。 但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VM…

    2023年4月8日
    00
  • docker-compose 快速部署Prometheus,监控docker 容器, 宿主机,ceph — cluster集群

    话不多说上菜:  现在环境是这样: ceph 4台: 192.168.100.21  ceph-node1 192.168.100.22  ceph-node2 192.168.100.23  ceph-node3 192.168.100.25  ceph-node5 #已经部署好一个ceph cluster 集群    四个 osd  三个mon   没有…

    Docker 2023年4月16日
    00
  • Docker系列器九:docker-compose与docker-compose.yml语法

    一般情况下:docker 安装wordpress,流程是:docker run -d –name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql docker run -d -e WORDPRESS_DB_HOS…

    Docker 2023年4月13日
    00
  • 10分钟学会docker

    10分钟学会docker 什么是docker Docker是一种容器化技术,它可以让开发者将应用程序和依赖项打包到一个独立的容器中,从而使得应用程序可以跨平台运行并且更加轻便、灵活。Docker容器可以在任何支持Docker的主机上运行,例如Linux、MacOS和Windows系统。 安装docker 在进行Docker开发之前,我们首先需要安装Docke…

    Docker 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部