• etcd集群部署


      etcd集群有两种启动方式 — 静态配置、服务发现。其中服务发现又包含etcd自发现和DNS自发现两种模式,本文首先简单介绍一下这两种集群启动方式,然后以静态配置为例,进行实践,讲解etcd集群的部署过程。
     
     
    etcd集群的部署方式
    1. 静态配置
      比较适用于线下环境,集群节点个数已知,各节点地址也已知的情况。一旦集群启动后,后续“--initial-cluster”参数的更新将会被忽略。
      同一个集群各个节点的配置参数需要保持相同。
    2. 服务发现
    (1)etcd自发现模式
      新集群的每个etcd节点通过现有的etcd集群进行自注册,一旦所有的member都注册完成,就组成了一个新集群。
      新集群节点启动时使用参数 --discovery 指定服务发现URL,这个URL可以是你自己现有的etcd集群节点地址,也可以使用etcd公共的服务发现,但首先需要先设置集群的节点数量。以etcd公共的服务发现为例,设置集群大小为3:
    curl https://discovery.etcd.io/new?size=3
    
    此请求会返回一个服务发现URL,假设其为:https://discovery.etcd.io/cce153802aeb2adc70eb142c2e5ccf92,则新集群节点启动设置参数为:

    --discovery https://discovery.etcd.io/cce153802aeb2adc70eb142c2e5ccf92
    
    另外,同一个集群的每个节点都必须使用参数 --name 设置一个唯一标识自己的名称,否则服务发现会因为重名而失败。
    (3)DNS自发现模式
      etcd还支持使用DNS的SRV记录进行服务发现,启动集群。此方式需要先在DNS服务器上进行相应的配置,然后在etcd集群节点启动时使用参数 --discovery-srv 指定DNS服务器域名。
     
     
    静态配置部署etcd集群
      接下来使用静态配置的方式进行实践,部署一个三节点的etcd集群。三个节点名称与ip分别如下:
    etcd01:192.168.3.102
    etcd02:192.168.3.105
    etcd03:192.168.3.103
    对每个节点都按如下步骤进行部署。
     
    1. 下载安装包
    这里下载最新版本:v3.5.0
     
    2. 解压
    tar -zxvf etcd-v3.5.0-linux-amd64.tar.gz
    
    解压后将文件夹改名为 etcd,放在 /usr/local/ 目录下。
     
    3. 创建数据存储目录
    mkdir /usr/local/etcd/data
    

    解压后将文件夹改名为 etcd,放在 /usr/local/ 目录下。

     
    4. 设置配置文件
    创建配置文件 /usr/local/etcd/conf.yml,三个节点配置文件内容分别如下:
    (1)etcd01:192.168.3.102
    name: etcd01
    data-dir: /usr/local/etcd/data
    initial-advertise-peer-urls: http://192.168.3.102:2380
    listen-peer-urls: http://192.168.3.102:2380
    listen-client-urls: http://192.168.3.102:2379,http://127.0.0.1:2379
    advertise-client-urls: http://192.168.3.102:2379
    initial-cluster-token: shiajun-etcd-cluster
    initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
    initial-cluster-state: new
    
    (2)etcd02:192.168.3.105
    name: etcd02
    data-dir: /usr/local/etcd/data
    initial-advertise-peer-urls: http://192.168.3.105:2380
    listen-peer-urls: http://192.168.3.105:2380
    listen-client-urls: http://192.168.3.105:2379,http://127.0.0.1:2379
    advertise-client-urls: http://192.168.3.105:2379
    initial-cluster-token: shiajun-etcd-cluster
    initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
    initial-cluster-state: new
    
    (3)etcd03:192.168.3.103
    name: etcd03
    data-dir: /usr/local/etcd/data
    initial-advertise-peer-urls: http://192.168.3.103:2380
    listen-peer-urls: http://192.168.3.103:2380
    listen-client-urls: http://192.168.3.103:2379,http://127.0.0.1:2379
    advertise-client-urls: http://192.168.3.103:2379
    initial-cluster-token: shiajun-etcd-cluster
    initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
    initial-cluster-state: new
    
    配置参数解析:
    name:当前etcd节点名称。
    data-dir:数据存储目录。
    initial-advertise-peer-urls:集群的其他节点通过该地址与当前节点通信。
    listen-peer-urls:当前节点通过该地址监听集群其他节点发送的信息。
    listen-client-urls:当前节点通过该地址监听客户端发送的信息。
    advertise-client-urls:客户端通过该地址与当前节点通信
    initial-cluster-token:用于区分不同的集群,同一集群的所有节点配置相同的值。
    initial-cluster:当前集群的所有节点信息,当前节点根据此信息与其他节点取得联系。
    initial-cluster-state: 本次是否为新建集群,有两个取值:new和existing。
     
    5. 开放端口
    etcd server默认使用2379端口监听客户端的请求,使用2380端口监听其他server的请求。本文配置使用的也是2379和2380两个端口。
    (1)开放 2379 和 2380 两个端口:
    firewall-cmd --zone=public --add-port=2379/tcp --permanent
    firewall-cmd --zone=public --add-port=2380/tcp --permanent
    
    (2)重启防火墙:
    firewall-cmd --reload
    
    (3)验证端口是否开放成功:
    firewall-cmd --zone=public --query-port=2379/tcp
    firewall-cmd --zone=public --query-port=2380/tcp
    
     
    6. 配置服务
    (1)创建服务配置文件 /usr/lib/systemd/system/etcd.service,内容如下:
    [Unit]
    Description=etcd
    After=network.target
    
    [Service]
    Type=notify
    ExecStart=/usr/local/etcd/etcd --config-file=/usr/local/etcd/conf.yml
    
    [Install]
    WantedBy=multi-user.target
    
    (2)启动服务:
    systemctl daemon-reload
    systemctl start etcd.service
    
    (3)查看服务是否启动成功:
    systemctl status etcd.service
    
    (4)设置服务为开机自启动:
    systemctl enable etcd.service
    
     
    7. 验证
    (1)将 etcdctl 二进制文件复制到 /usr/local/bin/ 目录下,方便执行命令:
    cp /usr/local/etcd/etcdctl /usr/local/bin/
    
    (2)查看集群成员列表:
    (3)查看集群成员健康情况:
    (4)查看etcd版本
    可使用 etcd 二进制进行查看,也可执行 etcdctl 进行查看,其中etcd二进制支持离线查看。
    (5)在其中一个节点设置一个key-value,到其他节点查看。
     
    8. 开启鉴权
    (1)添加root用户
    在开启鉴权之前必须先创建root用户,否则无法启用身份认证功能。
    etcd默认创建root用户时即创建了root角色,并为其绑定了该角色,该角色拥有所有权限。
    (2)开启鉴权
    (3)验证
    开启鉴权后,客户端请求etcd server需要使用选项 --user 带上用户名和密码,否则会报错。
     
     
     

  • 相关阅读:
    RESTful架构的设计误区
    CRUD的http请求方式
    RESTful API的安全性
    REST风格的原则
    REST架构风格理解
    ansible上手之认识Playbook
    ansible模块之file
    ansible模块之yum,yum_repository
    ansible模块之copy
    Pygame
  • 原文地址:https://www.cnblogs.com/wujuntian/p/15121004.html
Copyright © 2020-2023  润新知