• 004.etcd集群部署-动态发现


    一 etcd发现简介

    1.1 需求背景

    在实际环境中,集群成员的ip可能不会提前知道。如使用dhcp自动获取的情况,在这些情况下,使用自动发现来引导etcdetcd集群,而不是指定静态配置,这个过程被称为“发现”。
    • etcd Discovery
    使用已有的 etcd cluster 来注册和启动
    • DNS发现
    使用 DNS 启动。

    1.2 实现机制

    Discovery service protocol帮助新的etcd成员使用共享URL在集群引导阶段发现所有其他成员。
    该协议使用新的发现令牌来引导一个唯一的etcd集群。一个发现令牌只能代表一个etcd集群。只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个etcd集群。
    提示:Discovery service protocol仅用于集群引导阶段,不能用于运行时重新配置或集群监视。

    1.3 协议工作流程

    Discovery protocol是使用内部etcd集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。然后,每个新成员使用此列表引导其服务器,该列表执行与--initial-cluster标志相同的功能,即设置所有集群的成员信息。

    二 集群部署-etcd自带发现

    2.1 环境准备

    ntp配置:略 #建议配置ntp服务,保证时间一致性
    etcd版本:v3.3.9
    防火墙及SELinux:关闭防火墙和SELinux
    名称
    地址
    主机名
    备注
    etcd1
    172.24.8.71
    etcd1.example.com
     
    etcd2
    172.24.8.72
    etcd2.example.com
     
    etcd3
    172.24.8.73
    etcd3.example.com
     
      1 # hostnamectl set-hostname etcd1.example.com
      2 # hostnamectl set-hostname etcd2.example.com
      3 # hostnamectl set-hostname etcd3.example.com
      4 # vi /etc/hosts
      5 #……
      6 172.24.8.71 etcd1.example.com
      7 172.24.8.72 etcd2.example.com
      8 172.24.8.73 etcd3.example.com
    提示:CentOS6.x则修改/etc/sysconfig/network,以上为建议配置项。

    2.2 安装etcd

      1 # ETCD_VER=v3.3.9
      2 # GITHUB_URL=https://github.com/coreos/etcd/releases/download
      3 # DOWNLOAD_URL=${GITHUB_URL}
      4 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
      5 # rm -rf /tmp/etcd-download-test
      6 # mkdir -p /tmp/etcd-download-test		#创建下载保存目录
      7 # curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
      8 # tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
      9 # cp /tmp/etcd-download-test/etcd /usr/local/bin/
     10 # cp /tmp/etcd-download-test/etcdctl /usr/local/bin/
     11 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
     12 
     13 # rm -rf /tmp/etcd-download-test/
     14 # ETCDCTL_API=3
     15 # etcd --version
     16 # etcdctl --version				#查看已安装版本
    提示:所有节点均需要安装etcd。

    2.3 启动前准备

      1 # mkdir -p /var/log/etcd/			#建议创建etcd日志保存目录
      2 # mkdir -p /data/etcd			#建议创建单独的etcd数据目录

    2.4 创建集群发现

      1 [root@etcd1 ~]# curl https://discovery.etcd.io/new?size=3	#使用公共etcd发现服务
      2 https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8

    提示:size为集群节点数量,若未指定数量,则默认位3。

    2.5 启动集群

      1 [root@etcd1 ~]# etcd --name etcd1 --data-dir /data/etcd 
      2 --initial-advertise-peer-urls http://172.24.8.71:2380 
      3 --listen-peer-urls http://172.24.8.71:2380 
      4 --listen-client-urls http://172.24.8.71:2379,http://127.0.0.1:2379 
      5 --advertise-client-urls http://172.24.8.71:2379 
      6 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
      7 
      8 [root@etcd2 ~]# etcd --name etcd2 --data-dir /data/etcd 
      9 --initial-advertise-peer-urls http://172.24.8.72:2380 
     10 --listen-peer-urls http://172.24.8.72:2380 
     11 --listen-client-urls http://172.24.8.72:2379,http://127.0.0.1:2379 
     12 --advertise-client-urls http://172.24.8.72:2379 
     13 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
     14 
     15 [root@etcd3 ~]# etcd --name etcd3 --data-dir /data/etcd 
     16 --initial-advertise-peer-urls http://172.24.8.73:2380 
     17 --listen-peer-urls http://172.24.8.73:2380 
     18 --listen-client-urls http://172.24.8.73:2379,http://127.0.0.1:2379 
     19 --advertise-client-urls http://172.24.8.73:2379 
     20 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
     
    提示:每个成员必须指定不同的名称标志,否则发现将因重复的名称而失败。

    2.6 集群检测

      1 [root@etcd1 ~]# etcdctl member list
      2 [root@etcd1 ~]# etcdctl cluster-health
     
    14_thumb1

    三 集群部署-DNS发现

    参考官方文档:

    https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md

  • 相关阅读:
    解决 “页面中文字增多,字号突然变大” 的问题
    Seajs的用法
    clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
    页面中文字增多,字号会突然变大
    flex的使用实例
    移动端弹窗滚动时window窗体也一起滚动的解决办法
    display:inline-block带来的问题及解决办法
    sql 整理积累
    T-SQL建索引
    php json_encode在CI框架中的使用细节
  • 原文地址:https://www.cnblogs.com/itzgr/p/10245825.html
Copyright © 2020-2023  润新知