• etcd集群安装部署


    1. 集群架构

    由于我们只有两个机房,所以选择的是以上图中所示的数据同步方案, 通过做镜像的方式保证两个集群的数据实时同步。 

    整体架构如上图所示, 整个全局元数据中心包括两套集群,廊坊集群和马驹桥集群; 同时服务的只会有一个集群, 两个集群通过mirror-maker实时同步元数据,保证元数据无差别。 

    正常访问流程如下: 

    用户=》 OPS域名 =》 域名解析到廊坊  =》 通过负载均衡路由廊坊机房的4001端口 =》 访问数据返回

    以上描述了一次正常的请求; 整体架构比较简单,主要是因为ETCD集群无法部署在三个机房(没有资源);所以选择了通过但机房部署,多机房数据同步的方案进行实时数据备份; 

    2. 灾备方案

          (1). 通过mirror-maker实时做镜像的方式同步数据,如果出现主机房服务挂了可以通过切换域名的形式切换到灾备机房;这个过程中数据是可以保持一致的。

          (2). etcd集群的数据每隔半个小时会备份一次数据, 备份的数据会直接上传到云存储上,一旦系统出现问题可以随时通过备份数据进行故障恢复;保证业务的可用性

    3. 安装流程

    a. 通过官网说明下载最新的ETCD程序

               https://github.com/coreos/etcd/releases

               可以参考以下脚本,下载并且解压

    #!/bin/bash
    ETCD_VER=v3.3.5
    GITHUB_URL=https://github.com/coreos/etcd/releases/download
    DOWNLOAD_URL=${GITHUB_URL}
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
     
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1

    b. 校验版本

             通过执行以下命令教研ETCD版本是否和是我们下载的版本

    #校验etcd版本
    $/tmp/etcd-download-test/etcd --version
    etcd Version: 3.3.5
    Git SHA: cb2a496
    Go Version: go1.8.3
    Go OS/Arch: linux/amd64
     
    #校验etcdctl版本
    $ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    etcdctl version: 3.3.5
    API version: 3.2

    c. ETCD启动

              通过以上步骤校验完版本之后就可以开始整理命令行参数启动etcd了; 

              这里我们直接使用ETCD配置文件配置相应的集群信息,ETCD配置文件如下:

        vim /etc/etcd/etcd.conf 

              192.168.186.95 配置 

    ETCD_NAME=etcd95
    ETCD_DATA_DIR="/export/Data/etcd/etcd95"
    ETCD_STRICT_RECONFIG_CHECK=true
    ETCD_ADVERTISE_CLIENT_URLS="http://192.168.186.95:4001"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.186.95:7001"
    ETCD_LISTEN_CLIENT_URLS="http://192.168.186.95:4001"
    ETCD_LISTEN_PEER_URLS="http://192.168.186.95:7001"
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-global-cluster"
    ETCD_INITIAL_CLUSTER="etcd95=http://192.168.186.95:7001,etcd53=http://192.168.186.53:7001,etcd73=http://192.168.186.73:7001"

    192.168.186.53 配置 

     
    ETCD_NAME=etcd53
    ETCD_DATA_DIR="/export/Data/etcd/etcd53"
    ETCD_STRICT_RECONFIG_CHECK=true
    ETCD_ADVERTISE_CLIENT_URLS="http://192.168.186.53:4001"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.186.53:7001"
    ETCD_LISTEN_CLIENT_URLS="http://192.168.186.53:4001"
    ETCD_LISTEN_PEER_URLS="http://192.168.186.53:7001"
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-global-cluster"
    ETCD_INITIAL_CLUSTER="etcd95=http://192.168.186.95:7001,etcd53=http://192.168.186.53:7001,etcd73=http://192.168.186.73:7001"

     192.168.186.73 配置 

    ETCD_NAME=etcd73
    ETCD_DATA_DIR="/export/Data/etcd/etcd73"
    ETCD_STRICT_RECONFIG_CHECK=true
    ETCD_ADVERTISE_CLIENT_URLS="http://192.168.186.73:4001"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.186.73:7001"
    ETCD_LISTEN_CLIENT_URLS="http://192.168.186.73:4001"
    ETCD_LISTEN_PEER_URLS="http://192.168.186.73:7001"
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-global-cluster"
    ETCD_INITIAL_CLUSTER="etcd95=http://192.168.186.95:7001,etcd53=http://192.168.186.53:7001,etcd73=http://192.168.186.73:7001"

    d. 设置守护进程

           配置每台机器的环境变量配置文件之后,需要设置守护进程;      

     vim /usr/lib/systemd/system/etcd.service 
    [Unit]
    Description=etcd key-value store
    Documentation=https://github.com/coreos/etcd
    After=network.target
    [Service]
    User=etcd
    Type=notify
    #这个文件特别关键,etcd使用的环境变量都需要通过环境变量文件读取
    EnvironmentFile=/etc/etcd/etcd.conf
    ExecStart=/usr/bin/etcd --auto-compaction-retention '1' --max-request-bytes '33554432' --quota-backend-bytes '8589934592'
    Restart=always
    RestartSec=10s
    LimitNOFILE=40000
    [Install]
    WantedBy=multi-user.target

      e. 注意事项

           一定需要确认数据目录对用户etcd有读写权限,否则服务可能无法正确启动

      f. 启动

    #启动前先创建软连接
    ln -s /export/App/etcd-v3.2.2/etcd /usr/bin/etcd
     
    #执行以下命令启动etcd
    systemctl daemon-reload
    systemctl start etcd
    systemctl enable etcd

    g.状态校验

    #启动完成之后需要进行状态校验
    ./etcdctl --endpoints="http://192.168.186.95:4001,http://192.168.186.53:4001,http://192.168.186.73:4001" member list
    ./etcdctl --endpoints="http://192.168.186.95:4001,http://192.168.186.53:4001,http://192.168.186.73:4001"  cluster-health
     
     
    返回信息如下:
    4b68b919da5a093d: name=etcd95 peerURLs=http://192.168.186.95:7001 clientURLs=http://192.168.186.95:4001 isLeader=true
    93fed96717b4821c: name=etcd53 peerURLs=http://192.168.186.53:7001 clientURLs=http://192.168.186.53:4001 isLeader=false
    ed0bc855ed0b5faf: name=etcd73 peerURLs=http://192.168.186.73:7001 clientURLs=http://192.168.186.73:4001 isLeader=false
     
    member 4b68b919da5a093d is healthy: got healthy result from http://192.168.186.95:4001
    member 93fed96717b4821c is healthy: got healthy result from http://192.168.186.53:4001
    member ed0bc855ed0b5faf is healthy: got healthy result from http://192.168.186.73:4001
  • 相关阅读:
    断开ssh链接在后台继续运行命令
    linux 隐藏显示终端光标
    shell脚本中echo显示内容带颜色
    Linux/Unix下pid文件作用浅析
    使用autotools自动生成Makefile并在此之上使用dh-make生成可发布的deb程序包(详解)
    Linux的tmpfs文件系统
    kernel编译
    Qt之读取配置文件
    android之TCP客户端框架
    android之模拟器更新底层
  • 原文地址:https://www.cnblogs.com/davygeek/p/7154780.html
Copyright © 2020-2023  润新知