封装虚拟机
1.新建6.5版本的虚拟机
mem=512(默认选择无图形化安装)
GiB=20(虚拟硬盘disk,内存大一点)
选择语言、时区、ip6(不选)、修改密码
对封装的虚拟机进行修改
kvm —> cpu/mem 对cpu和内存的虚拟化
qemu —> disk/net…. 对磁盘 网卡….的虚拟化
libvirtd —-> user 和 kernel 之间的操作接口
virt-manager —–> 虚拟机管理
virsh —–> 虚拟机管理
子镜像的建立
qemu-img create -f qcow2 -b vase0.qcow2 test
查看子镜像信息
[root@foundation66 images]# qemu-img info test1
image: test1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 268M
cluster_size: 65536
backing file: base.qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
[root@server1 ~]# vim /etc/security/limits.conf
varnish - nofile 131073
varnish - memlock 102400
varnish - nproc unlimited
[root@server1 ~]# vim /etc/sysconfig/varnish
# Maximum number of open files (for ulimit -n)
NFILES=131072
# Locked shared memory (for ulimit -l)
# Default log size is 82MB + header
MEMLOCK=82000
# Maximum number of threads (for ulimit -u)
NPROCS="unlimited"
[root@server1 ~]# /etc/init.d/varnish restart
Stopping Varnish Cache: [ OK ]
Starting Varnish 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";
}
r
[root@server1 ~]# vim /etc/varnish/default.vcl
[root@server1 ~]# curl 172.25.254.1
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>404 westos cache</title>
</head>
<body>
<h1>Error 404 westos cache</h1>
<p>westos cache</p>
<h3>Guru Meditation:</h3>
<p>XID: 1953365302</p>
<hr>
<p>Varnish cache server</p>
</body>
</html>
[root@foundation66 ~]# vim /etc/hosts
172.25.254.1 www.westos.org bbs.westos.org westos.org
backend web1 {
.host = "172.25.254.2";
.port = "80";
}
backend web2 {
.host = "172.25.254.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 = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
[root@foundation66 images]# sysctl -a 查看所有内核限制值
varnish 是一款专业的 http cache varnish 可以接受http请求,并解析http请求 根据请求来查找缓存,如果没有缓存,则将请求 转发到后端真实的服务器上, 真实服务器响应后,判断响应的报文是否可以缓存,如果可以缓存,则缓存后 再响应给用户
一套缓存系统,在CDN中扮演web缓存的角色,性能和响应时间更优越,语法简单,可以实现很多定制化,而HAProxy无缓存
反代是最基本的功能,自然具备
可以实现动静分离
可以实现负载均衡
1.安装varnish,varnish-libs
本机有 varnish 可进行缓存控制
修改配置文件
[root@server1 ~]# vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80 修改接口
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.254.2"; 真正的服务器 拥有 http 页面
本机作为代当别人访问我的时候 我从cache 里面拿 如果没有的话 就去找 172.25.254.2拿,并且自己再缓存一份 拿时的接口为 80
.port = "80"; 和上面的接口一致
}
/etc/init.d/varnish restart 修改之后重器服务
在 172.25.254.2 上有http 服务
[root@server2 ~]# cd /var/www/html
[root@server2 html]# ls
index.html
[root@server2 html]#
当别人访问 172.25.254.1 时 其实看到的是 172.25.254.2 上面的内容,当把 2主机上的 http 关掉的时候 缓存依然存在 此时访问 1主机,依然可以看到之前的东西 数据缓存在内存中
[root@foundation66 images]# curl 172.25.254.1
<h1>server2<h1>
内核 操作系统 软件
修改限制文件,保证流量大时,服务器正常运行
vim /etc/security/limits.conf
varnish - nofile 131073
varnish - memlock 102400
varnish - nproc unlimited
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.254.2"; 指向 web1 服务器
.port = "80";
}
backend web2 {
.host = "172.25.254.3"; 指向 web2 服务器
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1; 无论前面是不是 以www开头 结果都为 www.westos.org 这样可以少缓存一份 提高效率 当访问 www.westos.org时 指向web1 服务器 即向他要东西并缓存
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2; 原理同上
} else {error 404 "westos cache"; 如果访问其他 则输出 404
}
}
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);
}
varnish 默认清除时间120s
在 server2 server3 上做 http服务
在真机上做解析
vim /etc/hosts
172.25.254.1 www.westos.org bbs.westos.org westos.org
负载均衡
backend web1 {
.host = "172.25.254.2"; 指向服务器ip
.port = "80";
}
backend web2 {
.host = "172.25.254.3"; 指向服务器ip
.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);
}
在linux6.5 中 apache 服务配置虚拟主机时需要开启
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 即 打开这个
推送管理
server1 主机安装 httpd,php,unzip
vim /etc/httpd/conf/httpd.conf
Listen 8080 修改端口 避免冲突
默认发布目录/var/www/html下解压 bansys.zip
acl westos {
"127.0.0.1";
"172.25.254.0"/24; 指定 254 网段的可以推送
}
backend web1 {
.host = "172.25.254.2"; 指定服务器
.port = "80";
}
backend web2 {
.host = "172.25.254.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; 引用 lb 函数 参加轮训
} 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);
}
修改 server1 的接口为 8080 访问 172.25.254.1:8080 即可进行推送
varnishadm ban.url /index.html
清除 index.html 页面缓存
varnishadm ban.url /admin/$
清除 admin 目录缓存