开放服务
1使用域名系统
1.1Host管理
/etc/hosts下
Host ip映射
- 流量和负载:用户规模指数级增长,文件大小越来越大,统一分发引起较大的网络流量和cpu负载
- 名称冲突:无法保证主机名称的唯一性,同名主机添加导致服务故障
- 时效性:分发靠人工上传,时效性太差
1.2域名系统
使用域名系统替换hosts文件
域名空间
- 域名空间被组织成树形结构
- 域名空间通过划分zone的方式进行分层授权管理
- 全球公共域名空间仅对应一棵树
- 根域名服务器:查询起点
- 域名组成格式: [a-zA-Z0-9_ -], 以点划分label
1.3购买配置域名
在阿里巴巴可以购买域名
域名备案:防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,一般在云厂商处即可进行实名认证并备案
修改配置:
- 清空/etc/hosts
- 配置/etc/resolv conf中nameservers为公共DNS迁移原配置,通过控制台添加解析记录即可
1.4开放外部访问
方案:租赁一个外网ip,专用于外部用户访问门户网站,将 自定义域名 解析到外网ip,将该ip绑定到一台物理机上,并发布公网route,用于外部用户访问。
2自建DNS服务器
2.1域名解析过程
- 主机首先向其本地域名服务器进行递归查询。
- 本地域名服务器采用迭代查询,它先向某个根域名服务器查询。
- 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。
- 本地域名服务器向顶级域名服务器进行迭代查询。
- 顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的IP地址。
- 本地域名服务器向权限域名服务器进行迭代查询。
- 权限域名服务器告诉本地域名服务器所查询的域名的IP地址。
- 本地域名服务器最后把查询的结果告诉主机。
2.2开源
- 常见的开源DNS: bind、 nsd、 knot、 coredns
3接入https协议
- 对称加密数据传输
- 非对称加密数据传输
3.1SSL
获取密钥
- client random
- server random
- premaster secret
- 加密算法协商
client验证签收
- 是否是可信机构颁布
- 域名是否与实际访问一致
- 检查数字签名是否一致
- 检查证书的有效期
- 检查证书的撤回状态
4接入全站加速
-
源站容量问题
增加后端机器扩容;静态内容,使用静态加速缓存CDN
-
网络传输问题
动态加速DCDN
-
全站加速
静态加速+动态加速
5 4层负载均衡
基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。
5.1三个主要功能
- 解耦vip和rs
- NAT
- 防攻击: syn proxy
5.2特点
- 大部分都是通过dpdk技术实现,技术成熟,大厂都在用
- 纯用户态协议栈,kernel bypass,消除协议栈瓶颈
- 无缓存,零拷贝,大页内存(减少cache miss)
- 仅针对4层数据包转发,小包转发可达到限速,可承受高cps
6 7层负载均衡
- SSL卸载:业务侧是http服务,用户需要用https访问
- 请求重定向:浏览器访问某域名自动跳转
- 路由添加匹配策略:完全、前缀、正则
- Header编辑
- 跨域支持
- 协议支持: websocket、grpc、quic
6.1使用Nginx
- 模块化设计,较好的扩展性和可靠性
- 基于master/worker架构设计
- 支持热部署:可在线升级
- 不停机更新配置文件、更换日志文件、更新服务器二进制
- 较低的内存消耗: 1万个keep-alive连接模式下的非活动连接仅消耗2.5M内存
- 事件驱动:异步非阻塞模型、支持aio, mmap (内存映射)
nginx反向代理
nginx事件驱动
nginx异步非阻塞
- 一个进程/线程处理多个连接/请求异步非阻塞模型、减少OS进程切换
提升cpu效率
- multi_ accept允许worker同时接受新连接
- accept mutex解决惊群问题
- reuseport监听同端口,内核负载均衡
提升网络效率
- 连接复用 减少upstr eam建连
- 使用Cache 超时时间对业务的影响
- gzip压缩 会增加cpu开销,需平衡使用
- 开启proxy_buffering 谨慎设置proxy_buffer 大小,磁盘io读写