一个典型流程如上: (1)客户端通过域名daojia.com请求dns-server (2)dns-server返回域名对应的外网ip(1.2.3.4) (3)客户端访问外网ip(1.2.3.4)向反向代理 二、反向代理水平扩展 典型的互联网架构中,可以通过增加web-server来扩充web层的性能,但反向代理nginx仍是整个系统的唯一入口,如果系统吞吐超过nginx的性能极限,难以扩容,此时就需要dns-server 具体做法是:在dns-server对于同一个域名可以配置多个nginx的外网ip,每次dns解析请求,轮询返回不同的ip,这样就能实现nginx的水平扩展,这个方法叫“dns轮询”。 四、用户就近访问 如文章“缘起”中所述,http请求的第一个步骤域名到外网ip的转换,发生在整个服务端外部,服务端不可控,那么如果要实施“根据客户端ip来分配最近的服务器机房访问”,就只能在dns-server 上做了: (1)电信用户想要访问某一个服务器资源 (2)浏览器向dns-server发起服务器域名解析请求 (3)dns-server识别出访问者是电信用户 (4)dns-server将电信机房的nginx
可以看到,典型流程为: (1)客户端请求dns-server,发起域名解析; (2)dns-server返回域名对应的外网ip(1.2.3.4); (3)客户端通过外网ip(1.2.3.4),访问反向代理 DNS可以实现,用户所需资源的就近访问: (1)电信用户想要访问某一个服务器资源; (2)浏览器向dns-server发起域名解析请求; (3)dns-server识别出访问者是电信用户; (4)dns-server 典型的互联网架构中,可以通过增加web-server来扩充web层的性能,但反向代理nginx仍是整个系统的唯一入口,如果系统吞吐超过nginx的性能极限,难以扩容,此时就需要dns-server来配合水平扩展 具体做法是:在dns-server对于同一个域名可以配置多个nginx的外网ip,每次DNS解析请求,轮询返回不同的ip,这样就能实现nginx的水平扩展,这个方法叫“DNS轮询”。 可以将同一个域名的流量均匀分配到不同的nginx,那么也可以利用它来做web-server的负载均衡: (1)架构中去掉nginx层; (2)将多个web-server的内网ip直接改为外网ip; (3)在dns-server
部署好设置域名解析很流畅 用得深入一点就需要看官方的博客了 高级的功能没深入研究,暂时只使用了简单的域名解析功能 DnsServer 的安装使用 准备 版本:v11.4.1 docker 镜像:technitium/dns-server 5380 使用 Docker Compose 安装 本篇文章基于 Docker V24 及 Docker Compose V2,安装可以参考之前的文章 配置说明 指定版本:technitium/dns-server 65000 配置文件 compose.yml 准备好 compose.yml 拷贝到服务器 然后运行docker compose up -d即可 version: '3.1' services: dns-server : container_name: dns_server_11_4 hostname: dns-server restart: always image: technitium /dns-server:11.4.1 ports: - "5380:5380/tcp" #DNS web console (HTTP) # - "53443:53443/
相关工具 名称 Docker 描述 文库 mindoc 内网文档 禅道 app_zentao 项目管理 DNS dns-server 域名映射 Nginx 无 域名绑定 查看运行容器: docker 相关说明 文库 启动容器: docker start mindoc 详见:https://blog.52itstyle.com/archives/3135/ DNS 启动容器: docker start dns-server 详见:https://blog.52itstyle.com/archives/2782/ 禅道 启动容器: docker start app_zentao 进入容器: docker exec -it dns-server
直接查询 查询一个域名的A记录 nslookup domain [dns-server] nslookup www.google.com 8.8.8.8 Server: 8.8.8.8 Address Non-authoritative answer: Name: www.google.com Address: 172.217.5.196 查询其他记录 指定参数,查询其他记录 nslookup -qt=type domain [dns-server 负责人记录 RT 路由穿透记录 SRV TCP服务器信息记录 TXT 域名对应的文本信息 X25 域名对应的X.25地址记录 查询更具体的信息 nslookup –d [其他参数] domain [dns-server
linux操作系统层面的一个高性能、高可用、负载均衡服务器 3)keepalived:一款用来检测服务状态存活性的软件,常用来做高可用 4)f5:一个高性能、高可用、负载均衡的硬件设备 5)DNS轮询:通过在DNS-server 上对一个域名设置多个ip解析,来扩充web-server性能及实施负载均衡的技术 三、接入层技术演进 【裸奔时代单机架构】 裸奔时代的架构图如上: 1)浏览器通过DNS-server,域名解析到ip 3000时,如何扩容是首先要解决的问题,DNS轮询是一个很容易想到的方案: 此时的架构图如上: 1)多部署几份web-server,1个tomcat抗1000,部署3个tomcat就能抗3000 2)在DNS-server 层面,域名每次解析到不同的ip 优点: 1)零成本:在DNS-server上多配几个ip即可,功能也不收费 2)部署简单:多部署几个web-server即可,原系统架构不需要做任何改造 3)负载均衡:变成了多机 ,但负载基本是均衡的 缺点: 1)非高可用:DNS-server只负责域名解析ip,这个ip对应的服务是否可用,DNS-server是不保证的,假设有一个web-server挂了,部分服务会受到影响 2
0x01、直接查询 nslookup 域名 注意:没指定 dns-server,用系统默认的 dns 服务器。 Nslookup www.baidu.com ? 0x02、查询其他记录 1、查询命名服务器 nslookup -qt=type domain [dns-server] nslookup -q=type domain [dns-server] nslookup -type=type domain [dns-server] nslookup -querytype=type domain [dns-server] 注意以上四种查询用法结果相同,后面的 [dns-server 0x03、查询更具体的信息 nslookup –d [其他参数] domain [dns-server] ? 0x04、交互式查询用法 命令行直接输入 nslookup ?
通过在DNS-server上对一个域名设置多个IP解析,能够增加入口Nginx实例个数,起到水平扩容的作用,解决反向代理层的扩展性问题。 因此,反向代理和DNS轮询并不是互斥的技术,而是互补的技术。 浏览器通过DNS-server,域名解析到ip; 2. 浏览器通过ip访问web-server; 缺点: 1. 非高可用,web-server挂了整个系统就挂了; 2. 在DNS-server层面,域名每次解析到不同的ip; 优点: 1. 零成本:在DNS-server上多配几个ip即可,功能也不收费; 2. 非高可用:DNS-server只负责域名解析ip,这个ip对应的服务是否可用,DNS-server是不保证的,假设有一个web-server挂了,部分服务会受到影响; 2. DNS-server不需要动; 2. 负载均衡:通过Nginx来保证; 3. 只暴露一个外网ip,Nginx->tomcat之间使用内网访问; 4.
nslookup domain [dns-server] 如果没指定dns-server,用系统默认的dns服务器。 nslookup -qt=type domain [dns-server] 其中,type可以是以下这些类型: A 地址记录 AAAA 地址记录 AFSDB Andrew文件系统数据库服务器记录 ATMA 路由穿透记录 SRV TCP服务器信息记录 TXT 域名对应的文本信息 X25 域名对应的X.25地址记录 例如: 3 查询更具体的信息 查询语法: nslookup –d [其他参数] domain [dns-server
通过在DNS-server上对一个域名设置多个IP解析,能够增加入口Nginx实例个数,起到水平扩容的作用,解决反向代理层的扩展性问题。 裸奔时代(1)单机架构 裸奔时代的架构图如上: (1) 浏览器通过DNS-server,域名解析到ip; (2) 浏览器通过ip访问web-server; 缺点: (1) 非高可用,web-server 此时的架构图如上: (1) 多部署几份web-server,1个tomcat抗1000,部署3个tomcat就能抗3000; (2) 在DNS-server层面,域名每次解析到不同的ip; 优点: (1 ) 零成本:在DNS-server上多配几个ip即可,功能也不收费; (2) 部署简单:多部署几个web-server即可,原系统架构不需要做任何改造; (3) 负载均衡:变成了多机,负载也是均衡的; 缺点: (1) 非高可用:DNS-server只负责域名解析ip,这个ip对应的服务是否可用,DNS-server是不保证的,假设有一个web-server挂了,部分服务会受到影响; (2) 扩容非实时
直接查询 nslookup domain [dns-server] //如果没有指定dns服务器,就采用系统默认的dns服务器。 b. 查询其他记录 nslookup -qt = type domain [dns-server] type: A -->地址记录 AAAA -->地址记录 AFSDB Andrew 查询更具体的信息 nslookup -d [其他参数] domain [dns-server] //只要在查询的时候,加上-d参数,即可查询域名的缓存 版权声明:本文内容由互联网用户自发贡献,
2、使用 2.1、直接查询 nslookup domain [dns-server] 如果没有指定dns服务器,就采用系统默认的dns服务器 示例: 2.2、查询其他记录 nslookup -qt= type domain [dns-server] type可以为一下类型: A :地址记录(直接查询默认类型) AAAA :地址记录 AFSDB: Andrew文件系统数据库服务器记录 ATMA TXT: 域名对应的文本信息 X25: 域名对应的X.25地址记录 2.3、查询更具体的信息 只要在查询的时候,加上-d参数,即可查询域名的缓存 nslookup -d [其他参数] domain [dns-server
5)DNS轮询:通过在DNS-server上对一个域名设置多个ip解析,来扩充web-server性能及实施负载均衡的技术 三、接入层技术演进 【裸奔时代(0)单机架构】 ? 裸奔时代的架构图如上: 1)浏览器通过DNS-server,域名解析到ip 2)浏览器通过ip访问web-server 缺点: 1)非高可用,web-server挂了整个系统就挂了 2)扩展性差,当吞吐量达到 此时的架构图如上: 1)多部署几份web-server,1个tomcat抗1000,部署3个tomcat就能抗3000 2)在DNS-server层面,域名每次解析到不同的ip 优点: 1)零成本:在DNS-server ip,这个ip对应的服务是否可用,DNS-server是不保证的,假设有一个web-server挂了,部分服务会受到影响 2)扩容非实时:DNS解析有一个生效周期 3)暴露了太多的外网ip 【简易扩容方案 此时的架构图如上: 1)站点层与浏览器层之间加入了一个反向代理层,利用高性能的nginx来做反向代理 2)nginx将http请求分发给后端多个web-server 优点: 1)DNS-server不需要动
相关工具 名称 Docker 描述 文库 mindoc 内网文档 禅道 app_zentao 项目管理 DNS dns-server 域名映射 Nginx 无 域名绑定 查看运行容器: docker 相关说明 文库 启动容器: docker start mindoc 详见:https://blog.52itstyle.vip/archives/3135/ DNS 启动容器: docker start dns-server
andyshinn/dnsmasq的docker镜像,2.75版本,执行命令: docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server dnsmasq -k" 22 hours ago Up About an hour 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp dns-server 配置DNS 进入容器: docker exec -it dns-server /bin/sh 创建代理文件: vi /etc/resolv.dnsmasq 添加内容: nameserver 114.114.114.114 追加下述两个配置 resolv-file=/etc/resolv.dnsmasq addn-hosts=/etc/dnsmasqhosts 退出容器: exit 重启容器: docker restart dns-server
andyshinn/dnsmasq的docker镜像,2.75版本,执行命令: docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server dnsmasq -k" 22 hours ago Up About an hour 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp dns-server 配置DNS 进入容器: docker exec -it dns-server /bin/sh 创建代理文件: vi /etc/resolv.dnsmasq 添加内容: nameserver 114.114.114.114 追加下述两个配置 resolv-file=/etc/resolv.dnsmasq addn-hosts=/etc/dnsmasqhosts 退出容器: exit 重启容器: docker restart dns-server
口》2口为网桥,1口为管理口; 4、核心交换机的基本配置 配置几个VLAN的IP地址池 ip dhcp pool VLAN11 network 192.168.11.0 255.255.255.0 dns-server 114.114.114.114 211.136.192.6 default-router 192.168.11.1 ip dhcp pool VLAN12 network 192.168.12.0 255.255.255.0 dns-server 211.136.192.6 default-router 192.168.12.1 ip dhcp pool VLAN100 network 192.168.100.0 255.255.252.0 dns-server 211.136.192.6 default-router 192.168.100.1 ip dhcp pool VLAN200 network 192.168.200.0 255.255.252.0 dns-server
andyshinn/dnsmasq的docker镜像,2.75版本,执行命令: docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server dnsmasq -k" 22 hours ago Up About an hour 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp dns-server 配置DNS 进入容器: docker exec -it dns-server /bin/sh 创建代理文件: vi /etc/resolv.dnsmasq 添加内容: nameserver 114.114.114.114nameserver 追加下述两个配置 resolv-file=/etc/resolv.dnsmasqaddn-hosts=/etc/dnsmasqhosts 退出容器: exit 重启容器: docker restart dns-server
pool 1 network 172.16.1.0 255.255.255.0 range 172.16.1.2 172.16.1.254 default-router 172.16.1.1 dns-server pool p1 network 192.168.0.0 255.255.255.0 range 192.168.0.4 192.168.0.250 default-router 192.168.0.1 dns-server
network 192.168.10.0 255.255.255.0 Switch(dhcp-config)#default-router 192.168.10.254 Switch(dhcp-config)#dns-server network 192.168.20.0 255.255.255.0 Switch(dhcp-config)#default-router 192.168.20.254 Switch(dhcp-config)#dns-server network 192.168.30.0 255.255.255.0 Switch(dhcp-config)#default-router 192.168.30.254 Switch(dhcp-config)#dns-server network 192.168.40.0 255.255.255.0 Switch(dhcp-config)#default-router 192.168.40.254 Switch(dhcp-config)#dns-server