IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    etcd在Windows下的单机部署

    杨粼波发表于 2021-06-18 21:11:00
    love 0

    etcd 常用配置参数

    --name       #指定节点名称
    --data-dir   #指定节点的数据存储目录,用于保存日志和快照
    --addr       #公布的 IP 地址和端口;默认为 127.0.0.1:2379
    --bind-addr   #用于客户端连接的监听地址;默认为–addr 配置
    --peers       #集群成员逗号分隔的列表;例如 127.0.0.1:2380,127.0.0.1:2381
    --peer-addr   #集群服务通讯的公布的 IP 地址;默认为 127.0.0.1:2380
    --peer-bind-addr  #集群服务通讯的监听地址;默认为-peer-addr 配置
    --wal-dir         #指定节点的 wal 文件的存储目录,若指定了该参数 wal 文件会和其他数据文件分开存储
    --listen-client-urls #监听 URL;用于与客户端通讯
    --listen-peer-urls   #监听 URL;用于与其他节点通讯
    --initial-advertise-peer-urls  #告知集群其他节点 URL
    --advertise-client-urls  #告知客户端 URL
    --initial-cluster-token  #集群的 ID
    --initial-cluster        #集群中所有节点
    --initial-cluster-state new  #表示从无到有搭建 etcd 集群
    --discovery-srv  #用于 DNS 动态服务发现,指定 DNS SRV 域名
    --discovery      #用于 etcd 动态发现,指定 etcd 发现服务的 URL


    etcd总共有两种集群模式:
    1. 单节点(Standalone);
    2. 多节点,多节点的话,因为节点数必须是奇数个,所以最小集群通常是3节点.


    etcd在windows下面有三种启动方式:
    1. 将参数直接输入到命令行里,然后通过命令行或者bat启动;
    2. 将参数写入到yml配置文件里面,通过命令行或者bat启动;
    3. 运行在docker下面了.


    1.直接命令行

    1.1单节点
    .\etcd.exe --name standalone ^
    --data-dir .\data\standalone ^
    --advertise-client-urls http://0.0.0.0:2379 ^
    --listen-client-urls http://0.0.0.0:2379 ^
    --initial-cluster-token etcd-standalone ^
    --initial-cluster-state new

    pause

    1.2多节点
    .\etcd.exe --name node01 ^
    --data-dir .\data\node01 ^
    --advertise-client-urls http://0.0.0.0:2379 ^
    --listen-client-urls http://0.0.0.0:2379 ^
    --listen-peer-urls http://0.0.0.0:2380 ^
    --initial-advertise-peer-urls http://0.0.0.0:2380 ^
    --initial-cluster-token etcd-cluster-1 ^
    --initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
    --initial-cluster-state new

    .\etcd.exe --name node02 ^
    --data-dir .\data\node02 ^
    --advertise-client-urls http://0.0.0.0:2378 ^
    --listen-client-urls http://0.0.0.0:2378 ^
    --listen-peer-urls http://0.0.0.0:2381 ^
    --initial-advertise-peer-urls http://0.0.0.0:2381 ^
    --initial-cluster-token etcd-cluster-1 ^
    --initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
    --initial-cluster-state new

    .\etcd.exe --name node03 ^
    --data-dir .\data\node03 ^
    --advertise-client-urls http://0.0.0.0:2377 ^
    --listen-client-urls http://0.0.0.0:2377 ^
    --listen-peer-urls http://0.0.0.0:2382 ^
    --initial-advertise-peer-urls http://0.0.0.0:2382 ^
    --initial-cluster-token etcd-cluster-1 ^
    --initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
    --initial-cluster-state new

    pause



    2.yml配置文件

    2.1单节点
    name: etcd-standalone
    data-dir: .\etcd-data\standalone 
    listen-client-urls: 'http://0.0.0.0:2379'
    advertise-client-urls: 'http://0.0.0.0:2379'
    initial-cluster-token: etcd-standalone
    initial-cluster-state: new

    2.2多节点
    name: node01
    data-dir: .\data\node01 
    listen-client-urls: 'http://0.0.0.0:2379'
    advertise-client-urls: 'http://0.0.0.0:2379'
    listen-peer-urls: 'http://0.0.0.0:2380'
    initial-advertise-peer-urls: 'http://0.0.0.0:2380'
    initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
    initial-cluster-token: etcd-cluster-test1
    initial-cluster-state: new

    name: node02
    data-dir: .\data\node02 
    listen-client-urls: 'http://0.0.0.0:2378'
    advertise-client-urls: 'http://0.0.0.0:2378'
    listen-peer-urls: 'http://0.0.0.0:2381'
    initial-advertise-peer-urls: 'http://0.0.0.0:2381'
    initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
    initial-cluster-token: etcd-cluster-test1
    initial-cluster-state: new
    name: node03
    data-dir: .\data\node03
    listen-client-urls: 'http://0.0.0.0:2377'
    advertise-client-urls: 'http://0.0.0.0:2377'
    listen-peer-urls: 'http://0.0.0.0:2382'
    initial-advertise-peer-urls: 'http://0.0.0.0:2382'
    initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
    initial-cluster-token: etcd-cluster-test1
    initial-cluster-state: new
    启动的bat为:
    .\etcd.exe --config-file .\conf\standalone.yml



    3.docker

    3.1单节点
    SETLOCAL ENABLEEXTENSIONS

    SET REGISTRY=quay.io/coreos/etcd
    SET ETCD_VERSION=latest

    SET DATA_DIR=/etcd-data/standalone
    SET CLUSTER_STATE=new
    SET CLUSTER_TOKEN=etcd-standalone
    SET NODE_NAME=etcd-standalone

    docker run ^
      -d --name %NODE_NAME% ^
      --volume=%DATA_DIR%:/etcd-data ^
      --publish 2379:2379 ^
      --env ALLOW_NONE_AUTHENTICATION=yes ^
      --env ETCD_NAME=%NODE_NAME% ^
      --env ETCD_DATA_DIR=%DATA_DIR% ^
      --env ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379" ^
      --env ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ^
      --env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
      --env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
      bitnami/etcd:latest

    pause

    3.2多节点
    SETLOCAL ENABLEEXTENSIONS

    SET REGISTRY=quay.io/coreos/etcd
    SET ETCD_VERSION=latest

    SET DATA_DIR=/etcd-data/node01
    SET CLUSTER_STATE=new
    SET CLUSTER_TOKEN=etcd-cluster-test1
    SET NODE_NAME=etcd-node01

    docker run ^
      -d --name %NODE_NAME% ^
      --volume=%DATA_DIR%:/etcd-data ^
      --publish 2380:2380 ^
      --publish 2379:2379 ^
      --env ALLOW_NONE_AUTHENTICATION=yes ^
      --env ETCD_NAME=%NODE_NAME% ^
      --env ETCD_DATA_DIR=%DATA_DIR% ^
      --env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 ^
      --env ETCD_ADVERTISE_CLIENT_URLS=http://host.docker.internal:2379 ^
      --env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 ^
      --env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://host.docker.internal:2380 ^
      --env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
      --env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
      --env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
      bitnami/etcd:latest


    pause

    SETLOCAL ENABLEEXTENSIONS

    SET REGISTRY=quay.io/coreos/etcd
    SET ETCD_VERSION=latest

    SET DATA_DIR=/etcd-data/node02
    SET CLUSTER_STATE=new
    SET CLUSTER_TOKEN=etcd-cluster-test1
    SET NODE_NAME=etcd-node02

    docker run ^
      -d --name %NODE_NAME% ^
      --volume=%DATA_DIR%:/etcd-data ^
      --publish 2381:2381 ^
      --publish 2378:2378 ^
      --env ALLOW_NONE_AUTHENTICATION=yes ^
      --env ETCD_NAME=%NODE_NAME% ^
      --env ETCD_DATA_DIR=%DATA_DIR% ^
      --env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2378 ^
      --env ETCD_ADVERTISE_CLIENT_URLS=http://host.docker.internal:2378 ^
      --env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2381 ^
      --env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://host.docker.internal:2381 ^
      --env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
      --env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
      --env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
      bitnami/etcd:latest


    pause

    SETLOCAL ENABLEEXTENSIONS

    SET REGISTRY=quay.io/coreos/etcd
    SET ETCD_VERSION=latest

    SET DATA_DIR=/etcd-data/node03
    SET CLUSTER_STATE=new
    SET CLUSTER_TOKEN=etcd-cluster-test1
    SET NODE_NAME=etcd-node03

    docker run ^
      -d --name %NODE_NAME% ^
      --volume=%DATA_DIR%:/etcd-data ^
      --publish 2382:2382 ^
      --publish 2377:2377 ^
      --env ALLOW_NONE_AUTHENTICATION=yes ^
      --env ETCD_NAME=%NODE_NAME% ^
      --env ETCD_DATA_DIR=%DATA_DIR% ^
      --env ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2377" ^
      --env ETCD_ADVERTISE_CLIENT_URLS="http://host.docker.internal:2377" ^
      --env ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2382" ^
      --env ETCD_INITIAL_ADVERTISE_PEER_URLS="http://host.docker.internal:2382" ^
      --env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
      --env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
      --env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
      bitnami/etcd:latest


    pause

    需要注意的是,Docker环境下,如果要本机访问,不能够使用127.0.0.1,Docker其实就是一个Linux虚拟机,所以如果要本机容器之间进行访问的话,那么就得用host.docker.internal来替换127.0.0.1,或者是创建一个网桥.


    以上的命令,我都已经形成了一个bat文件,下面提供下载:
    /Files/tx7do/etcd-bat.zip



    杨粼波 2021-06-19 05:11 发表评论


沪ICP备19023445号-2号
友情链接