zoukankan      html  css  js  c++  java
  • ETCD集群安装配置及简单应用 老版本

    一、环境准备

    • CentOS Linux release 7.3.1611 (Core) 
    • etcd-v3.2.6

    二、ETCD下载

    https://github.com/coreos/etcd/releases/download/v3.2.6/etcd-v3.2.6-linux-amd64.tar.gz

    三、ETCD安装配置

    1.部署架构

    • 192.168.108.128 节点1
    • 192.168.108.129 节点2
    • 192.168.108.130 节点3

    2.解压安装:

    1.  
      $ tar -zxvf  etcd-v3.2.6-linux-amd64.tar.gz -C /opt/
    2.  
      $ cd /opt
    3.  
      $ mv etcd-v3.2.6-linux-amd64  etcd-v3.2.6
    4.  
      # 创建etcd配置文件目录
    5.  
      $ mkdir /etc/etcd          

    3.创建etcd配置文件:

    $ vi /etc/etcd/conf.yml

    节点1,添加如下内容:

    1.  
      name: etcd-1
    2.  
      data-dir: /opt/etcd-v3.2.6/data
    3.  
      listen-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379
    4.  
      advertise-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379
    5.  
      listen-peer-urls: http://192.168.108.128:2380
    6.  
      initial-advertise-peer-urls: http://192.168.108.128:2380
    7.  
      initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
    8.  
      initial-cluster-token: etcd-cluster-token
    9.  
      initial-cluster-state: new

    节点2,添加如下内容:

    1.  
      name: etcd-2
    2.  
      data-dir: /opt/etcd-v3.2.6/data
    3.  
      listen-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379
    4.  
      advertise-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379
    5.  
      listen-peer-urls: http://192.168.108.129:2380
    6.  
      initial-advertise-peer-urls: http://192.168.108.129:2380
    7.  
      initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
    8.  
      initial-cluster-token: etcd-cluster-token
    9.  
      initial-cluster-state: new

    节点3,添加如下内容:

    1.  
      name: etcd-3
    2.  
      data-dir: /opt/etcd-v3.2.6/data
    3.  
      listen-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379
    4.  
      advertise-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379
    5.  
      listen-peer-urls: http://192.168.108.130:2380
    6.  
      initial-advertise-peer-urls: http://192.168.108.130:2380
    7.  
      initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
    8.  
      initial-cluster-token: etcd-cluster-token
    9.  
      initial-cluster-state: new

    4.更新etcd系统默认配置:

    当前使用的是etcd v3版本,系统默认的是v2,通过下面命令修改配置。

    $ vi /etc/profile

    在文件末尾追加:

    export ETCDCTL_API=3

     使文件生效:

    $ source /etc/profile

    四、ETCD命令

    $ cd  /opt/etcd-v3.2.6

    1.查看版本信息:

    1.  
      $ ./etcdctl version
    2.  
       
    3.  
      etcdctl version: 3.2.6
    4.  
      API version: 3.2

    2.启动命令:

    $ ./etcd --config-file=/etc/etcd/conf.yml

    3.查看集群成员信息:

    1.  
      $ ./etcdctl member list
    2.  
       
    3.  
      2618ce5cd761aa8e: name=etcd-3 peerURLs=http://192.168.108.130:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.130:2379 isLeader=false
    4.  
      9c359d48a2f34938: name=etcd-1 peerURLs=http://192.168.108.128:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.128:2379 isLeader=false
    5.  
      f3c45714407d68f3: name=etcd-2 peerURLs=http://192.168.108.129:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.129:2379 isLeader=true

    4.查看集群状态(Leader节点):

    1.  
      $ ./etcdctl cluster-health
    2.  
       
    3.  
      member 2618ce5cd761aa8e is healthy: got healthy result from http://127.0.0.1:2379
    4.  
      member 9c359d48a2f34938 is healthy: got healthy result from http://127.0.0.1:2379
    5.  
      member f3c45714407d68f3 is healthy: got healthy result from http://127.0.0.1:2379
    6.  
      cluster is healthy

    5.HTTPS加密下使用etcdctl检查集群健康状况:

    1.  
      $ etcdctl --ca-file /etc/ssl/etcd/ca.pem --cert-file /etc/ssl/etcd/server1.pem --key-file /etc/ssl/etcd/server1-key.pem member list
    2.  
      $ etcdctl --ca-file /etc/ssl/etcd/ca.pem --cert-file /etc/ssl/etcd/server1.pem --key-file /etc/ssl/etcd/server1-key.pem cluster-health

    五、ECTD读写操作

    基于HTTP协议的API使用起来比较简单,这里主要通过etcdctl和curl两种方式来做简单介绍。

    1.下面通过给message key设置Hello值示例:

    1.  
      $ ./etcdctl set /message Hello
    2.  
       
    3.  
      Hello
    4.  
       
    5.  
      $ curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Hello"
    6.  
      {"action":"set","node":{"key":"/message","value":"Hello","modifiedIndex":4,"createdIndex":4}}

    2.读取message的值:

    1.  
      $ ./etcdctl  get /message
    2.  
      Hello
    3.  
       
    4.  
      $ curl http://127.0.0.1:2379/v2/keys/message
    5.  
      {"action":"get","node":{"key":"/message","value":"Hello","modifiedIndex":9,"createdIndex":9}}

    3.删除message key:

    1.  
      $ ./etcdctl  rm  /message
    2.  
       
    3.  
      $ curl -X DELETE http://127.0.0.1:2379/v2/keys/message
    4.  
      {"action":"delete","node":{"key":"/message","modifiedIndex":10,"createdIndex":9},"prevNode":{"key":"/message","value":"Hello","modifiedIndex":9,"createdIndex":9}}

    说明:因为是集群,所以message在其中一个节点创建后,在集群中的任何节点都可以查询到。

    4.查看所有key-value:

    curl -s http://127.0.0.1:2379/v2/keys/?recursive=true

    六、配置ETCD为启动服务

    1.编辑/usr/lib/systemd/system/etcd.service,添加下面内容:

    1.  
      [Unit]
    2.  
      Description=Etcd Server
    3.  
      After=network.target
    4.  
      After=network-online.target
    5.  
      Wants=network-online.target
    6.  
       
    7.  
      [Service]
    8.  
      Type=notify
    9.  
      WorkingDirectory=/opt/etcd-v3.2.6/
    10.  
      # User=etcd
    11.  
      ExecStart=/opt/etcd-v3.2.6/etcd --config-file=/etc/etcd/conf.yml
    12.  
      Restart=on-failure
    13.  
      LimitNOFILE=65536
    14.  
       
    15.  
      [Install]
    16.  
      WantedBy=multi-user.target

    2.更新启动:

    1.  
      systemctl daemon-reload
    2.  
      systemctl enable etcd
    3.  
      systemctl start etcd
    4.  
      systemctl restart etcd
    5.  
       
    6.  
      systemctl status etcd.service -l
  • 相关阅读:
    Android getMeasuredHeight()与getHeight()的区别
    Android控件属性android:visibility的"invisible"与"gone"的区别
    浅谈Android onClick与onLongClick事件触发的问题
    Android ListView中FooterView布局问题
    Android GridView 问题
    Android HTTP POST上传
    监听EditText实时输入
    C++03下的delegate实现-
    delegate委托的C++实现--C++11/14(原创)
    Unity3D 移动平台实现一种大规模(其实跟PC比还是算小规模)动画角色渲染的方案---绝对原创方案。。。
  • 原文地址:https://www.cnblogs.com/lgj8/p/13418097.html
Copyright © 2011-2022 走看看