gracejh
作者gracejh·2022-03-15 15:13
系统架构师·浪潮商用机器有限公司

K1 Power Linux 服务器在微服务架构中运行consul组件

字数 3356阅读 818评论 0赞 0

浪潮商用机器有限公司 技术支持部 钟良

为微服务架构中, consul 作为健康检查,以及集中键值存储的作用日益增加。 Consul 不仅在传统 x86 环境中可以被使用,在 K1 power Linux 的环境中,也可以简单运行,并且由于服务器本身的稳定性,可以降低宕机从而服务切换的风险,提升整体分布式架构的可用性。

本文介绍了在浪潮商用机器的 K1 Power Linux 服务器上使用 consul 组件, consul 组件的特性以及 K1 Power Linux 运行 consul 的优势等

服务网格和 consul 介绍

服务网格是为本地、云或多云基础设施提供安全的服务到服务通信的专用层。服务网格通常与微服务架构模式一起使用,但可以在涉及复杂网络的任何场景中提供价值。

服务网格通常由控制平面和数据平面组成。控制平面维护一个中央注册表,跟踪所有服务及其各自的 IP 地址,这称为服务发现。只要应用程序在控制平面上注册,控制平面就能够与服务网格的其他成员共享如何与应用程序通信,并强制执行谁可以相互通信的规则。

控制平面负责保护网格、促进服务发现、健康检查、策略实施和其他类似的操作问题。数据平面处理服务之间的通信。许多服务网格解决方案使用 sidecar 代理来处理数据平面通信,因此限制了服务对网络环境所需的感知水平。

Consul 是一个多网络工具,提供功能齐全的服务网格解决方案,可解决运营微服务和云基础设施的网络和安全挑战。 Consul 提供了一种软件驱动的路由和分段方法。 它还带来了额外的好处,例如故障处理、重试和网络可观察性。 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格并实现零信任安全。

您可以将 Consul 与虚拟机 (VM) 、容器或容器编排平台(例如 Nomad 和 Kubernetes )一起使用。 Consul 与平台无关,因此非常适合所有环境,包括遗留平台。

Consul 是一种分布式、高可用性和数据中心感知解决方案,用于跨动态分布式基础架构连接和配置应用程序。

Consul 有如下几个特性:

多数据中心—— Consul 构建为数据中心感知,无需复杂配置即可支持任意数量的区域。

服务网格 / 服务分段 ——Consul Connect 通过自动 TLS 加密和基于身份的授权实现安全的服务到服务通信。应用程序可以在服务网格配置中使用 sidecar 代理来为入站和出站连接建立 TLS 连接,而完全不知道 Connect 。

服务发现—— Consul 使服务注册自己并通过 DNS 或 HTTP 接口发现其他服务变得简单。也可以注册 SaaS 提供商等外部服务。

健康检查 - 健康检查使 Consul 能够快速提醒操作员有关集群中的任何问题。与服务发现的集成可防止将流量路由到不健康的主机并启用服务级别断路器。

键 / 值存储 - 灵活的键 / 值存储可以存储动态配置、功能标记、协调、领导者选举等。简单的 HTTP API 使其在任何地方都易于使用。

您可以以简单的文本格式将机器添加到 Ansible 并管理您的库存。它可以使用来自其他来源的库存和变量信息,例如 Rackspace 、 EC2 和 Openstack 等。

Consul 部署架构概述

为了简便部署,本次使用三台 consul 的 docker 进行容器化部署,使用的镜像可以直接从 dockerhub 上获取。

在应用程序中同样使用 docker image 方式进行部署,将应用中封装入 consul 的客户端,获取统一的 key/value 值,同时可以获取 consul 客户端的情况

在 K1 Power Linux 服务器上部署 consul

使用最新的 redhat 8.4 的操作系统

[root@bastion ansible]# cat /etc/redhat-release

Red Hat Enterprise Linux release 8.4 (Ootpa)

在 K1 Power Linux 服务器上运行

[root@bastion ansible]# cat /proc/cpuinfo

processor : 0

cpu : POWER9 (architected), altivec supported

clock : 2134.000000MHz

revision : 2.2 (pvr 004e 1202)

processor : 1

cpu : POWER9 (architected), altivec supported

clock : 2134.000000MHz

revision : 2.2 (pvr 004e 1202)

由于核数较多,未完全展示输出

本次测试使用的K1 Power Linux服务器为如下FP5280

浪潮FP5280G2是为数据中心及应用优化,搭载全新POWER9处理器的双路机架式服务器。单台服务器提供更多线程数,开启更多数据库实例,协助降本增效

同时CPU的大L3 Cache可以有效提高数据库读缓存命中的概率,从而提高读效率最高支持1TB高速企业级内存,通过搭配不同的前置、内置和后置模组实现配置多变

该产品将优秀的设计理念运用在性能、存储、扩展方面,在新一代云计算、大数据、深度学习等IT应用具有突出表现

在服务器上使用如下命令获取容器镜像, 在红帽上默认的镜像管理工具为 podman , 与 docker 的功能类似,为了简便操作,直接使用 podman 进行镜像启动:

Podman pull ibmcom/consul-ppc64le

# 启动第 1 个 Server 节点,集群要求要有 3 个 Server ,将容器 8500 端口映射到主机 8900 端口,同时开启管理界面

Podman run -d --name=consul1 -p 8501:8500 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui

# 启动第 2 个 Server 节点,并加入集群

podman run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.50.30

# 启动第 3 个 Server 节点,并加入集群

Podman run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.50.30

# 测试第 4 个 Client 节点,并测试是否可以加入集群

Podman run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 --join 172.17.50.30

在配置完成后,将 Key/Value 数据导入 consul ,给每个微服务的容器使用。导入后截图如下

同时 consul 在部署完成后,程序中可以加入 consul agent 对 consul server 进行注册,从而可以对程序状态进行控制。

在启动的镜像中可以加入如下的 entrypoint 脚本来指定加入的 consul 的服务器

spring.cloud.consul.host=$CONSUL_HOST_NAME --spring.cloud.consul.port=$CONSUL_PORT

在部署完成后,可以看到服务的运行情况,同时可以在 consul 统一管理关键键 / 值

Reference Link

https://hub.docker.com/r/ibmcom/consul-ppc64le

https://learn.hashicorp.com/consul

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广