zoukankan      html  css  js  c++  java
  • 在Linux上部署etcd集群

    前言

    1.1 etcd简介

    etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。

    etcd作为服务发现系统,有以下的特点:

    • 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
    • 安全:支持SSL证书验证
    • 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
    • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

    1.2 安装环境

    本实验需要两台服务器,如下表所示。

    操作系统

    内存

    CPU

    IP地址

    主机名

    服务器1

    Centos 7.5

    32G

    双核四线程CPU * 2

    10.40.239.234

    node234

    服务器2

    Centos 7.5

    32G

    双核四线程CPU * 2

    10.40.239.235

    node235

    2 操作流程

    2.1 对服务器校时

    这里我们使用国家授时中心NTP(Network Time Protocol)服务对两台服务器校时:

    ntpdate ntp.ntsc.ac.cn

    2.2 安装etcd

    在两台服务器上执行下面的命令,安装etcd:

    yum -y install etcd

     

    执行下面的命令,查看etcd:

    yum list installed |grep -i etcd

    如果出现如下结果,表示安装成功:

    etcd.x86_64                 3.3.11-2.el7.centos            @extras

    2.3 配置etcd

    2.3.1 node234 上的配置

        1. 备份原先的etcd配置文件。

    cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

     

    2.编辑配置文件:

    vi /etc/etcd/etcd.conf

    配置如下内容:

    ETCD_DATA_DIR="/var/lib/etcd/node234.etcd"

    ETCD_LISTEN_PEER_URLS="http://10.40.239.234:2380"

    ETCD_LISTEN_CLIENT_URLS="http://10.40.239.234:2379,http://localhost:2379"

    ETCD_NAME="node234"

    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.40.239.234:2380"

    ETCD_ADVERTISE_CLIENT_URLS="http://10.40.239.234:2379"

    ETCD_INITIAL_CLUSTER="node234=http://10.40.239.234:2380, node235=http://10.40.239.235:2380"

    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

    ETCD_INITIAL_CLUSTER_STATE="new"

     

    这里解释一下这些参数的含义:

    ETCD_DATA_DIR:数据存储目录。由etcd自动创建。

    ETCD_LISTEN_PEER_URLS:监听在对等节点流量上的URL列表,该参数告诉etcd在指定的 “协议://IP:端口”组合上接收来自其对等方的传入请求。协议可以是http或者https。或者,使用unix://<file-path>或者unixs://<file-path>到unix sockets。如果将0.0.0.0作为IP,etcd将监听在所有的接口上的给定端口。如果给定了IP和端口,etcd将监听指定的接口和端口。可以使用多个URL指定要监听的地址和端口的数量。 etcd将响应来自任何列出的地址和端口的请求。

     

    ETCD_LISTEN_CLIENT_URLS:监听在客户端流量上的URL列表,该参数告诉etcd在指定的“协议://IP:端口”组合上接受来自客户端的传入请求。协议可以是http或者https。或者,使用unix://<file-path>或者unixs://<file-path>到unix sockets。如果将0.0.0.0作为IP,etcd将监听在所有的接口上的给定端口。如果给定了Ip和端口,etcd将监听指定的接口和端口。可以使用多个URL指定要监听的地址和端口的数量。 etcd将响应来自任何列出的地址和端口的请求。

     

    ETCD_NAME:此成员的名字。

     

    ETCD_INITIAL_ADVERTISE_PEER_URLS:此成员对等URL的列表,用来通知到集群的其余部分。 这些地址用于在集群周围传送etcd数据。 所有集群成员必须至少有一个路由。 这些URL可以包含域名。

     

    ETCD_ADVERTISE_CLIENT_URLS:此成员的客户端URL的列表,这些URL广播给集群的其余部分。 这些URL可以包含域名。

     

    ETCD_INITIAL_CLUSTER:启动集群的初始化配置。配置集群的成员。

     

    ETCD_INITIAL_CLUSTER_TOKEN:引导期间etcd群集的初始集群令牌。

     

    ETCD_INITIAL_CLUSTER_STATE:初始群集状态(“新”或“现有”)。 对于在初始静态或DNS引导过程中存在的所有成员,将其设置为new。 如果此选项设置为existing,则etcd将尝试加入现存集群。 如果设置了错误的值,etcd将尝试启动,但会安全地失败。

     

    更多信息,可以参照etcd官方文档

    2.3.1 node235 上的配置

    1. 备份原先的etcd配置文件。

    cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

     

    2.编辑配置文件:

    ETCD_DATA_DIR="/var/lib/etcd/node235.etcd"

    ETCD_LISTEN_PEER_URLS="http://10.40.239.235:2380"

    ETCD_LISTEN_CLIENT_URLS="http://10.40.239.235:2379,http://localhost:2379"

    ETCD_NAME="node235"

    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.40.239.235:2380"

    ETCD_ADVERTISE_CLIENT_URLS="http://10.40.239.235:2379"

    ETCD_INITIAL_CLUSTER="node234=http://10.40.239.234:2380,node235=http://10.40.239.235:2380"

    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

    ETCD_INITIAL_CLUSTER_STATE="new"

    2.4 修改etcd.service

    在两台服务器上,分别修改服务启动文件 /usr/lib/systemd/system/etcd.service,内容设置如下:

    [Service]
    
    Type=notify
    
    WorkingDirectory=/var/lib/etcd/
    
    EnvironmentFile=-/etc/etcd/etcd.conf
    
    User=etcd
    
    # set GOMAXPROCS to number of processors
    
    ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
    
    --name=\"${ETCD_NAME}\" \
    
    --data-dir=\"${ETCD_DATA_DIR}\" \
    
    --listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \
    
    --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\" \
    
    --initial-advertise-peer-urls=\"${ETCD_INITIAL_ADVERTISE_PEER_URLS}\" \
    
    --advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
    
    --initial-cluster=\"${ETCD_INITIAL_CLUSTER}\"  \
    
    --initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \
    
    --initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\""
    
    Restart=on-failure
    
    LimitNOFILE=65536

    2.5 启动 etcd

    依次启动 node234和node235节点的 etcd

    systemctl start etcd.service

    设置允许开机启动:

    systemctl enable etcd.service

    2.6 查看etcd的状态

    执行下列命令,验证etcd的状态:

    etcdctl cluster-health

    结果:

    member 5a4542289ef36c64 is healthy: got healthy result from http://10.40.239.234:2379

    member f792ada069403352 is healthy: got healthy result from http://10.40.239.235:2379

     

    查看etfd 结点列表:

    etcdctl member list

    结果:

    5a4542289ef36c64: name=node234 peerURLs=http://10.40.239.234:2380 clientURLs=http://10.40.239.234:2379 isLeader=true

    f792ada069403352: name=node236 peerURLs=http://10.40.239.235:2380 clientURLs=http://10.40.239.236:2379 isLeader=false

  • 相关阅读:
    步步为营VS 2008 + .NET 3.5(3) C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
    新瓶旧酒ASP.NET AJAX(10) 客户端脚本编程(Sys.Services命名空间下的类)
    步步为营VS 2008 + .NET 3.5(2) VS 2008新特性之JavaScript Intellisense and Debugging(JavaScript的智能感知和调试)
    新瓶旧酒ASP.NET AJAX(8) 客户端脚本编程(Sys.Net命名空间下的WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)
    步步为营VS 2008 + .NET 3.5(11) DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录
    步步为营VS 2008 + .NET 3.5(14) XLINQ(LINQ to XML)之针对XML文件的添加、查询、更新和删除
    [翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(3) 触发自定义事件
    稳扎稳打Silverlight(2) 1.0实例之支持录音和回放的钢琴(Silverlight+ASP.NET AJAX+DLINQ)
    步步为营VS 2008 + .NET 3.5(7) LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary
    步步为营VS 2008 + .NET 3.5(1) VS 2008新特性之Multi Targeting(多定向)、Web Designer and CSS(集成了CSS的web设计器)和Nested Master Page(嵌套母版页)
  • 原文地址:https://www.cnblogs.com/xianghuaqiang/p/13716941.html
Copyright © 2011-2022 走看看