




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Squid3 0 反向代理反向代理 DNS 轮询实现负载均衡轮询实现负载均衡 系统拓朴图系统拓朴图 一台 DNS 服务器 操作系统 Freebsd 软件 BIND 9 5 IP 192 168 76 222 三台 Squid 服务器 操作系统 Linux AS 4 软件 Squid 3 0 相应的 IP 如下 Squid1 192 168 76 223 Squid2 192 168 76 224 Squid3 192 168 76 225 三台 WEB 服务器 操作系统 Linux AS 4 应用软件 Tomcat 5 0 Mysql 相应的 IP 地址如下 webServer1 210 82 118 195 webServer2 192 168 76 226 webServer1 192 168 76 227 应用软件的安装和配置应用软件的安装和配置 配置配置 DNS 服务器服务器 软件利用 Freebsd 自带的 bind 9 5 然后针对该系统配置 bind 首先修改 bind 的配 置文件 etc namedb named conf 在文件中添加 zone type master file master 再在 etc namedb master 目录下添加 文件 该文件的内容如下 TTL 3600 IN SOA search root 20080807 Serial 3600 Refresh 900 Retry 3600000 Expire 3600 Minimum IN NS 1 IN PTR wenjin IN A 192 168 76 223 wenjin IN A 192 168 76 224 wenjin IN A 192 168 76 225 这样当用户请求的时候 DNS 通过轮询机制将 的域名解析为 192 168 76 223 192 168 76 224 和 192 168 76 225 其中之一 配置完成后 运行 rndc star t 启动 bind 服务 用 ps A grep named 查看 bind 服务是否起来 用 nslookup 测试 bind 服务是否正常运行 配置配置 Squid1 服务器服务器 下载 squid 3 0 STABLE8 tar gz 源码包 将其放在 home 目录下 解压缩 tar zxvf squid 3 0 STABLE8 tar gz 设置配置参数 cd squid 3 0 STABLE10 configure prefix usr local squid 将 squid 安装在 usr local 目录下 编译安装 Make make install 安装完以后会在 usr local 目录下看见 squid 目录 配置 squid 配置文件 编辑 squid conf 文件 vi usr local squid etc squid conf cache effective user squid cache effective group squid 设定 squid 的主机名 如无此项 squid 将无法启动 visible hostname 配置 squid 为加速模式 http port 80 accel vhost vport icp port 3130 配置 squid2 squid3 为其邻居 当 squid1 在其缓存中没有找到请求的资 源时 通过 ICP 查询去其邻居中取得缓存 cache peer sibling 80 3130 cache peer sibling 80 3130 squid1 的三个父节点 originserver 参数指明是源服务器 round robin 参数 指明 squid 通过轮询方式将请求分发到其中一台父节点 squid 同时会对这些父节点 的健康状态进行检查 如果父节点 down 了 那么 squid 会从剩余的 origin 服务器 中抓取数据 cache peer 210 82 118 195 parent 8080 0 no query originserver round robin name webServer1 cache peer 192 168 76 226 parent 8080 0 no query originserver round robin name webServer2 cache peer 192 168 76 227 parent 8080 0 no query originserver round robin name webServer3 将 域的请求通过 RR 轮询方式转发到三个父节点 中的一个 cache peer domain webServer1 cache peer domain webServer2 cache peer domain webServer3 cache peer domain webServer1 webServer2 webServer3 上 面三行也可以写成一行 下面是一些访问控制 日志和缓存目录的设置 acl localnet src 192 168 76 223 192 168 76 224 192 168 76 225 acl all src 0 0 0 0 0 0 0 0 http access allow all icp access allow localnet cache log usr local squid var logs cache log access log usr local squid var logs access log squid cache dir ufs usr local squid var cache 1000 16 256 对 squid 的一些优化 maximum object size 10240 KB 能缓存的最大对象为 10M maximum object size in memory 512 KB 内存中缓存的最大对象 512K cache mem 256 MB squid 用于缓存的内存量 保存后 wq 退出 在 etc hosts 文件中添加 192 168 76 223 192 168 76 224 192 168 76 225 保存后 wq 退出 检查 squid 配置文件正确与否 usr local squid sbin squid k parse reconfigure k help 可以查看 生成缓存目录 usr local squid sbin squid z 启动 squid usr local squid sbin squid D 配置配置 squid2 和和 squid3 服务器服务器 squid2 和 squid3 服务器的配置方法和配置参数和 squid1 一样 配置完成后 分别启 动这两个服务器上的 squid 服务 在 squid 的日志文件 cache log 中 出现如下日志信息则说明三台 squid 之间成功配 置为 sibling 且配置了三个父代理 2008 11 17 10 08 47 Configuring Sibling 2008 11 17 10 08 47 Configuring Sibling 2008 11 17 10 08 47 Configuring Parent 210 82 118 195 8080 0 2008 11 17 10 08 47 Configuring Parent 192 168 76 226 8080 0 2008 11 17 10 08 47 Configuring Parent 192 168 76 227 8080 0 2008 11 17 10 08 47 Ready to serve requests 测试测试 测试之前 保证 DNS 服务 三台 squid 服务和三台 web 服务都正常起来 在客户端 输入 则正确的显示该网页 服务器端的响应对客户端是透 明的 客户端不知道请求是由哪台 WEB 服务器处理的 而且其中某台 Squid 服务器或 WEB 服务器发生故障 也不影响服务的正常运行 总结总结 Squid 是一个开源的软件 利用它的反向代理技术可以提高网站系统的访问速度 本文 在真实的网络环境下 利用三台 squid 反向代理服务器加速了网站的性能 同时结合 DNS 轮询技术实现了网站的负载均衡 经过一段时间的测试和试运行 该网站的访问速度 和可用性方面都有很大的提高 从未出现过网站服务中断情况 但 DNS 轮询具有明显的缺 点 一旦某个服务器出现故障 即使及时修改了 DNS 设置 还是要等待足够的时间 刷新 时间 才能发挥作用 在此期间 保存了故障服务器地址的客户计算机将不能正常访问服 务器 缺点 第一 域名服务器是一个分布式系统 是按照一定的层次结构组织的 当用户将域名 解析请求提交给本地的域名服务器 它会因不能直接解析而向上一级域名服务器提交 上 一级域名服务器再依次向上提交 直到 RR DNS 域名服务器把这个域名解析到其中一台服 务器的 IP 地址 可见 从用户到 RR DNS 间存在多台域名服务器 而它们都会缓冲已解 析的名字到 IP 地址的映射 这会导致该域名服务器组下所有用户都会访问同一 Web 服务器 出现不同 Web 服务器间的负载不平衡 为了保证在域名服务器中域名到 IP 地址的映射不 被长久缓冲 RR DNS 在域名到 IP 地址的映射上设置一个 TTL Time To Live 值 过了这 一段时间 域名服务器将这个映射从缓冲中淘汰 当用户请求 它会再向上一级域名服务 器提交请求并进行重新映射 这就涉及到如何设置这个 TTL 值 若这个值太大 在这个 TTL 期间 很多请求会被映射到同一台 Web 服务器上 同样会导致负载不平衡 若这个 值太小 例如是 会导致本地域名服务器频繁地向 RR DNS 提交请求 增加了域名解析 的网络流量 同样会使 RR DNS 成为系统中一个新的瓶颈 第二 用户机器会缓冲从名字到 IP 地址的映射 而不受 TTL 值的影响 用户的访问 请求会被送到同一台 Web 服务器上 由于用户访问请求的突发性和访问方式不同 例如 有的人访问一下就离开了 而有的人访问可长达几个小时 所以各台服务器间的负载仍存 在倾斜 Skew 而不能控制 假设用户在每个会话中平均请求数为 20 负载最大的服务器 获得的请求数额高于各服务器平均请求数的平均比率超过百分之三十 也就是说 当 TTL 值为 0 时 因为用户访问的突发性也会存在着较严重的负载不平衡 第三 系统的可靠性和可维护性不好 若一台服务器失效 会导致将域名解析到该服 务器的用户看到服务中断 即使用户按 Reload 按钮 也无济于事 系统管理员也不能 随时地将一台服务器切出服务进行维护 如进行操作系统和应用软件升级 这需要修改 RR DNS 服务器中的 IP 地址列表 把该服务器的 IP 地址从中划掉 然后等上一段时间 等所有域名服务器将该域名到这台服务器的映射淘汰 和所有映射到这台服务器的客户机 不再使用该站点为止 如果要将此架构环境用于实际生产的同志请谨慎考虑 优点 dns 相对于 lvs 或其它负载均衡策略而言也有优势所在 这是因为负载均衡都是把所有 的访问先集中到一个 ip 上 因为只有一个 ip 所以无意间这个 ip 的稳定性就关系重大了 ip 稳定性会受很多因素影响 n 个交换机 线路 机器等等 颇为复杂 而首页很有可能 会用到异地的负载均衡 这么来不用 dns 方案就很难设计了 现在的常用浏览器和下载 软件 都有对 dns 的故障处理机制 所以 dns 也是可以屏蔽掉一些故障的 虽然功能不强 但也较为实用 相比之下 即使是 lvs 也会有很多杂七杂八的问题 反而不如 dns 性能强 和稳定 建议可以以此模型架构来学习 squid 反向代理原理及语法 建议采用源码安装 squid3 0 squid2 6 反向代理实验模型反向代理实验模型 作者 王斌斌 抚琴煮酒 Tool squid 2 6 STABLE6 4 el5 拓扑图 如上图 有两个网络 公司内部私有网络 192 168 1 0 24 Internet 外部网络 10 66 0 0 24 公司内部网络有两个服务器 Server A 提供两种服务 端口 81 提供服务 1 端口 82 提供服务 2 Server B 提供一种服务 通过端口 80 来提供服务 Squid 作为公司内部服务器的反向代理 两块网卡 其 IP 分别是 eth0 10 66 0 80 接 Internet 外部网络 eth1 192 168 1 200 接公司内部私有网络 Internet 外部网络通过 Squid 代理服务器 访问公司内部服务器 例如 Client 10 66 0 174 它不能直接访问公司内部服务器 而是通过 Squid 访问公司内部服务器 外部网络客户端访问公司内部网络服务器的流程 举个例子 如下 首先 在 Client 端修改 etc hosts 文件 添加如下三行 10 66 0 80 www serverA www 10 66 0 80 www serverA www 10 66 0 80 www serverB com www 注 添加这三行 目的是为了让客户端能够解析这三个域名 www serverA www serverA www serverB com 其对应 IP 为 10 66 0 80 squid 反向代理服务器的 IP 这里 Squid 反向代理服务器监听端口 8000 默认是 3128 在客户端 打开浏览器 在浏览器地址栏输入 www serverA 8000 下图显示了 客户端发出这个请求后 到最后收到数据的整个流程 Phase 1 这里客户端在浏览器地址栏输入 www serverA 8000 通过 Client 本地 etc hosts 解析 域名 www serverA 对应的 IP 是 10 66 0 80 Squid 反向代理服务器 于是客户端向 Squid 反向代理服务器端口 8000 发送请求 注 在客户端浏览器地址栏输入 www serverA 8000 和 http 10 66 0 80 8000 是不一样的 虽然都是请求 Squid 反向代理服务器 8000 端口 但它们有本质的区别 如 果通过 IP 方式 http 10 66 0 80 8000 访问 Squid 服务器 则不能实现让 Squid 服务器对 内部网络多个服务器作代理 此时 Squid 只能将客户端的请求向内部网络的 一个 服务 器作请求 为了实现 Squid 能对内部网络多个服务器作代理 需要使用域名方式 例如这 里的 www serverA 8000 Squid 服务器收到这样的请求后 它会解析 Host 是 www serverA 在 配置 Squid 时 有两个选项 cache peer 和 cache peer domain 这两个配置项让 Squid 有能力知道 www serverA 这个请求最终 是想访问公司内部网络服务器 A Server A 的 81 端口 从而实现了 Squid 对内部多个 服务器作代理的功能需求 关于 cache peer 和 cache peer domain 的使用见后文 Phase 2 如上所述 Squid 服务器收到客户端发来的请求 一看是 www serverA Squid 知道接下来去请求公司内部网络服务器 A Server A 的 81 端 口 Phase 3 Server A 提供的服务 1 Service 1 监听端口 81 收到 Squid 发送过来的请 求 于是根据请求发送相应数据给 Squid 服务器 Phase 4 Squid 收到服务器 A Server A 从端口 81 发送过来的数据后 会将该数据 在本地缓存 同时将数据从自己的 8000 端口发送给外部网络的客户端 上面四个步骤结束后 客户端就会收到所希望的数据 值得说明的是 在整个过程中 公司内部网络的服务器对客户端是透明的 即客户端 并不知道内部网络究竟有哪些服务器 提供哪些服务 客户端仅仅是访问 Squid 服务器的 8000 端口 然后获得相应的数据 理解上面 Squid 作代理 客户端的请求流程后 下面介绍 Squid 的一些配置项 注 以下内容是 Squid 一些基本配置项的说明 其中重点解释给多个服务器作代理所涉 及的配置项 需要读者对 Squid 有一些基本的认识 另外关于 Squid 还有很多没提到的配 置项 有些配置项是直接影响 Squid 服务器的性能 这里不作说明 vim etc squid squid conf http port 8000 vhost Squid 服务器监听本机 8000 端口 vhost 支持虚拟主机 cache peer 192 168 1 50 parent 81 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 刺绣面料再造课件
- 到农村挖笋去课件
- 别说我小课件
- 农业安全培训新闻稿课件
- 农业区位的因素
- 兴趣班结业式课件
- 化工企业夏防安全培训课件
- 兴趣排行榜课件
- 社保终止合同书6篇
- 初次安全教育培训内容课件
- 知识分享大讲堂活动方案
- 制药企业GMP生产质量管理培训资料
- 4.1.2+无理数指数幂及其运算性质课件-2025-2026学年高一上学期数学人教A版必修第一册
- 土地管理法测试题及答案
- 工程用工实名管理方案(3篇)
- 2025兴业银行福建总行国际业务部交易银行部招聘若干人备考考试题库附答案解析
- 食品卫生消防安全应急预案
- 2025-2026学年鲁科版小学劳动技术一年级上册教学计划及进度表
- 无领导小组讨论的经典面试题目及答案解析
- (2025秋新版)苏教版三年级数学上册全册教案
- 电气值班员现场问答50题
评论
0/150
提交评论