本文共 3004 字,大约阅读时间需要 10 分钟。
Varnish是一款高性能的、开源的反向代理服务器和缓存服务器。计算机系统的内存除了主存外,还有CPU的L1、L2,甚至L3级别的缓存。Varnish的设计架构就是利用操作系统的缓存机制处理访问
实验拓扑: Varnish服务器: 192.168.80.101 WEB服务器1: 192.168.80.102 WEB服务器2: 192.168.80.103
Varnish服务器配置:
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.rpmtar xzvf varnish-5.2.1.tgz -C /opt
cd /opt/varnish-5.2.1sh autogen.sh //检查环境
echo $? //是0就没问题./configure \
--prefix=/usr/local/varnish \--enable-debugging-symbols \--enable-developer-warningsmake && 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 0WEB服务器1配置:
yum install -y httpdvi /var/www/html/index.html<h1> server AA!!! </h1>service httpd start
service firewalld stop
setenforce 0验证测试:
真机: //访问varnishd服务器的地址,能够访问到第一台服务器内容varnishlog //实时滚动日志,当页面刷新的时候日志会记录
---------------------------------配置多服务器负载---------------------------Varnish服务器配置:
vi /usr/local/varnish/default.vclvcl 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 dnsbar.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.vclnetstat -anpt | grep varnishdWEB服务器2配置:
yum install -y httpdvi /var/www/html/index.html<h1> server BB!!! </h1>service httpd start
service firewalld stop
setenforce 0验证:
//刷新测试就可以了看到轮询的效果了停止一台服务器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 varnishdvarnishd -f /usr/local/varnish/default.vcl netstat -anpt | grep varnishd浏览器测试,并关闭一台业务服务器2再测试。注意客户端浏览器缓存问题。不会再跳转关闭服务器内容了。
转载于:https://blog.51cto.com/13572519/2090524