如何通过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 协议保证写操作对状态机的改动会可靠的同步到其他节点。

原文地址:https://www.cnblogs.com/easydss/p/15040657.html