阿里云环境下的配置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的几种实践示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618586

相关文章

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一