阿里云环境下的配置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: xxx
  namespace: java-service
spec:
# Ingress Class必填
  ingressClassName: ack-nginx
  rules:
    - host: file.xxx.cloud
      http:
        paths:
          - backend:
              service:
                name: message-server
                port:
                  number: 8100
            path: /
            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;
}

七、说在最后的话

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
阿里云SLB(Server Load Balancer)和亚马逊ELB(Elastic Load Balancer)都是知名的云负载均衡服务,各有其优势和适用场景。选择哪个更好,取决于具体的需求和使用场景。 阿里云SLB的优点: 1. 高可用性:SLB提供了高可用性的负载均衡能力,可以自动检测并转发流量到可用的后端服务器。 2. 弹性扩展:SLB支持按需扩展,可以根据流量的变化自动调整负载均衡实例的容量。 3. 灵活的负载均衡策略:SLB支持多种负载均衡算法,如轮询、最小连接数等,可以根据应用需求选择合适的策略。 4. 多层次的健康检查:SLB可以对后端服务器进行健康检查,确保只有健康的服务器接收流量。 亚马逊ELB的优点: 1. 简化管理:ELB提供了易于使用的管理界面和API,可以方便地配置、监控和管理负载均衡实例。 2. 全球负载均衡:ELB支持全球负载均衡,可以将流量分发到多个地理位置的实例上,提供低延迟和高可用性。 3. 高度集成:ELB与亚马逊云服务(AWS)的其他服务紧密集成,如自动扩展、容器服务等,可以实现全面的云平台架构。 在选择阿里云SLB还是亚马逊ELB时,可以考虑以下因素: - 云平台:如果你已经选择了特定的云平台(阿里云或AWS),则建议使用相应平台的负载均衡服务,以便与其他云服务无缝集成。 - 功能需求:根据应用的负载均衡需求,比较SLB和ELB的功能差异,选择最符合需求的服务。 - 地域覆盖:如果你的应用需要全球负载均衡支持,可以考虑亚马逊ELB的全球负载均衡功能。 综上所述,阿里云SLB和亚马逊ELB都是成熟的云负载均衡服务,具体选择需要根据具体需求和使用情况进行评估。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草二十六_简村人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值