十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
varnish安装
公司主营业务:成都做网站、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出墨玉免费做网站回馈大家。systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭监控
yum install lrz* -y //安装上传软件
把 libedit-devel-3.0-12.20121213cvs.el7.x86_64.rpm
python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm
varnish-5.2.1.tgz软解包和依赖包拉入
yum install -y gcc gcc-c++ make //安装编译器和环境
安装依赖关系包和所需要的插件:
yum install -y \
libtool \
ncourses-devel \
pcre-devel \
libedit-devel \
libxslt \
groff \
pkgconfig \
ncurses-devel \
python-*
rpm -ivh libedit-devel-3.0-12.20121213cvs.el7.x86_64.rpm
rpm -ivh python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm
tar xf varnish-5.2.1.tgz -C /opt //解压软解包和依赖包
cd /opt/varnish-5.2.1/ //进入解压后的文件夹中定义需要的模块
sh autogen.sh //检查系统环境
./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.101"
.port = "80"
}
varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80 //指定监听的ip和端口启动varnish
netstat -anpt | grep varnishd
在另一台linux虚拟机上搭建一个web服务器(80.101):
systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭监控
yum install -y httpd //安装http
vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面的#删除
vi /var/www/html/ index.html
server 1
systemctl start httpd
测试,在windows浏览器中输入http://192.168.80.100(varnish服务器的ip地址)
Varnishlog #查看日志,实时滚动方式
————————————以上单台web后端服务器————————————————
多台web后端服务器:
vi /usr/local/varnish/default.vcl
找到以下内容并修改:
vcl 4.0;
import directors; //新增一行,导入一个directors
-----以下增加业务服务器节点-----
backend web1 { #把default修改为web1,就是后面的web服务器,有几个web节点就复制几个backend域
.host = "192.168.80.101"; #后端web服务器的地址
.port = "80"; #web服务器端口
}
backend web2 {
.host = "192.168.80.102";
.port = "80";
}
-----接着以上代码接着定义调度算法及指定流量转发----
sub vcl_init { #在init子函数中定义
new bar = directors.round_robin(); //random(随机) round_robin dns
#定义服务器组,让新的 bar 等于之前定义的变量directors,后面接轮询(rr)算法
bar.add_backend(web1); #注意这里有几个backend就添加几个
bar.add_backend(web2);
}
sub vcl_recv {
set req.backend_hint = bar.backend(); //流量转发给所有结点 注意括号
}
varnishd -C -f /usr/local/varnish/default.vcl > /dev/null //检查配置文件是否有错误
pkill -9 varnish
varnishd -f /usr/local/varnish/default.vcl
netstat -anpt | grep varnishd
在另一台linux虚拟机上搭建一个web服务器(80.102):
systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭监控
yum install -y httpd //安装http
vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面的#删除
vi /var/www/html/index.html
server 2
systemctl start httpd
在浏览器中输入192.168.80.100
由于varnish缓存的原因,当我们访问varnish的时候,并没有像我们预期的那样根据rr算法各自访问后面两台web服务器的不同页面,这时我们让一台web服务器网络中断,这时varnish就会访问到另一台了。
后端主机健康检测机制:
varnish可以对后端主机进行健康检测,动态进行移除或恢复后端主机调度列表
probe healthche { 定义健康检测方法,自定义名称
.url="/index.html"; #检测时请求的URL,默认为"/"
.timeout = 2s; #超时时间
.window = 6 ; #基于最近的多少次检测来判断其健康状态
.threshold = 5; #最近.window中定义的这么次检查中至有.threshhold定义的次数是成功的;
.interval = 2s; #检测频度;
}在定义后端服务器时引用检测方法
backend web1 {
.host = "192.168.80.100";
.port = "80";
.probe = healthche; #引用检测方式
}
在varniadm 命令接口中查看检测状况,健康状态检测backend.list
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。