linux系统中虚拟机的封装 || 部署CDN服务

封装虚拟机

一.新建6.5版本的虚拟机:

 mem=512(默认选择无图形化安装)
 GiB=20(虚拟硬盘disk,内存大一点)
 选择语言、时区、ip6(不选)、修改密码

二.进入虚拟机进行设置:

1.设置封装虚拟机:

 cd /etc/udev/rules.d (删除70-*文件)
 vi /etc/sysconfig/network-scripts/ifcfg-eth0
    (设置网络信息:注意:网络状态static)
 内容:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO="static"
IPADDR=172.25.14.1
PREFIX=24

 /etc/init.d/network restart ##重启网络
 vi /etc/yum.repo.d/rhel*    ##配置yum源
   baseurl=真机yum地址
   enabled=1
 yum install vim lftp  openssh-clients-5.3p1-94.el6.x86_64   #安装软件
 vim /etc/sysconfig/network    ##永久修改主机名
 vim /etc/hosts                ##设置本地域名解析
 /etc/init.d/iptables stop     ##关闭防火墙
 chkconfig --list iptables     ##查看火墙状态
 chkconfig iptables off        ##关闭火墙开机自启
 SELINUX=disabled              ##设置selinux

 4.创建虚拟机
  倒入子镜像,选择linux操作系统,版本选择6.5,登入查看信息


sysctl -a 所有内核文件限制值

2.物理机:

virt-sysprep -d base    #可以更快更干净的清除虚拟机

3. 关闭封装的虚拟机base,不要在打开,否则设置还原

三.建立子镜像

1、内核、系统与用户

  kernel -> kvm/qemu -> libvirtd -> virt-manger -> user
  kvm  --->>>  cpu/mem 虚拟化
  qemu  --->>>  disk/net... 虚拟化
  libvirtd  --->>>  user和kernel之间的操作接口
  virt-manger  --->>>  虚拟机管理
  virsh  --->>>  虚拟机管理
 (vmx:kernel是否可以虚拟化)

2.建立子镜像

cd  /var/lib/libvirt/images     #进入目录
qemu-img create -f qcow2 -b base.qcow2 vm1       #创建子镜像
[root@foundation14 images]# qemu-img info vm1    # 查看子镜像信息
image: vm1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 196K
cluster_size: 65536
backing file: base.qcow2
Format specific information:
    compat: 1.1

3.创建虚拟机

  倒入子镜像,选择linux操作系统,版本选择6.5,登入查看信息

部署CDN服务

一. http错误类型

1、2xx-类型 ##成功

200  OK
201  已创建
202  接收
203  非认证信息
204  无内容
205  重置内容
206  部分内容

2、3xx-类型 ##重定向

300  多路选择
301  永久转移
302  暂时转移
303  参见其它
304  未修改(Not Modified)
305  使用代理

3、4xx-类型 ##客户端错误

400  错误请求(Bad Request)
401  未认证
402  需要付费
403  禁止(Forbidden)
404  未找到(Not Found)
405  方法不允许
406  不接受
407  需要代理认证
408  请求超时
409  冲突
410  失败
411  需要长度
412  条件失败
413  请求实体太大
414  请求URI太长
415  不支持媒体类型

4、5xx-类型 ##服务器错误

500  服务器内部错误
501  未实现(Not Implemented)
502  网关失败
504  网关超时
505 HTTP版本不支持

二.配置:varnish

server1主机:

.server1:
1. 安装varnish,varnish-libs
2. 修改varnish配置文件
  vim /etc/sysconfig/varnish  端口:80
  内容:
   66 VARNISH_LISTEN_PORT=80
  vim /etc/varnish/default.vcl   修改配置文件
  内容:
  7   backend default {
  8   .host = "172.25.14.2";
  9   .port = "80";
 10 }
二、
内核、操作系统、软件:
    修改限制文件,保证流量大时。服务正常运行
1.修改配置文件 /etc/security/limits.conf
varnish         -       nofile          131073
varnish         -       memlock         102400
varnish         -       nproc           unlimited
2.修改varnish配置文件
vim /etc/varnish/default.vcl
内容:
backend web1 {   #访问web1时,指向172.25.20.2
  .host = "172.25.14.2";
  .port = "80";
}

backend web2 {   #访问web1时,指向172.25.20.3
  .host = "172.25.14.3";
  .port = "80";
}

sub vcl_recv {   ##www.westos.org和westos.org指向同一地址,节省varnish空间
         ##实质上,域名不同,varnish缓存地址不同
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

sub vcl_deliver {   #第一次访问时MISS,后续访问HIT,varnish默认清楚时间120s
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

server2主机:

1.yum install httpd -y           #安装httpd服务
2./etc/init.d/httpd start        #打开httpd服务
3.vim /var/www/html/index.html   #编辑配置文件
内容:

www.westos.org

4./etc/init.d/httpd restart #重启服务 5.[root@server2 ~]# curl localhost #本机访问httpd

www.westos.org

server3主机:

1.yum install httpd -y           #安装httpd服务
2./etc/init.d/httpd start        #打开httpd服务
3.vim /var/www/html/index.html   #编辑配置文件
内容:

bbs.westos.org

4./etc/init.d/httpd restart #重启服务 5.[root@server3 ~]# curl localhost #本机访问httpd

bbs.westos.org

物理主机:

用物理主机访问时,作域名解析
172.25.20.1  bbs.westos.org www.westos.org westos.org

访问:

[root@foundation14 ruanjianbao]# curl www.westos.org

www.westos.org

[root@foundation14 ruanjianbao]# curl westos.org

www.westos.org

[root@foundation14 ruanjianbao]# curl bbs.westos.org

bbs.westos.org

2.varnish负载均衡和健康检查

server1主机:

修改配置文件 vim /etc/varnish/default.vcl
内容:
backend web1 {
  .host = "172.25.14.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.14.3";
  .port = "80";
}
##负载均衡
director lb round-robin {
{       .backend = web1;        }
{       .backend = web2;        }
}


sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;  ##调用lb函数
return (pass);  ##为了测试,不做缓存
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}


sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

server2主机:

vim /var/www/html/index.html    #编辑配置文件
内容:

www.westos.org-server2

/etc/init.d/httpd restart #重启服务

server3主机:

配置虚拟主机

vim /etc/httpd/conf/httpd.conf
内容:
80>
    DocumentRoot /var/www/html
    ServerName www.westos.org

80>
    DocumentRoot /www
    ServerName bbs.westos.org



本机测试: ##本地做域名解析
vim /etc/hosts    
内容:
172.25.14.3  server3   www.westos.org  bbs.westos.org
本机测试:
[root@server3 ~]# curl www.westos.org

www.westos.org-server3

[root@server3 ~]# curl bbs.westos.org

bbs.westos.org

物理机测试:

[root@foundation14 ruanjianbao]# curl www.westos.org

www.westos.org-server2

[root@foundation14 ruanjianbao]# curl www.westos.org

www.westos.org-server3/h1> [root@foundation14 ruanjianbao]# curl www.westos.org

www.westos.org-server2

[root@foundation14 ruanjianbao]# curl www.westos.org

www.westos.org-server3/h1>

3.推送管理

server1主机:
1.安装httpd  php   bansys.zip   unzip
2.vim /etc/httpd/conf/httpd.conf   #更改端口为8080
3.unzip bansys.zip                 #解压
4.vim config.php                   #编辑文件
内容:
   

 //varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.14.1'),
                        'port' => '80',         
                    );              

 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.com' => $var_group1,
                         'bbs.westos.org' => $var_group1,
                     );

 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";

?>
5./etc/init.d/httpd start         #重启服务
6.vim /etc/varnish/default.vcl    #编辑配置文件  
内容:
acl westos {
"127.0.0.1"
"172.25.14.0";
}


backend web1 {
  .host = "172.25.14.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.14.3";
  .port = "80";
}

director lb round-robin {
{       .backend = web1;        }
{       .backend = web2;        }
}

sub vcl_recv {

if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}

if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

sub vcl_deliver {  ##lookup cache
if (obj.hits > 0) {   ##hash中找到
set resp.http.X-Cache = "HIT from westos cache";
}
else {   ##hash中找不到
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

在浏览器输入:172.25.14.1:8080 #进入CDN推送管理
linux系统中虚拟机的封装 || 部署CDN服务_第1张图片

你可能感兴趣的:(linux系统中虚拟机的封装 || 部署CDN服务)