当前位置:首页 > 教程 > 正文内容

consul管理nginx(consul管理端)

2023-05-23 11:30:04教程1

consul管理端

overlay模型

Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性.

Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息 包括 Network、Endpoint、IP 等.Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件

docker network inspect 中的 "IPAM" 是指 IP Address Managemen

docker 会创建一个 bridge 网络 “docker_gwbridge”,为所有连接到 overlay 网络的容器提供访问外网的能力

overlay 网络的具体实现:

1.docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上

2.br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的

不同 overlay 网络之间是隔离的 即便是通过 docker_gwbridge 也不能通信

如果需要通信 需要把其它overlay网络的容器添加一个网卡连接到overlay网络中 docker network connect overlay1 容器2 表示给容器2添加一个到overlay1的连接

overlay IPAM docker 默认为 overlay 网络分配 24 位掩码的子网(10.0.X.0/24)所有主机共享这个 subnet,容器启动时会顺序从此空间分配 IP

MACVLAN网络模型

macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。macvlan 本质上是一种网卡虚拟化技术.

macvlan 的最大优点是性能极好,相比其他实现.macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络

容器的 eth0 就是 enp0s9 通过 macvlan 虚拟出来的 interface.容器的 interface 直接与主机的网卡连接,这种方案使得容器无需通过 NAT 和端口映射就能与外网直接通信(只要有网关),在网络上与其他独立主机没有区别

用 sub-interface 实现多 macvlan 网络

macvlan 会独占主机的网卡,也就是说一个网卡只能创建一个 macvlan 网络.但主机的网卡数量是有限的,如何支持更多的 macvlan 网络

macvlan 不仅可以连接到 interface(如 enp0s9) 也可以连接到 sub-interface(如 enp0s9.xxx)

VLAN 是现代网络常用的网络虚拟化技术,它可以将物理的二层网络划分成多达 4094 个逻辑网络,这些逻辑网络在二层上是隔离的,每个逻辑网络(即 VLAN)由 VLAN ID 区分,VLAN ID 的取值为 1-4094

Linux 的网卡也能支持 VLAN,同一个 interface 可以收发多个 VLAN 的数据包,不过前提是要创建 VLAN 的 sub-interface

如希望 enp0s9 同时支持 VLAN10 和 VLAN20,则需创建 sub-interface enp0s9.10 和 enp0s9.20

在交换机上,如果某个 port 只能收发单个 VLAN 的数据,该 port 为 Access 模式. 如果支持多 VLAN,则为 Trunk 模式.enp0s9 要接在交换机的 trunk 口上

不同 macvlan 网络不能在二层上通信 在三层上可以通过网关将 macvlan 连通

设置三层网关连通方式:

1.将 一台Host 配置成一个虚拟路由器并且设置网关IP

2.在路由器上设置iptables规则转发 VLAN10 和 VLAN20 的流量

1.因为 bbox1 与 bbox4 在不同的 IP 网段,跟据 bbox1 的路由表 数据包将发送到网关 172.16.10.1 eth2.10

2.路由器从 eth2.10 收到数据包,发现目的地址是 172.16.20.11,查看自己的路由表:于是将数据包从 eth2.20 转发出去

3.通过 ARP 记录的信息,路由器能够得知 172.16.20.11 在 host2 上,于是将数据包发送给 host2

4.host2 根据目的地址和 VLAN 信息将数据包发送给 bbox4

macvlan 网络的连通和隔离完全依赖 VLAN、IP subnet 和路由,docker 本身不做任何限制,用户可以像管理传统 VLAN 网络那样管理 macvlan

consul管理页面

nacos 支持 用起来简单,符合springBoot的命名风格,支持动态刷新

consul

应用内/外:属于外部应用,侵入性小

ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul不可用。

版本迭代:目前仍然进行版本迭代

集成支持:支持SpringCloud K8S集成

访问协议:HTTP/DNS

雪崩保护:不支持雪崩保护

界面:英文界面,不符合国人习惯

上手:复杂一点

nacos

应用内/外:属于外部应用,侵入性小

ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍)

版本迭代:目前仍然进行版本迭代

集成支持:支持Dubbo 、SpringCloud、K8S集成

访问协议:HTTP/动态DNS/UDP

雪崩保护:支持雪崩保护

界面:中文界面,符合国人习惯

上手:极易,中文文档,案例,社区活跃。

综上所述,nacos比较适用!

consul管理

微服务架构是一种软件架构模式,它将软件系统划分为一组小的、独立的、可替换和可扩展的服务单元,每个服务单元都可以独立地运行、部署和升级。微服务架构可以提高系统的可靠性、可扩展性和可维护性,可以促进团队协作和快速迭代。下面是微服务架构的最强详解:

1. 微服务的特点

微服务具有以下特点:

- 单一职责原则:每个微服务都只具有唯一的、独立的职责。

- 松耦合:微服务之间是松耦合的,可以独立地部署和运行。

- 独立性:每个微服务都可以独立地进行开发、测试、部署和升级。

- 可替换性:微服务可以被随时替换,不会对系统的整体运行产生影响。

- 可扩展性:微服务可以根据需要进行水平扩展,从而提高系统的性能和可用性。

- 自治性:每个微服务都可以独立地进行运行时配置和监控,保证系统的稳定性和可靠性。

2. 微服务的优缺点

微服务架构具有以下优点:

- 可扩展性:微服务架构可以根据需要进行水平扩展,从而提高系统的性能和可用性。

- 灵活性:微服务架构可以根据业务需求进行快速迭代和部署,提高了软件开发的灵活性和敏捷性。

- 可靠性:微服务架构可以将系统拆分成小的、独立的服务单元,从而提高了系统的可靠性和容错性。

- 可维护性:微服务架构可以将系统分解成独立的服务单元,从而便于进行系统维护和升级。

微服务架构的缺点包括:

- 复杂性:微服务架构需要将系统划分成许多小的服务单元,从而增加了系统的复杂性。

- 通信开销:微服务架构需要使用网络通信进行服务之间的交互,从而增加了通信开销。

- 一致性问题:微服务架构会带来一些一致性问题,例如分布式事务的管理等。

3. 微服务的架构图

微服务的架构图包括以下组件:

- 服务:服务是一个独立的、可部署的软件单元,可以提供特定的业务功能。

- api 网关:api 网关作为入口,接受外部请求并将请求路由到相应的服务上。

- 服务注册与发现:服务注册与发现可以帮助服务之间进行自动的发现和通信。

- 配置中心:配置中心可以帮助微服务进行配置管理和运行时配置修改。

- 告警与监控:告警与监控可以帮助微服务进行运行时监控和异常处理。

4. 微服务的开发技术栈

微服务的开发技术栈包括以下技术:

- 服务框架:spring boot、node.js 等。

- 消息队列:rabbitmq、kafka 等。

- 数据库:mysql、mongodb 等。

- 配置中心:consul、zookeeper 等。

- api 网关:zuul、api gateway 等。

- 容器技术:docker、kubernetes 等。

5. 微服务架构的最佳实践

微服务架构的最佳实践包括以下几点:

- 拆分粒度:拆分微服务时要考虑单一职责原则,避免拆分过细或过大。

- 接口设计:接口设计要遵循 restful 风格,考虑接口的易用性和可读性。

- 集成测试:在集成测试阶段要考虑微服务之间的依赖关系和接口兼容性问题。

- 部署测试:在部署测试时要考虑运行时配置和环境兼容性问题。

- 异常处理:在微服务架构中要考虑异常处理和容错性问题,避免单点故障和系统崩溃。

- 监控系统:微服务架构需要建立完善的监控系统,从而可以及时发现和修复问题。

总之,微服务架构是一种新的软件架构模式,可以提高系统的可扩展性、可维护性和可靠性,但需要注意复杂性、通信开销和一致性问题。在开发微服务时要考虑拆分粒度、接口设计、集成测试等最佳实践。

confd nginx

Linux、FreeBSD操作系统都允许添加IP别名。IP别名即:可以在一块物理网卡上绑定多个IP

地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。设置iP

别名也非常容易,只须配置系统上的网络接口,让它监听额外的lP地址。在Linux系统上,可以使用标准的网络配置工具(比如ifconfig和route)添加IP别名,这样都是没有任何问题的,你可以借鉴!

consul管理工具

Consul有多个组件,但总体而言,它是基础架构中的一款服务发现和配置的工具。 它提供了几个关键功能。类似于服务器,数据库语言。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98858372.html