微服务防火墙友好策略

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在对比RPC与restful时,大致有几点:1. 协议:http相对更规范,更标准,更通用,无论哪种语言都支持http协议;RPC协议性能要高的多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能达到http的二倍2. 安全性:基于Http更安全一些,默认80端口,防火墙友好

前言


在对比RPC与restful时,大致有几点:

  1. 协议:http相对更规范,更标准,更通用,无论哪种语言都支持http协议;RPC协议性能要高的多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能达到http的二倍
  2. 安全性:基于Http更安全一些,默认80端口,防火墙友好

防火墙友好

In TCP/IP protocol, reply are always thanks to a dynamic port. The client communicate with the server with port 135 or 111 and answer in done by a port dynamically opened by the client.

说RPC防火墙不友好,主要是应用IP与port的变化,都需要改变防火墙策略

  1. 一台物理机可能部署多个应用,开放多个端口
  2. 应用服务自动伸缩,对调用方无感知
  3. 如果是容器,那IP是动态的

这些情况,都会造成运维频繁变更防火墙策略,增加维护成本

应对

为了应对维护成本,在有防火墙时,可以让客户端绕行到固定的堡垒机上,这样防火墙规则就相对固定,不需要动态维护

在安全级别或者不同区域的跨区访问,需要绕行;比如同机房,或者客户端的安全级别超过了服务端安全级别,那就不需要绕行

当然如果有了绕行,客户端就能访问防火墙后面的所有服务,导致访问权限过大,就需要加入鉴权

实践

之前在《Service Mesh之Sidecar》中有过对游戏架构的说明

image.gif

这儿更详细了点,加上了IDC与防火墙,就是当gameserver与跨服不在同一个IDC时,需要处理防火墙友好

对gameserver添加firewall配置项
规则格式为:
idc-proxy的域名:端口|绕行白名单ip或子网掩码(多个间用,分隔)
如:idcb-cluster.proxy.com:9090|10.199.188.66/20,10.200.123.66/20

核心思想就是让需要跨区访问的client走特定的proxy-cluster,通过proxy-cluster访问背后的服务

这样防火墙策略也相对固定

逻辑

  • 1.gameserver连接对应的跨服
  • 2.sidecar-proxy检查有没有firewall配置项,若有,查看配置的proxy-cluster是不是域名 (一般都是域名)
  • 3.通过域名nslookup找到LVS的所有IP列表
  • 4.调用服务到LVS的IP

nslookup可以借助java的dnsjava:http://www.dnsjava.org/

1. try {
2.     Lookup lookup = new Lookup(name, Type.A);
3.     lookup.run();
4.     if (lookup.getResult() == Lookup.SUCCESSFUL) {
5.         Record[] answers = lookup.getAnswers();
6.         if (answers != null && answers.length > 0) {
7.             String[] addrs = new String[answers.length];
8.             for (int i = 0; i < addrs.length; i++) {
9.                 addrs[i] = answers[i].rdataToString();
10.             }
11. 
12.             return Arrays.asList(addrs);
13.         }
14.     }
15.         } catch (TextParseException e) {
16.             e.printStackTrace();
17.         }
目录
相关文章
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
2月前
|
运维 负载均衡 监控
深入探索微服务架构的核心要素与实践策略
在当今软件开发领域,微服务架构已成为构建灵活、可扩展企业级应用的首选模式。本文旨在剖析微服务架构的设计理念,通过实例阐述其核心组件如服务注册与发现、配置管理、熔断机制等如何协同工作,以提升系统的敏捷性和维护性。同时,探讨了在实践中应对分布式系统复杂性的最佳策略,包括负载均衡、服务监控和日志聚合等关键技术,旨在为后端开发者提供一套完整的微服务实施指南。
46 1
|
4天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
44 10
|
5天前
|
监控 测试技术 API
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
|
11天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型加速的今天,云原生技术以其高效、灵活、可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生环境下微服务治理的策略与实践路径,旨在为读者提供一个系统性的微服务治理框架,涵盖从服务设计、部署、监控到运维的全生命周期管理,助力企业在云端构建更加稳定、高效的业务系统。 ####
|
28天前
|
监控 测试技术 API
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
|
2月前
|
监控 测试技术 API
如何确保微服务的API版本控制策略能够适应不断变化的业务需求
如何确保微服务的API版本控制策略能够适应不断变化的业务需求
52 10
|
2月前
|
监控 安全 API
深入探索微服务架构的核心要素与实践策略
在当今软件开发领域,微服务架构以其独特的优势——高度的模块化、灵活性以及可扩展性,已经成为构建复杂、大型应用系统的不二选择。不同于传统的单体架构,它能够显著提升开发效率,促进技术生态的多样化发展。本文将从微服务架构的核心特性出发,探讨其设计理念、关键技术及在实践中的应用策略,旨在为后端开发者提供一份详尽的指南,帮助他们理解和掌握这一现代软件架构的精髓。
27 3
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与实践
随着微服务架构的普及,如何高效管理和优化数据库访问成为了关键挑战。本文探讨了在微服务环境中优化数据库访问的策略,包括数据库分片、缓存机制、异步处理等技术手段。通过深入分析实际案例和最佳实践,本文旨在为开发者提供实际可行的解决方案,以提升系统性能和可扩展性。
|
3月前
|
Kubernetes API 持续交付
构建高效微服务架构:策略与实践
【8月更文挑战第30天】 在当前软件开发领域,微服务架构已经成为促进系统灵活性、扩展性及维护性的关键设计哲学。本文将深入探讨构建高效微服务架构的实用策略和具体实践,旨在为开发者提供一套系统的方法论,以优化其服务的分解、部署与管理过程。我们将从微服务的核心优势出发,分析设计原则,并结合实际案例来展示如何克服常见的挑战。