1. 程式人生 > >varnish及封裝虛擬機器

varnish及封裝虛擬機器

封裝虛擬機器

1、配置母盤rhel6.5(選擇Network insatll)

1)物理機將6.5映象掛載到/var/www/html/rhel6.5下

2)安裝dhcp,配置好dhcp

4)將母盤配置好network;yum源;本地解析;刪除/etc/udev/rules.d/70..檔案;安裝你需要的軟體vim、openssh-clients、lftp等;關閉selinux和iptables;完成後選擇poweroff關機

5)清理:virt-sysprep -d rhel6.5

2、進行虛擬機器的封裝:

1)cd /var/lib/libvirt/images/ 執行 qemu-img create -f qcow2 -b rhel6.5.qcow2 vm1 封裝(依次封裝你想要的虛擬機器)

2)檢視封裝的虛擬機器資訊:qemu-img info vm1

3)選擇import existing disk image圖形化管理安裝

4)進入後改主機名和ip

(libvirtd 是虛擬機器管理軟體)

varnish
1.啟動varnish
server1:
yum install -y varnish3.0.5 和 varnish-libs.3.0.5 的rpm包

配置一個後端伺服器
vim /etc/varnish/default.vcl

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

配置 varnish 服務埠
vim /etc/sysconfig/varnish

VARNISH_LISTEN_PORT=80

server2:
開啟http並 echo www.westos.org > index.html

測試:
物理機curl 172.25.40.1 檢視是否為server2 apache提供的內容www.westos.org

2.檢視快取命中情況
server1
vim /etc/security/limits.conf

varnishi - nofile  65535

vim /etc/sysconfig/varnish

NFILES=65535

(其中,65535為檔案的最大讀取數,可使用命令sysctl -a | grep file 檢視)

vim /etc/varnish/default.vcl

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);

}

/etc/init.d/varnish reload
測試:
物理機curl -I 172.25.40.1,顯示HIT 和MISS 的情況

(其中,清除快取命令:varnishadm ban.url .*$)

3.定義多個不同域名站點的後端伺服器

server1安裝apche服務,即做varnish也作apache服務(或者使用server3做後端)

修改apache埠 vim /etc/httpd/conf/httpd.conf (避免80埠varnish衝突)

Listen 8080

編輯varnish配置檔案,加入個不同域名站點的後端伺服器:

當訪問 www.westos.org 域名時從 web1 上取資料,訪問 bbs.westos.org 域名時到 web2 取資料,
訪問其他頁面報錯。

vim /etc/varnish/default.vcl

整體程式碼如下:

backend web1 {
  .host = "172.25.40.1";
  .port = "8080";
}

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

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";
}
}

(其中,物理機做解析)
4.把多個後端聚合為一個組,並檢測後端健康狀況

vim /etc/varnish/default.vcl

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;
return(pass);
}elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
}else {error 404 "westos cache";
}
}

return(pass)表示不進行快取

5.varnish cdn 推送平臺

1)server1安裝php服務

2)更改php配置檔案;將其放到/var/www/html下

VARCLUSTER=array(www.westos.org=>var_group1,
);表示對主機列表進行繫結

3)真機網頁查:172.25.77.8080:/varnish檢視

6.設定acl訪問控制

1)server1 /etc/varnish/default.vcl 設定

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

2)重新開啟ip不再acl列表的機器進行訪問檢視