Etcd集群安装部署

一、etcd简介
  etcd 是一个分布式键值对存储系统,由coreos 开发,内部采用 raft 协议作为一致性算法,用于可靠、快速地保存关键数据,并提供访问。通过分布式锁、leader选举和写屏障(write barriers),来实现可靠的分布式协作。etcd集群是为高可用、持久化数据存储和检索而准备。
  "etcd"这个名字源于两个想法,即 unix “/etc” 文件夹和分布式系统"d"istibuted。 “/etc” 文件夹为单个系统存储配置数据的地方,而 etcd 存储大规模分布式系统的配置信息。因此,"d"istibuted 的 “/etc” ,是为 “etcd”。
  etcd 以一致和容错的方式存储元数据。分布式系统使用 etcd 作为一致性键值存储系统,用于配置管理、服务发现和协调分布式工作。使用 etcd 的通用分布式模式包括领导选举、分布式锁和监控机器活动。
  虽然 etcd 也支持单点部署,但是在生产环境中推荐集群方式部署。由于etcd内部使用投票机制,一般 etcd 节点数会选择 3、5、7等奇数。etcd 会保证所有的节点都会保存数据,并保证数据的一致性和正确性。
二、etcd优点
  etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点:
    简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单
    安全:支持 SSL 证书验证
    快速:根据官方提供的 benchmark 数据,单实例支持每秒 2k+ 读操作
    可靠:采用 raft 算法,实现分布式系统数据的可用性和一致性
三、工作原理
在这里插入图片描述
  从etcd的架构图中我们可以看到,etcd主要分为四个部分:
  第1部分是HTTP Server: 用于处理用户发送的API请求,以及其它etcd节点的同步与心跳信息请求。
  第2部分是Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现。
  第3部分是Raft:Raft强一致性算法的具体实现,是etcd的核心。
  第4部分是WAL:Write Ahead Log(预写式日志),是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。在WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照;Entry表示存储的具体日志内容。
  通常,一个用户的请求发送过来,会经由Http Server转发给Store,以进行具体的事务处理。如果涉及到节点修改,则交给Raft模块进行状态变更、日志记录;然后,再同步给别的etcd节点,以确认数据提交;最后,进行数据提交,再次同步。
四、集群部署
4.1服务器列表

    服务器名称 服务器IP       服务器端口
    master   192.168.145.180    2379、2380
    slave1   192.168.145.181    2379、2380
    slave2   192.168.145.182    2379、2380
4.2 etcd master节点安装
4.2.1 生成pem证书

  1)使用XshellPortable连接到192.168.145.180的22端口,输入用户名:root,密码:******。
  2)建立需要的文件目录,命令如下:

		cd /data
    mkdir soft
    cd soft
    mkdir /data/soft/cfssl
    mkdir /data/soft/ssl
    mkdir /data/kubernetes/
    mkdir /data/kubernetes/{
   bin,cfg,ssl}
    cd /data/soft/cfssl

3)下载cfssl文件,命令如下:

	   wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

4)给刚刚下载的三个文件进行授权,命令如下:

		chmod +x cfssl-certinfo_linux-amd64 cfssljson_linux-amd64 cfssl_linux-amd64

5)移动三个文件到系统目录,命令如下:

	   mv cfssl_linux-amd64 /usr/local/bin/cfssl
    mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
    mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

6)进入ssl目录,开始生成,命令如下:

		cd /data/soft/ssl

7)创建pem证书配置文件,命令如下:

	   cfssl print-defaults config > config.json
    cfssl print-defaults csr > csr.json
    cfssl print-defaults csr > server-csr.json
    cfssl print-defaults csr > admin-csr.json
    cfssl print-defaults csr > kube-proxy-csr.json

编辑config.json,命令:

		vi config.json

内容如下:

{
   
    "signing": {
   
        "default": {
   
            "expiry": "87600h"
        },
        "profiles": {
   
            "kubernetes": {
   
                "expiry": "8760h",
                "usages": [
                    "signing",
          
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值