yum install -y \\\\
libtool \\\\
ncourses-devel \\\\
pcre-devel \\\\
libedit-devel \\\\
libxslt \\\\
groff \\\\
pkgconfig \\\\
ncurses-devel \\\\
python-*
rpm -ivh /root/libedit-devel-3.0-12.20121213cvs.el7.x86_64.rpm
rpm -ivh /root/python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm
tar xzvf varnish-5.2.1.tgz -C /opt
cd /opt/varnish-5.2.1
sh autogen.sh //檢查環境
echo $? //是0就沒問題
./configure \\\\
–prefix=/usr/local/varnish \\\\
–enable-debugging-symbols \\\\
–enable-developer-warnings
make && make install
cd /usr/local/varnish/
ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
ln -s /usr/local/varnish/bin/* /usr/local/bin/
cp /usr/local/varnish/share/doc/varnish/example.vcl /usr/local/varnish/default.vcl
vi /usr/local/varnish/default.vcl //修改主機和端口號為第一臺業務服務器
backend default {
.host = "192.168.80.102"; //第一臺web服務器的ip地址
.port = "80";
}
varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80 //啟動varnishd
netstat -anpt | grep varnishd //監聽在80端口上
service firewalld stop
setenforce 0
WEB服務器1配置:
yum install -y httpd
vi /var/www/html/index.html
<h2> server AA!!! </h2>
service httpd start
service firewalld stop
setenforce 0
驗證測試:
真機:http://192.168.80.101/ //訪問varnishd服務器的地址,能夠訪問到第一臺服務器內容
varnishlog //實時滾動日志,當頁面刷新的時候日志會記錄
tail –f /var/log/httpd/access_log //在業務服務器端查看日志信息,可以看到訪問的是代理端
地址
———————————配置多服務器負載—————————
Varnish服務器配置:
vi /usr/local/varnish/default.vcl
vcl 4.0;
import directors; //新增一行,導入一個directors
—–以下增加業務服務器節點—–
backend web1 {
.host = "192.168.80.102";
.port = "80";
}
backend web2 {
.host = "192.168.80.103";
.port = "80";
}
—–接著以上代碼接著定義調度算法及指定流量轉發—-
sub vcl_init {
new bar = directors.round_robin(); //random(隨機) round_robin dns
bar.add_backend(web1);
bar.add_backend(web2);
}
sub vcl_recv {
set req.backend_hint = bar.backend(); //流量轉發給所有結點 注意括號
}
varnishd -C -f /usr/local/varnish/default.vcl > /dev/null //檢查配置文件是否有錯誤
pkill varnishd
varnishd -f /usr/local/varnish/default.vcl
netstat -anpt | grep varnishd
WEB服務器2配置:
yum install -y httpd
vi /var/www/html/index.html
<h2> server BB!!! </h2>
service httpd start
service firewalld stop
setenforce 0
驗證:
http://192.168.80.101/ //刷新測試就可以了看到輪詢的效果了
停止一臺服務器WEB1,調度器并不感知。
以下配置健康檢查—-在每臺業務服務器配置下接著新增
web1配置
backend web1 {
.host = "192.168.80.102";
.port = "80"; //下面新增
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1s;
.window = 5;
.threshold = 3; //3次檢查沒有問題才認為健康
}
}
—web2配置相同—-
backend web2 {
.host = "192.168.80.103";
.port = "80";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1s;
.window = 5;
.threshold = 3;
}
}
varnishd -C -f /usr/local/varnish/default.vcl > /dev/null
pkill varnishd
varnishd -f /usr/local/varnish/default.vcl
netstat -anpt | grep varnishd
瀏覽器測試,并關閉一臺業務服務器2再測試。注意客戶端瀏覽器緩存問題。不會再跳轉關閉服務器內容了。
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn