CDN网络架构
CDN(content delivery network 内容分发网络)
本质上就是提供缓存,使得用户总是能访问离他最近的服务器,akamai是世界上的第一家做CDN的公司
实例:构建CDN分发网络架构
环境:使用7台 Linux主机部署CDN环境架构,使用Nginx作为Web服务器,Squid作为各地区反向代理服务器,Bind作为分离解析DNS服务器
环境如下:
DNS 服务器(192.168.4.253):dns253.hydra.com
反向代理服务器(192.168.4.1):squid1.hydra.com
反向代理服务器(192.168.4.2):squid2.hydra.com
Web1 服务器(192.168.4.3):web1.hydra.com
Web2 服务器(192.168.4..4):web2.hydra.com
测试客户机 01(192.168.4..10):pc01.hydra.com
测试客户机 02(192.168.4..20):pc02.hydra.com
测试时,客户端主机pc01访问http://www.hydra.com 通过DNS解析后,指向,Squid2服务器(192.168.4.2),客户端主机pc02访问http://www.hydra.com通过DNS解析后,指向 Squid1服务器(192.168.4.1)
部署两台Nginx服务器(两台做相同的操作)
使用 yum 安装基础依赖包并使用源码安装 LNMP 环境软件
[root@web1 ~]# yum -y groupinstall "Development tools"
[root@web1 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel
[root@web1 ~]# useradd –s /sbin/nologin nginx
使用源码安装 Nginx
[root@web1 ~]# tar -zxvf nginx-1.2.0.tar.gz
[root@web1 nginx-1.2.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module
[root@web1 ~]# make && make install
使用源码安装 cmake
[root@web1 ~]# tar -zxvf cmake-2.8.10.2.tar.gz
[root@web1 cmake-2.8.10.2]# ./bootstrap --prefix=/usr/local/cmake
[root@web1 cmake-2.8.10.2]# make && make install
[root@web1 cmake-2.8.10.2]# /usr/local/cmake/bin/cmake --version
[root@web1 ~]# useradd –s /sbin/nologin mysql
使用源码安装 mysql
[root@web1 ~]# tar -zxvf mysql-5.5.13.tar.gz
[root@web1 mysql-5.5.13]# /usr/local/cmake/bin/cmake
\
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
\
> -DSYSCONFDIR=/etc
-DMYSQL_DATADIR=/usr/local/mysql/data \
> -DMYSQL_TCP_PORT=3306 \
> -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
> -DMYSQL_USER=mysql
-DEXTRA_CHARSETS=all \
> -DWITH_SSL=system
-DENABLED_LOCAL_INFILE=1 \
[root@web1 mysql-5.5.13]# make && make install
[root@web1 mysql-5.5.13]# chown -R mysql.mysql /usr/local/mysql/
[root@web1 mysql-5.5.13]# cd /usr/local/mysql
[root@web1 mysql]#./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
使用源码安装 mhash、libiconv、libmcrypt、PHP
[root@web1 ~]# tar -zxvf mhash-0.9.9.9.tar.gz
[root@web1 mhash-0.9.9.9]# ./configure
[root@web1 mhash-0.9.9.9]# make && make install
[root@web1 ~]# tar -zxvf libiconv-1.13.tar.gz
[root@web1 libiconv-1.13]# ./configure
[root@web1 libiconv-1.13]# make && make install
[root@web1 ~]# tar -zxvf libmcrypt-2.5.8.tar.gz
[root@web1 libmcrypt-2.5.8]# ./configure
[root@web1 libmcrypt-2.5.8]# make && make install
[root@web1 libmcrypt-2.5.8]# ldconfig -v
[root@web1 libmcrypt-2.5.8]# cd libltdl
[root@web1 libmcrypt-2.5.8]# cd ./configure --with-gmetad --enable-gexec --enable-ltdl-install
[root@web1 libltdl ]# make && make install
[root@web1 ~]# ln -sv /usr/local/lib/libmcrypt* /usr/lib/
[root@web1 ~]# ln -sv /usr/local/lib/libmhash.* /usr/lib/
[root@web1 ~]# ln -sv /usr/local/lib/libicon.* /usr/lib/
[root@web1 ~]# tar -zxvf php-5.4.9.tar.gz
[root@web1 ~]# cd php-5.4.9
[root@web1 php-5.4.9]# ./configure \
> --prefix=/usr/local/php5 \
> --with-config-file-path=/usr/local/php5nginx/etc \
> --with-mysql=/usr/local/mysql \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-fpm --enable-mbstring
[root@web1 php-5.4.9]# make ZEND_EXTRA_LIBS='-liconv'
[root@web1 php-5.4.9]# make install
[root@web1 php-5.4.9]# cp php.ini-production /usr/local/php5/etc/php.ini
启动相关服务
[root@web1 ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@web1 ~]# netstat -utnlp | grep :80
启动MySQL,启动前需要拷贝相关配置文件及启动脚本
[root@web1 mysql]# cp /usr/local/mysql/my.cnf /etc/my.cnf
[root@web1 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@web1 mysql]# chmod +x /etc/init.d/mysqld
[root@web1 mysql]# chkconfig add mysqld
[root@web1 mysql]# chkconfig mysqld on
[root@web1 ~]# service mysqld start
[root@web1 ~]# echo “/usr/local/mysql/lib/” >> /etc/ld.so.conf
[root@web1 ~]# ldconfig
[root@web1 ~]# vim /etc/profile
.. ..
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/
export PATH
[root@web1 ~]# source /etc/profil
修改配置文件实现 FastCGI 功能,生成 php-fpm 配置文件,默认安装完php后,会自动生成一个php-fpm参考板
[root@web10 ~]# cd /usr/local/php5/etc/
[root@web10 etc]# cp php-fpm.conf.default php-fpm.conf
[root@web10 etc]# vim /usr/local/php5/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = error
daemonize = yes
[nginx]
user = nginx
group = nginx
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 32
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 32
[root@web1 ~]# cd php-5.4.9/sapi/fpm/
[root@web1 fpm]# cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@web1 fpm]# chmod +x /etc/rc.d/init.d/php-fpm
[root@web1 fpm]# chkconfig --add php-fpm
[root@web1 fpm]# service php-fpm start
[root@web1 fpm]# ps aux | grep php-fpm
[root@web1 etc]# /usr/local/php5/sbin/php-fpm --fpm-config /usr/local/php5/etc/php-fpm.conf
修改 nginx 配置文件并启动服务
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
[root@web1 ~]# vim /usr/local/nginx/conf/fastcgi_params
.. ..
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_
[root@web1 ~]# /usr/local/nginx/sbin/nginx
创建PHP首页文档
[root@web1 ~]# vim /usr/local/nginx/html/index.php
<?php
$links=mysql_connect("localhost","root","密码");(root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空)
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
部署两台前端 Squid 服务器(两台做相同的操作)
[root@squid1 ~]# yum -y install squid
修改/etc/squid/squid.conf配置文件
[root@squid1 ~]# vim /etc/squid/squid.conf
.. ..
http_port 80 vhost //设置反向代理
visible_hostname squid100.tarena.com //设置主机名
cache_peer 192.168.4.1 parent 80 0 originserver
cache_peer 192.168.4.2 parent 80 0 originserver
cache_mem 128 MB //内存缓存
cache_dir ufs /var/spool/squid 200 16 128 //硬盘缓存
http_access allow localnet //允许本机所在网络中的所以主机使用代理服务器
[root@squid1 ~]# service squid restart; chkconfing squid on(启动 squid 服务,设置为开机启动)
部署 DNS 服务器
[root@dns253 ~]# yum –y install bind bind-chroot
修改 Bind 配置文件实现分离解析,修改主配置文件,添加视图及区域
[root@dns253 ~]# vim /var/named/chroot/etc/named.conf
options
{
directory "/var/named"; //区域数据文件存放路径
listen-on port 53 { any; };
allow-query { any; };
allow-query-cache { any; };
recursion yes;
};
acl client1 { //定义 ACL 指向测试客户端主机 pc01
192.168.4.10;
};
acl client2 { //定义 ACL 指向测试客户端主机 pc02
192.168.4.20;
};
view "zone1" ////定义视图 zone1
{
match-clients { client1; }; //匹配条件为指定 pc01 的 ACL
zone "hydra.com" IN {
tpype master;
file "hydra.com.zone1";
};
};
view "zone2" //定义视图 zone2
{
match-clients { client2; }; //匹配条件为指定 pc02 的 ACL
zone "hydra.com" IN {
type master;
file "hydra.com.zone2";
};
};
修改区域数据文件,添加域名解析记录。因为需要实现分离解析,此区域数据文件需要创建两份,并且要求解析记录要有所不同
[root@dns253 ~]#cp /usr/share/doc/bind-9.8.2/sample/var/named/named.localhost /var/named/chroot/var/named/hydra.com.zone1 //复制模板
[root@dns253 ~]# vim /var/named/chroot/var/named/hydra.com.zone1
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns253.hydra.com.
dns253 A 192.168.4.253
www A 192.168.4.2 //将www解析为Squid2主机的IP地址
squid1 A 192.168.4.1
squid2 A 192.168.4.2
web1 A 192.168.4.3
web2 A 192.168.4.4
pc01 A 192.168.4.10
pc02 A 192.168.4.20
[root@dns254 ~]# cd /var/named/chroot/var/named/
[root@dns254 ~]# vim /var/named/chroot/var/named/hydra.com.zone2
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns253.hydra.com.
dns253 A 192.168.4.253
www A 192.168.4.1 //将www解析为Squid1主机的IP地址
squid1 A 192.168.4.1
squid2 A 192.168.4.2
web1 A 192.168.4.3
web2 A 192.168.4.4
pc01 A 192.168.4.10
pc02 A 192.168.4.20
启动 DNS 服务
[root@dns253 ~]# service named start;chkconfig named on
客户端测试
[root@pc01 ~]# firefox http://www.hydra.com
[root@pc02 ~]# firefox http://www.hydra.com
CDN网络架构的更多相关文章
- 闲谈CDN网络架构
CDN也就是内容分布网络(Context Delivery Network),它是构筑在现有interent上的一种先进的流量分配网络.其目的是通过现有的Internet中增加一层新的网络架构,将网站 ...
- 构建 CDN 分发网络架构简析
构建 CDN 分发网络架构 CDN的基本目的:1.通过本地缓存实现网站的访问速度的提升 CDN的关键点:CNAME在域名解析:split智能分发,引流到最近缓存节点
- 构建 CDN 分发网络架构
cdn基本架构: CDN的基本目的:1.通过本地缓存实现网站的访问速度的提升 CDN的关键点:CNAME在域名解析:split智能分发,引流到最近缓存节点
- 通过Microsoft Azure服务设计网络架构的经验分享(转)
原文:http://www.infoq.com/cn/articles/azure-networking-tips 本文从产品设计和架构角度分享了 Microsoft Azure 网络服务方面的使用经 ...
- 通过Microsoft Azure服务设计网络架构的经验分享
作者 王枫 发布于 2014年4月8日 本文从产品设计和架构角度分享了Microsoft Azure网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构. Mic ...
- 复杂的web---web中B/S网络架构
web中B/S网络架构 1:web中B/S网络架构 2:CDN工作机制和架构 3:负载均衡: B/S分别是浏览器/服务器,架构流程为: 当你访问网站的时候,浏览器发送各种请求给浏览器,服 ...
- B/S网络架构
B/S基于统一的应用层协议HTTP来交互数据,目前的B/S网络架构大多采用如图所示的架构设计,既要满足海量用户访问请求,又要保持用户请求的快速响应. 当一个用户在浏览器输入www.taobao.com ...
- 数据中心网络架构的问题与演进 — 混合云与 VPC 专有网络
目录 文章目录 目录 前文列表 历史背景 混合云 Why hybrid cloud? 混合云市场 混合云的逻辑架构 混合云应用场景 灾难恢复 数据备份 负载扩容 应用部署 开发测试生产部署 混合云产品 ...
- CC视频CTO栗伟:CDN系统架构及CC视频应用实践
2017 年 11 月9日,CC视频获2.08 亿元C轮融资. EGO 北京分会会员.CC视频CTO栗伟获邀作为 EGO 线上分享第三季嘉宾,与大家交流了CDN系统架构及CC 视频的应用实践. \\ ...
随机推荐
- PHP中利用PHPMailer配合QQ邮箱实现发邮件
PHPMailer的介绍: 优点: 可运行在任何平台之上 支持SMTP验证 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址:注:添加抄送.暗送仅win平台下smtp方式支持 支持多种邮件编码包括 ...
- unix网络编程第2版(卷1)_第6章_同步_异步
第6章 I/O复用:select和poll函数 6.1概述 在5.12节中,我们看到TCP客户同时处理两个输入:标准输入和TCP套接口.我们遇到的问题是客户阻塞于(标准输入上的)fgets调用,而服务 ...
- 【转】linux shell 逻辑运算符、逻辑表达式详解
shell的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果. 一.逻辑运算符 逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标! -f 常用!侦测 ...
- 华为交换机boot默认密码
交换机系统启动bootrom时,在2秒内按下"CTRL+B",此处需要输入密码才能进入BOOTROM菜单.默认密码如下: 1. S9300 V100R006及其之前的版本:9300 ...
- ORACLE 建表语句(表名及字段名大写)
ORACLE建表时如果表名或者字段名存在大小写同时存在的情况下,默认为区分大小写,此时在select/updata等操作时需要在表名或者字段名上添加双引号,否则会报"视图不存在"的 ...
- maven项目引入sqljdbc4 找不到包的完美 解决方案。
今天碰到了这个问题,解决了,顺便做一下记录.首先来 重现 一下这个问题,maven install报错,说 找不到这个包,但是其实 我已经安装了. 我们 再来 看看 maven本地仓库里面有 什么,这 ...
- 轮询、长轮询、长连接、flash socket 的区别
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 优点:后端程序编写比较容易. 缺点:请求中有大半是无用,浪费带宽和服务器资源. 实例:适于小型应用. 长轮询:客 ...
- ubuntu 新手入门第一天
在虚拟机上安装好linux之后,当前版本 ubuntu-16.04.3-desktop-amd64.iso 1. 设置root用户名和密码 sudo passwd 然后输入两次密码 2. 设置软件源 ...
- log4j源码解析-文件解析
承接前文log4j源码解析,前文主要介绍了log4j的文件加载方式以及Logger对象创建.本文将在此基础上具体看下log4j是如何解析文件并输出我们所常见的日志格式 附例 文件的加载方式,我们就选举 ...
- WebService的学习
这篇文章不错,直接转了 http://blog.csdn.net/terryzero/article/details/5976638#comments