总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、简介
1、什么是consul
Consul是HashiCorp公司推出的开源工具,用于实现 分布式系统的服务发现与配置。 Consul是分布式的、高可用的、可横向扩展的。
架构图如下:
总结如下:
1、CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER【通过HTTP和DNS接口请求server】,本身是不持久化这些信息。
2、SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
3、SERVER-LEADER:中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。
2、etcd、Zookeeper 和 Consul对比
特性/工具 | etcd | zookeeper | Consul |
---|---|---|---|
一致性模型 | 强一致性 (Raft) | 强一致性 (ZAB) | 最终一致性 (可配置为强一致性) |
扩展性 | 良好,适合大量键值对 | 良好,但在大量数据时可能遇到性能瓶颈 | 可能遭受高延迟和内存压力 |
功能和易用性 | API 简洁,易于使用 | 功能强大,支持多种高级特性 | API 设计友好,易于集成 |
服务发现 | 支持服务发现 | 支持服务发现 | 专门设计用于服务发现 |
健康检查 | 不直接支持 | 不直接支持 | 支持健康检查 |
安全性 | 支持TLS或者启用用户身份认证 | 支持ACL | 支持 TLS 和 ACL |
多数据中心 | 支持多数据中心配置 | 支持多数据中心配置 | 原生支持多数据中心配置 |
语言和生态 | 使用 Go 语言,广泛的客户端库支持 | 使用 Java 编写,适合 Java 应用程序 | 使用 Go 语言,支持多种语言的客户端库 |
社区和生态 | 活跃的社区,是 Kubernetes 的一部分 | 历史悠久,庞大的用户基础 | 良好的文档和社区支持 |
性能 | 在处理大量键值对时表现出色 | 在某些场景下提供了更好的最小延迟 | 性能取决于使用场景 |
自身监控 | metrics | - | metrics |
使用场景 | 配置管理、服务注册和发现等场景 | 复杂协调服务 | 服务发现、健康检查和配置管理等场景 |
3、配置consul的TLS、ACl和Gossip Encryption
总结:consul有三方面的安全保护机制
1、Gossip Encryption:Consul使用Gossip协议来管理集群中的成员关系,以及把消息广播到集群中,通过UDP完成
2、TLS:使用https加密consul的API、GRPC
3、ACl:控制Services、Nodes、KV的读写权限
二、部署说明
1、环境信息
主机IP | 节点名称 | 操作系统 | 内核版本 | consul版本 | 服务启动用户 | 集群角色 |
---|---|---|---|---|---|---|
192.168.1.111 | consul-server-node-1 | Ubuntu 22.04.4 LTS | 5.15.0-113-generic | 1.18.1 | consul | server |
192.168.1.112 | consul-server-node-2 | Ubuntu 22.04.4 LTS | 5.15.0-113-generic | 1.18.1 | consul | server |
192.168.1.113 | consul-server-node-3 | Ubuntu 22.04.4 LTS | 5.15.0-113-generic | 1.18.1 | consul | server |
192.168.1.114 | consul-client-node-4 | Ubuntu 22.04.4 LTS | 5.15.0-113-generic |