阿里云环境下的配置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

相关文章

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex