阿里云环境下的配置DNS和SLB的几种实践示例

2024-01-18 09:10

本文主要是介绍阿里云环境下的配置DNS和SLB的几种实践示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

对于大多中小型公司来说,生产环境大多是购买阿里云或者腾讯云等等,也就存在以下需求:

  • 外网域名
  • 内网域名
  • SLB
  • 容器化部署

特别是前两项,一定是跳不过的。容器化部署,现在非K8S莫属了。
既然是购买阿里云,所以K8S一般也是购买阿里云的“容器服务 kubernetes版”,好处是它本身有一套web版的管理UI。
除此之外,你还需要开通的服务有:“域名服务”“云解析DNS”“负载均衡 SLB”。

本文是基于阿里云环境,讲述如何配置DNS,顺便说一下SLB。

二、部署方式

这里会有两种场景,一者是ECS,另外就是K8S。

1、ECS部署方式

在这里插入图片描述

2、K8S部署方式

在这里插入图片描述
当然,上面的nginx也可被nginx ingress替代。
见下图:

在这里插入图片描述

三、配置DNS

内网域名是xxx.cloud,外网域名是xxx.net。子域名是对应具体的服务,比如本文的文件服务,就是file前缀。

1、外网域名

云解析DNS

在这里插入图片描述
在这里插入图片描述
因为我已添加完成,所以这里仅作修改示例:

  • 主机记录,输入file,后面的外网域名是固定的,xxx.net。合起来就是file.xxx.net域名。
  • 记录值,填写SLB负载均衡的地址,如果没有使用SLB,则填写API网关的地址。

在这里插入图片描述

2、内网域名

操作和外网域名没什么区别,这里展示ECS部署场景下,该如何配置DNS。这里没有SLB。

在这里插入图片描述
区别是,这里的记录值填写Nginx的地址,并且我们会添加两条“file.xxx.cloud”的记录。
两条记录的唯一差别是记录值不同,指向两个nginx节点,因为这里使用了nginx集群。

四、SLB

上文说了,我们购买了阿里云的SLB,所以下面简单讲述,如果没有内外网域名,直接暴露外网SLB地址给客户端。
见下图所示:
在这里插入图片描述
在这里插入图片描述
上图中使用的SLB,就是外网域名指向的地址。

下面,看下它的后端服务器:

在这里插入图片描述
可以说,怎么配置SLB,在阿里云UI操作还是比较直观的,不在本文的细说。

SLB对nginx2和nginx3的负载均衡。

内网SLB

上面购买的是外网slb,如果你不需要直接暴露slb地址的话,购买内网slb即可。
在这里插入图片描述
注意,这里的服务地址是10开头的内网IP。

本SLB的配置后端服务器,和上文的SLB不同的地方在于,使用了虚拟服务器组,而上文使用的默认服务器组。

  • 负载均衡默认是在实例维度上维护后端服务器组,即实例下的所有监听都使用相同的后端服务器组。虚拟服务器组允许用户在监听维度上个性化定义服务器组,即实例下的不同监听可使用不同的后端服务器组,可满足域名和URL转发个性化需求。

说白了,就是一个slb可以转发多个端口。

在这里插入图片描述
这里维护了两个nginx节点

在这里插入图片描述

SLB实现k8s的service

当 Service 类型是 LoadBalancer 时,Kubernetes 会创建云提供商的负载均衡器,并将外部流量引导到集群中相应的 Node 上。

在这里插入图片描述
可以明显看到,这里使用了虚拟服务器组,端口进行了一一映射。

正因为虚拟服务器组,才使得一个slb能够对许多后端服务进行负载均衡。

五、nginx ingress

1、创建slb

在这里插入图片描述

2、创建服务的ingress访问

在这里插入图片描述
当然,ingress的前提是要先创建service,因为service不在本文讲述范围,略去,下面看一下ingress的yaml。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: xxxnamespace: java-service
spec:
# Ingress Class必填ingressClassName: ack-nginxrules:- host: file.xxx.cloudhttp:paths:- backend:service:name: message-serverport:number: 8100path: /pathType: ImplementationSpecific
# 注意看它指向的slb
status:loadBalancer:ingress:- ip: 10.224.171.70

可以看出,nginx ingress是依赖service和slb的,当然service本身也采用了slb实现。

所以,这里就使用了两个slb。一个是ingress要用到的,另外一个是service需要的。

六、nginx

1、nginx.conf

user  nginx;
worker_processes  4;worker_cpu_affinity 00000001 00000010 00000100 00001000;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;worker_rlimit_nofile 204800;events {use epoll;worker_connections  204800;
}http {
...
...# 默认include /etc/nginx/conf.d/*.conf;# 一个服务对应一个conf文件,统一放在vhost目录下include /etc/nginx/vhost/*.conf;}

2、file.conf

upstream interfacecluster  {server 10.24.178.117:8089 weight=9 max_fails=0 fail_timeout=10s;server 10.24.178.118:8089 weight=9 max_fails=0 fail_timeout=10s;
}
server {listen  80;# 配置两个域名,一个是内网域名,一个是外网域名。# 建议你将内外网域名的配置分开来,因为内网往往只做反向代理,而外网则有权限拦截等需求server_name file.xxx.cloud file.xxx.net;location /  {proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_pass http://interfacecluster;include  proxy_params;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HTTP_HOST $host;proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;proxy_set_header HTTP_X_FORWARDED_HOST $host;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-HTTPS 0;}# 日志的路径access_log  /data/nginx/logs/filesoss_access.log  access;error_log  /data/nginx/logs/filesoss_error.log;
}

七、说在最后的话

因为阿里云的文档本身已很丰富全面了,本文不意再重复一遍,如果在看本文的时候,有不清楚的地方,还望见谅,结合官方文档可能更佳。

这篇关于阿里云环境下的配置DNS和SLB的几种实践示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/zhuganlai168/article/details/134813031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/618586

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os