一.封裝一個6.5版本的redhat linux安裝過程和7以上的版本有所不同,
因爲選擇的是網絡安裝,因爲eth0問題導致無法安裝,原因的沒dhcp源,所以本地安裝
安裝號之後配置yum源
網絡配置:
vi /etc/sysconfig/network-scripts/ifcg-eth0
添加本地解析,後邊以此爲母盤新建虛擬機使用
vi /etc/hosts
關閉防火牆
網絡通了以後安裝vim工具
chkconfig iptables off
關閉selinx
vim /etc/sysconfig/selinux
添加sdn解析
vim /etc/sysconfig/network
刪除這些文件
rm -fr /etc/ssh/ssh_host_*
最後poweroff關機不是reboot,reboot設置會恢復,刪除該虛擬機,但不刪除鏡像文件,
真機執行命令,清除虛擬機換存
[root@foundation51 Desktop]# cd /var/lib/libvirt/images/
[root@foundation51 images]# virt-sysprep -d rhel6.5
至此虛擬機封裝完成,刪除虛擬機,保留鏡像
二.利用母盤新建虛擬機鏡像server-ip12 ,13,14
安裝
其他同此步驟
配置網絡
每臺虛擬機操作一樣,這裏以server-ip14爲例
添加dns
vim /etc/sysconfig/network-scripts/ifcfg-eth0
最後重啓網絡
/etc/init.d/network restart
完成後ssh連接,開始下一步實驗
cdn
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
把準備好的安裝包考到server-ip12的/opt下,yum intsall varnish-*安裝
cat /etc/sysconfig/varnish
如圖,第八行顯示的是cdn換存最大文件數13107
sysctl -a | grep file-max ##顯示內核最大支持的換存文件數371487
/etc/pam.d/ 這裏邊放的是認證文件
/lib64/security/ ##這裏邊是一些認證模塊
/etc/security/ ##這裏邊是一些認證配置文件
vim /etc/security/limits.conf
--->>最後一行
varnish - nofile 65535 ##使用者varnish(/etc/passwd有個非交互式用戶varnish - 軟上限和硬上限兩種類型 最大文件數 )
ulimit這個命令可以查看
vim /etc/sysconfig/varnish ##因爲測試http服務所以設置80端口
[root@server-ip12 varnish]# vim /etc/varnish/default.vcl ##設置端口號80和後端服務器的ip
/etc/init.d/varnish start ##開啓varnish服務
在server-ip12和server-ip13上裝http服務並開啓
在server-ip13上寫測試頁
在訪問server-ip12的時候會顯示server-13的內容
三:查看換緩存命中情況
真機瀏覽器所在的主機/etc/hosts添加本地解析
172.25.254.12 www.westos.org bbs.westos.org
vim /etc/varnish/default.vcl
真機測試,第一次換存沒找到於是經varnish去13服務器尋找,找到後換存起來,再次訪問www.westos.org直接返回客戶端
四:負載均衡:定義多個不同域名站點的後端服務器
定義多個不同域名站點的後端服務器
backend web1 {
.host = “172.25.254.13”;
.port = “80”;
}
backend web2 {
.host = “172.25.254.14”;
.port = “80”;
}
當訪問 www.westos.org 域名時從 web1 上取數據,訪問 bbs.westos.org 域名時到 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”;
}
}
實驗效果:
五:輪詢
backend web1 {
.host = “172.25.254.13”;
.port = “80”;
}
backend web2 {
.host = “172.25.254.14”;
.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;
return (pass); #爲了測試方便,不進行緩存
}
elsif (req.http.host ~ “^bbs.westos.org”)
{
set req.backend = web2;}
else
{error 404 “westos cache”;}
}
實驗效果
六:通過 varnishadm 手動清除緩存
varnishadm ban.url .*$
#清除所有
varnishadm ban.url /index.html
#清除 index.html 頁面緩存
varnishadm ban.url /admin/$
#清除 admin 目錄緩存
七:varnish cdn 推送平臺
安裝php插件
將/opt/varnish/下的 bansys.zip解壓到apache默認發佈目錄中unzip bansys.zip -d /var/www/html/ 把解壓後目錄中的所有文件移動到html下
bansys 有兩種工作模式,分別是:telnet 和 http 模式。
telnet 模式需要關閉 varnish 服務管理端口的驗證,註釋掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”這行,重啓 varnish 服務即可。
如果是 http 模式需要對 varnish 做以下設置:
修改剛纔解壓的文件
修改server-ip12的http端口爲8080重啓後測試
八虛擬主機:改回上一個實驗的8080端口爲80
瀏覽器主機已經解析了www.westos.org和bbs.westos.org
vim /etc/varnish/default.vcl
實驗測試當訪問(www).westos.org的時候,回去訪問web1也就是172.25.254.13
處理過程大致分爲如下幾個步驟:
(1)Receive 狀態,也就是請求處理的入口狀態,根據 VCL 規則判斷該請求應該是 Pass 或Pipe,或者進入 Lookup(本地查詢)。
(2)Lookup 狀態,進入此狀態後,會在 hash 表中查找數據,若找到,則進入 Hit 狀態,否則進入 miss 狀態。
(3)Pass 狀態,在此狀態下,會進入後端請求,即進入 fetch 狀態。
(4)Fetch 狀態,在 Fetch 狀態下,對請求進行後端的獲取,發送請求,獲得數據,並進行本地的存儲。
(5)Deliver 狀態, 將獲取到的數據發送給客戶端,然後完成本次請求。
cdn原理
基於上述實驗說明:12充當了cdn的作用,當客戶端51訪問172.25.254.12的時候,cdn12主機接收到請求,從cdn中varnish換存中查找,如果有直接返回給客戶端,12如果沒有cdn去從隔壁cdn1站點獲取,有返回客戶端,如果沒有直接去服務源站獲取,換存到cdn本地,在返回給客戶端: