虚拟机封装
一、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);
}