Linux 运维:虚拟机封装与CDN服务

虚拟机封装

一、1.新建6.5版本的虚拟机

  • mem = 512 (默认选择无图形化安装)
  • GiB=20(虚拟硬盘disk,内存大一点)
  • lanuage = English 选择语言
  • Time Zone = Asia/Shanghai 时区
  • ipv6 (不选)
  • 设置超户密码

二、进入虚拟机进行设置

1、虚拟机进行封装
cd /etc/udev/rules.d (删除70-*文件)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
    (注意:网络状态static)
/etc/init.d/network restart ##重启网络
vi /etc/yum.repo.d/rhel*   ##配置yum源
  ##注意:baseurl=真机yum地址
  ##      enabled=1
yum install vim lftp -y
vim /etc/sysconfig/network  ##永久修改主机名
vim /etc/hosts          ##设置本地域名解析
/etc/init.d/iptables stop   ##关闭防火墙
chkconfig --list iptables   ##查看火墙状态
chkconfig iptables off      ##关闭火墙开机自启
chkconfig ip6tables off     ##关闭ipv6
SELINUX=disabled        ##设置selinux
2、物理主机操作
  • virt-sysprep -d base ##清理base虚拟机

如果virt-sysprep命令不存在,则:

  • yum provides */virt-sysprep
  • yum install libguestfs-tools-c-1.28.1-1.55.el7.x86_64 -y
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、建立子镜像 /var/lib/libvirt/images

qemu-img create -f qcow2 -b base.qcow2 vm1

查看子镜像信息

[root@foundation12 images]# qemu-img info vm1
image: vm1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 40M
cluster_size: 65536
backing file: base.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
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版本不支持

二、cdn实现varnish缓存

1、server1主机
  • 安装varnish,varnish-libs
  • 修改varnish配置文件 /etc/varnish/default.vcl
  • /etc/sysconfig/varnish 端口:80
backend web1 {   ##访问web1时,指向172.25.12.2
  .host = "172.25.12.2";
  .port = "80";
}

backend web2 {   ##访问web1时,指向172.25.12.3
  .host = "172.25.12.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);
}
2.修改限制文件
  • 目的:内核、操作系统、软件:修改限制文件,保证流量大时,服务正常运行
  • 修改配置文件 /etc/security/limits.conf
varnish         -       nofile          131073
varnish         -       memlock         102400
varnish         -       nproc           unlimited
3、server2主机
  • 安装httpd服务
  • 默认发布文件/var/www/html/index.html
  • www.westos.org

4、server3主机
  • 安装httpd服务
  • /var/www/html/index.html
  • bbs.westos.org

5、物理主机
  • 物理主机访问时作本地域名解析
  • curl bbs.westos.org / www.westos.org / westos.org

三、Varnish实现负载均衡和健康检查

1、server1主机
  • 修改配置文件 /etc/varnish/default.vcl
  • /etc/init.d/varnish reload
backend web1 {
  .host = "172.25.12.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.12.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);  ##为了测试,不做缓存,直接访问web
} 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);
}
2、server2主机
  • Apache默认发布文件
  • www.westos.org-server2

3、server3主机
  • 配置虚拟主机 /etc/httpd/conf/httpd.conf
NameVirtualHost *:80  ##打开虚拟主机功能

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName bbs.westos.org
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /www/html
    ServerName www.westos.org
</VirtualHost>
  • 本机测试: ##本地做域名解析
[root@server3 ~]# curl www.westos.org
<h1>www.westos.org-server3</h1>
[root@server3 ~]# curl bbs.westos.org
<h1>bbs.westos.org</h1>
4、物理主机实验,实现负载均衡
[kiosk@foundation12 rhel6.5]$ curl www.westos.org
<h1>www.westos.org-server3</h1>
[kiosk@foundation12 rhel6.5]$ www.westos.org
<h1>www.westos.org-server2</h1> 
[kiosk@foundation12 rhel6.5]$ www.westos.org
<h1>www.westos.org-server3</h1>
[kiosk@foundation12 rhel6.5]$ www.westos.org
<h1>www.westos.org-server2</h1>

四、推送管理

  • 目的:当web有更新时,varish的cache实现同步更新
  • 安装httpd,php,unzip
  • 修改httpd端口8080
  • 默认发布目录/var/www/html下解压 bansys.zip
  • 修改varnish配置文件 /etc/varnish/default.vcl
acl westos {  ##westos域
"127.0.0.1";  ##内部回环接口
"172.25.12.0"/24;
}

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

backend web2 {
  .host = "172.25.12.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);
}

猜你喜欢

转载自blog.csdn.net/for_myself0/article/details/80740752