Varnsih调用多台后端主机
author:JevonWei
版权声明:原创作品
Varnsih调用多个后端主机
环境
Varnish      192.168.198.139
图片服务端    192.168.198.120
程序服务端    192.168.198.128
程序服务端(httpd+php)
[root@danran /]# yum -y install httpd php
[root@danran /]# vim /var/www/html/index.html
    <h1> Test Page @BE Server
[root@danran /]# vim //var/www/html/index.php
<?php
    phpinfo();
?>
[root@danran /]# systemctl start httpd
[root@danran /]# setenforce 0
[root@danran /]# iptables -F
[root@danran /]# ss -ntl
图片服务端(nginx,epel源)
[root@centos6 ~]# yum -y install nginx \\epel源
[root@centos6 ~]# vim /etc/nginx/conf.d/default.conf  \\修改默认的网页根文件
    server {
        root /data/web/images;
    }
[root@centos6 ~]# mkdir /data/web/images -pv
[root@centos6 ~]# find /usr/share/ -iname "*.jpg" -exec cp {} /data/web/images/ \; \\复制一些图片到/data/web/images目录下做测试用
[root@centos6 ~]# service nginx start
[root@centos6 ~]# iptables -F
vernish(epel源)
[root@danran ~]# yum -y install varnish
[root@danran varnish]# vim /etc/varnish/varnish.params
    VARNISH_LISTEN_PORT=80 \\监听端口为80,默认为6081
    VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 \\监听管理接口的IP,默认为本机
    VARNISH_ADMIN_LISTEN_PORT=6082 \\管理接口的端口,默认为6082
    VARNISH_SECRET_FILE=/etc/varnish/secret \\认证密码文件
    #DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300" \\定义运行时参数
[root@danran varnish]# vim /etc/varnish/default.vcl
    backend appsrv1 {  \\定义appsrv1用来存放网页文件
        .host = "192.168.198.128";
        .port = "80";
    }
    backend imgsrv1 { \\定义imgsrv1用来存放图片等静态文件
        .host = "192.168.198.120";
        .port = "80";
    }
    sub vcl_recv {
        if (req.url ~ "(?i)\.(jpg|jpeg|png|gif|svg)$") {
            set req.backend_hint = imgsrv1;
        } else {
            set req.backend_hint = appsrv1;
        }
    }
[root@danran varnish]# systemctl start varnish
client
[root@danran ~]# curl 192.168.198.139/index.html
<h1> Test Page @BE Server  \\数据来自程序服务端
[root@danran ~]# curl 192.168.198.139/cloud.jpg  数据来自图片服务端
Varnish调用后端服务器组
Director配置后端服务组
将图片保存在后端的图片服务器组中,多台图片服务器组成图片服务器组
受条件限制,在此创建一个虚拟主机做物理主机使用,虚拟主机使用8080端口,从而使虚拟主机的8080端口和原有的80端口组成我们需要的后端图片服务器组
图片服务端创建虚拟主机
[root@centos6 ~]# vim /etc/nginx/conf.d/vhost2.conf
    server {
        listen 8080;
        server_name img1.danran.com;
        root "/data/web/image2";
    }
[root@centos6 ~]# vim /data/web/image2/test.txt
Image Server 2
[root@centos6 ~]# nginx -t
[root@centos6 ~]# nginx -s reload
80和8080两个端口作为两个物理主机使用,从而构建服务器组
[root@centos6 ~]# ss -ntl
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
LISTEN      0      128                            :::52622                         :::*
LISTEN      0      128                            :::111                           :::*
LISTEN      0      128                             *:111                            *:*
LISTEN      0      128                             *:8080                           *:*
LISTEN      0      128                            :::80                            :::*
LISTEN      0      128                             *:80                             *:*
Vernish
[root@danran ~]# vim /etc/varnish/default.vcl
    导入directors模块
    import directors; 
    定义一个app程序后端服务器
    backend appsrv1 {
        .host = "192.168.198.128";
        .port = "80";
    }
    定义两个图片服务端
    backend imgsrv1 {
        .host = "192.168.198.120";
        .port = "80";
    }
    backend imgsrv2 {
        .host = "192.168.198.120";
        .port = "8080";
    }
    定义一个图片服务器组imgsrvs,并将imgsrv1和imgsrv2两个后端图片服务器添加进imgsrvs组中
    sub vcl_init {
        new imgsrvs =  directors.round_robin();  \\指定调度算法为轮询
        imgsrvs.add_backend(imgsrv1);
        imgsrvs.add_backend(imgsrv2);
    }
    sub vcl_recv {
        if (req.url ~ "(?i)\.(jpg|jpeg|png|gif|svg|txt)$") {
            set req.backend_hint = imgsrvs.backend();
        } else {
            set req.backend_hint = appsrv1;
        }
    }
[root@danran ~]# varnish_reload_vcl    \\重新加载/etc/varnish/default.vcl参数文件
client(imgsrv1和imgsrv2轮询调度)
[root@danran ~]# curl 192.168.198.139/test.txt
Image Server 1
[root@danran ~]# curl -I 192.168.198.139/test.txt
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Tue, 23 May 2017 04:16:31 GMT
Content-Type: text/plain
Content-Length: 15
Last-Modified: Tue, 23 May 2017 04:11:20 GMT
ETag: "5923b668-f"
X-Varnish: 32831 67
Age: 37
Via: 1.1 varnish-v4
X-Cache: Hit via 192.168.198.139
Connection: keep-alive
Vernish清除缓存
[root@danran ~]# curl -X PURGE 192.168.198.139/test.txt
<!DOCTYPE html>
<html>
    <head>
        <title>200 Purged</title>
    </head>
    <body>
        <h1>Error 200 Purged</h1>
        <p>Purged</p>
        <h3>Guru Meditation:</h3>
        <p>XID: 71</p>
        <hr>
        <p>Varnish cache server</p>
    </body>
</html>
[root@danran ~]# curl 192.168.198.139/test.txt
Image Server 2
基于cookie的session sticky
Vernish
[root@danran ~]# vim /etc/varnish/default.vcl
    导入directors模块
    import directors; 
    定义一个app程序后端服务器
    backend appsrv1 {
        .host = "192.168.198.128";
        .port = "80";
    }
    定义两个图片服务端
    backend imgsrv1 {
        .host = "192.168.198.120";
        .port = "80";
    }
    backend imgsrv2 {
        .host = "192.168.198.120";
        .port = "8080";
    }
    sub vcl_init {
        new h = directors.hash();
        h.add_backend(imgsrv1, 1);   // backend 'imgsrv1' with weight '1'
        h.add_backend(imgsrv2, 1);   // backend 'imgsrv2' with weight '1'
    }
    sub vcl_recv {
    // pick a backend based on the cookie header of the client
        set req.backend_hint = h.backend(req.http.cookie);
    }Varnsih调用多台后端主机的更多相关文章
- Varnish后端主机的健康状态检查
		author:JevonWei 版权声明:原创作品 配置后端主机的Health Check 环境 Varnish 192.168.198.139 图片服务端 192.168.198.120 程序服务端 ... 
- haprox动态下线后端主机
		haproxy可以很好的支持主机下线,不需要编辑配置文件,也不需要重新reload服务,通过本身的socket发送指令即可: 当你的应用程序是高可用状态,一般部署的是>2的,这个时候就可以通过h ... 
- 两台Linux主机之间文件的复制
		使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file r ... 
- docker 现实---联网多台物理主机,容器桥到物理网络(三)
		docker 默认桥接卡docker0 只有当这个单元中的所有容器桥接卡.例如,在主机虚拟网络适配器容器看通常称为veth*** 和docker只要把这些卡桥接在一起,例如下面的附图: waterm ... 
- 01.阿里云SDK调用,获取ESC主机详细信息
		一:通过python SDK获取云主机的详细信息 1.创建Accessky码(不做展示) 2.通过pip安装SDK模块,这个阿里云帮助里面有,也不做详细展示. 3.详细使用方法看代码 我下面展示的返回 ... 
- ssh 设置私钥实现两台linux主机无密码访问
		在服务器主机上(称为A主机) 创建公钥与私钥: ssh-keygen -t rsa 一路回车,如果想设置密码短语,在提示 passphrase 的时候设置密码短语 查看生成的公钥及私钥: ls ~/. ... 
- 多台linux主机之间建立免密通信
		多台linux主机之间设置免密通信 例:A 向 B设置免密通信 第一步 A生成密钥对 ssh-keygen -t rsa -t 指定秘钥的类型 rsa 秘钥类型 密钥目录:/root/.ssh/(如果 ... 
- Docker多台物理主机之间的容器互联
		Docker 默认的桥接网卡是 docker0.它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下: [root ... 
- 多台linux主机间免密码登录
		即在一台主机上登录另一台主机. 有2台linux主机A.B.A输入命令ssh B的ip地址以连接B,发现需要输入B的登录密码,怎样不需要输入密码呢? 步骤1: 在主机A中,输入ssh-keygen - ... 
随机推荐
- ubuntu的/etc/modules内核模块文件
			/etc/modules: 内核模块文件,里面列出的模块会在系统启动时自动加载. /etc/modprobe.d: 存放禁止加载或者加载内核模块脚本的目录. 以下是我增加netfilter模块是的流程 ... 
- 坏块管理(Bad Block Management,BBM)
			看了很多坏块管理的文章,加上自己的理解,把整个坏块管理做了个总结. 坏块分类 1.出厂坏块 又叫初始坏块,厂商会给点最小有效块值(NVB,mininum number of valid blocks) ... 
- Eclipse常用快捷键大全1
			Eclipse常用快捷键大全 1.ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字 ... 
- JavaWeb学习归档(一) - HTTP协议总结
			版权声明:本文为博主原创文章,未经博主允许不得转载. 本文转载自我的个人博客:http://www.codingme.net/post/java-web-01 HTTP协议简介 超文本传输协议(HTT ... 
- 在Mac OS 下 build Tesseract4.0 源码并在命令行中使用
			作者电脑:Mac Mini 系统信息:OS X EI Capitan 10.11.6 Tesseract4.0github地址:https://github.com/tesseract-ocr/tes ... 
- git分支管理之创建与合并分支
			在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ... 
- 初学Python之 字符串 索引 分片
			字符串是字符的有序集合,可以通过其位置来获得具体的元素. 在python中,字符串中的字符是通过索引来提取的,索引从0开始. python可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2, ... 
- 野生程序员对.NETFramework 4.0 ThreadPool的理解
			ThreadPool 类 提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器. 命名空间: System.Threading程序集: mscor ... 
- 分享一个markdownpad2的授权key
			邮箱地址:Soar360@live.com授权秘钥:GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bn ... 
- 【机器学习笔记之三】CART 分类与回归树
			本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 CART - Classification and Regression Trees 分类与回归树,是二叉树,可以用于分类,也可以用于 ... 
