• 如何通过ETCD实现EasyDSS分布式负载均衡?ETCD部署方案


    EasyDSS的部分项目当中,需要频繁对视频做合成处理,但是视频处理非常耗费CPU,使用单一服务器会使CPU占用率一直处于高负载的状态,因此我们要对这种情况进行优化。

    起初计划采用的nginx模式部署,但nginx模式略微复杂,且nginx数据单进程模式也会影响GRPC调用性能,因此我们决定采用一个新的负载均衡模式——ETCD。

    ETCD是一个基于Go语言编写的分布式的、高可用的、一致的key-value存储数据库,主要用于共享配置和服务发现。为了防止单点故障,etcd还可以以集群方式部署,etcd集群使用raft一致性算法处理日志复制,保证多节点数据的强一致性。

    一、本地安装

    通过网页下载对应系统架构的安装包,解压即可运行;

    安装包地址: https://github.com/etcd-io/etcd/releases

    二、Docker安装

    1.下载镜像

    docker pull quay.io/coreos/etcd

    2.运行

    docker run -it -d -p 2379:2379 -p 2380:2380 --name etcd quay.io/coreos/etcd

    3.查看

    docker exec -it etcd etcdctl member list

    etcdKeeper

    这是一个管理etcd服务的WebUI管理后台程序。可以通过web页面对注册到etcd的服务进行管理。并进行服务节点的添加和删除;

    三、拓展

    etcd 使用 raft 协议来维护集群内各个节点状态的一致性。简单说,etcd 集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过 Raft 协议保证每个节点维护的数据是一致的。

    每个 etcd 节点都维护了一个状态机,并且,任意时刻至多存在一个有效的主节点。主节点处理所有来自客户端写操作,通过 Raft 协议保证写操作对状态机的改动会可靠的同步到其他节点。

  • 相关阅读:
    HttpClient 使用
    $.each 遍历
    PYTHON2.day02
    PYTHON2.day01
    PYTHON1.面向对象_day04
    PYTHON1.面向对象_day03
    PYTHON1.面向对象_day02
    PYTHON1.面向对象_day01
    PYTHON1.day21
    PYTHON1.day20
  • 原文地址:https://www.cnblogs.com/easydss/p/15040657.html
Copyright © 2020-2023  润新知