这里使用haproxy构建一个动静分离的集群,并且静态数据请求使用varnish做缓存。本打算做图1.1的集群,但是手头机器不够,只好委曲求全把动态服务器和静态服务器和到一起(主要是懒),数据库和共享文件和到一起如图1.2

图1.1

图1.2

file服务器的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#安装mysqld和nfs服务器
yum install mysql-server nfs-utils -y
#提供网页文件
mkdir /wordpress
wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
unzip Discuz_X3.2_SC_UTF8.zip -d /wordpress
chown -R apache:apache /wordpress
cat /etc/exports <<eof
/wordpress 172.16.0.0/16(rw,no_root_squash)
eof
service nfs start
#提供数据库
service mysqld start
mysql <<eof
grant all privileges on wpdb.* to wpuser@'172.16.29.%'identified by "wppass";
eof

Rs服务器的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
yum install nfs-utils httpd php php-mysql -y
cat >> /etc/fstab <<eof
172.16.29.1:/wordpress /wordpress nfs defaults 0 0
eof
mkdir /wordpress
mount -a
#以下是提供httpd配置文件
vim /etc/httpd/conf/httpd.conf
#把DocumentRoot "/var/www/html"改成如下
DocumentRoot "/wordpress/upload"
#把<Directory "/var/www/html">改为如下内容
<Directory "/wordpress">
#把DirectoryIndex index.html改成如下内容
DirectoryIndex index.php index.html
#启动服务
systemctl start httpd.service

varnish服务器的配置

1
2
3
4
yum install varnish -y
vim /etc/varnish/varnish.params
#把VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G"改为如下内容,意思是使用512m的内存进行缓存数据
VARNISH_STORAGE="malloc,512m"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
cat /etc/varnish/default.vcl <<eof
#提供如下配置文件
vcl 4.0;
import directors;
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}
#定义后端服务器状态检测机制
probe check {
    .url = "/robots.txt";
    .window = 5;
    .threshold = 3;
    .interval = 2s;
    .timeout = 1s;
}
#定义两个服务器
backend server1 {
    .host = "172.16.29.10";
    .port = "80";
    .probe = check;
}
backend server2 {
    .host = "172.16.29.20";
    .port = "80";
    .probe = check;
}
#定义两个服务器的调度算法
sub vcl_init {
    new static = directors.round_robin();
    static.add_backend(server1);
    static.add_backend(server2);
}
#定义命中
sub vcl_recv {
    set req.backend_hint = static.backend();
}
sub vcl_backend_response {
}
sub vcl_deliver {
}
eof

haproxy服务器通用配置配置

两个haproxy服务器的keepalived的配置文件有细微的差别,注意注释信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
yum install haproxy keepalived -y
cat /etc/haproxy/haproxy.cfg <<eof
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
frontend  main *:80
#静态数据访问重定向到动态服务器,其他的动态服务器
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
    use_backend static          if url_static
    default_backend             app
#状态页
listen admin_stats
    bind *:8080
    stats enable
    stats uri /haproxy11
    acl hastats src 172.16.0.0/16
    block unless hastats
#静态服务器
backend static
    balance     roundrobin
    server      static 172.16.29.40:6081 check
#动态服务器
backend app
    balance     source
    server  rs1 172.16.29.10:80 check
    server  rs2 172.16.29.20:80 check
eof
systemctl restart haproxy.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
cat /etc/keepalived/keepalived.conf <<eof
#keepalived的配置文件
! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group 224.0.29.29
#这个脚本是为了维护代理服务器Haproxy时使用的
   vrrp_script chk_down {
       script "[[ -f /etc/haproxy/down ]] && exit 1 || exit 0"
       interval 1
       weight  -20
   }
#这个脚本是为了检测代理服务器Haproxy的状态
   vrrp_script chk_haproxy {
       script "killall -0 haproxy && exit 0 || exit 1"
       interval 1
       weight -20
   }
}
vrrp_instance VI_1 {
#另一台主机的下一行改为MASTER
    state BACKUP
    interface eno16777736
    virtual_router_id 51
#另一台主机的下一行改为100
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass oldking
    }
    virtual_ipaddress {
        172.16.29.11/16 dev eno16777736 label eno16777736:0
    }
    track_script {
        chk_down
        chk_haproxy
    }
}
eof

我这里haproxy介绍的不够详细,参考这个博客http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html,或者官方文档

本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1897147,如需转载请自行联系原作者

HAProxy反向代理搭建discuz论坛相关推荐

  1. 手把手教你,嘴对嘴传达------源码编译LNMP部署及应用 , 手动搭建discuz论坛

    文章目录 前言 一.LNMP架构的部署(理论) 1.LNMP架构概述 2.MySQL安装配置 3.PHP解析环境的安装 4.配置Ngnx支持PHP环境 5.常见的PHP开源产品介绍 二.LNMP应用部 ...

  2. 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

    案例: Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入 访问用户:电信宽带用户.移动宽带用户 出现问题:电信用户打开www.abc.com正常,移动用户打 ...

  3. 转载:linux环境下搭建discuz论坛

    今天写一个Linux下搭建Discuz论坛的全过程教程. 本例使用的Linux系统为:RHEL5.3. 1.[root@linux ~]# mkdir /mnt/cdrom 2.[root@linux ...

  4. LAMP搭建Discuz论坛

    搭建Discuz论坛 1.  准备LAMP环境 LAMP是Linux,Apache,MySql和PHP的缩写,是Discuz论坛系统依赖的基础运行环境 1.安装Apache2 Ubuntu需要安装Ap ...

  5. 采用lamp架构搭建discuz论坛

    lamp简介 LAMP指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建 ...

  6. Haproxy反向代理WebSocket的方法

    WebSocket请求和一般的Http请求不一样,它会长时间保持一个connection,Haproxy反向代理WebSocket请求需要用到timeout tunnel参数,否则这个链接可能就会提前 ...

  7. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  8. 用mysql web建立论坛_在web1上搭建Discuz论坛

    地址规划: 一.配置本地yum仓库: #mkdir /media/iso #mount /dev/cdrom /media/iso #vim /etc/yum.repos.d/rhel-source. ...

  9. Linux中怎么搭建Discuz论坛

    文章目录 Linux中怎么搭建Discuz论坛 1.搭建yum安装环境: 2.安装http服务: 3.安装php*软件: 4.安装数据库: 5.登陆数据库: 6.创建数据库: 7.搭建论坛: Linu ...

最新文章

  1. linux模糊查找子目录,linux怎么模糊查找一个文件
  2. visual studio code配置项
  3. ubuntu终端切换快捷键
  4. stl源码剖析_STL之set源码剖析
  5. PID入门的十五个基本概念
  6. Java中级工程师知识图谱
  7. 高 star 开源项目来实验楼啦,深度学习强推教材
  8. 约瑟夫环递推公式的由来(约瑟夫环公式法)
  9. 华为ensp路由器静态路由配置
  10. c语言标准库函数fputs,C 库函数
  11. Android Retrofit网络请求返回HTTP 405 Method Not Allowed
  12. 故障:笔记本电脑部分按键失效
  13. Java毕业设计_智能快递柜的设计与实现
  14. Gos ——操作键盘
  15. 华为 MA5680T [EPON]简单开局
  16. matlab 二元微分方程组,求助,matlab求解二元二阶的常微分方程组
  17. Linux服务器硬件及RAID
  18. 浅谈Spring定时任务
  19. IDEA远程debug调试设置
  20. Android基于Poi生成Word

热门文章

  1. php $key{$x},Thinkphp 3.x key可控注入(?)
  2. python获取时间秒数_Python获取秒级时间戳与毫秒级时间戳
  3. CentOS 7安装docker环境
  4. sis最新ip地址2020_2020年12月版 最新IP数据库 号段归属地 省市区镇村行政区划
  5. 微软私有云解决方案_毕马威 AI 工厂携手微软云技术 | 共创人工智能发展,共建创新解决方案...
  6. 润乾单元格加html点击事件_报表输入页码翻页(润乾 V2018)
  7. python基于web可视化_python可视化(转载)
  8. POJ3163 King of Fighters 状压DP/费用流
  9. C#中结构体排序方法(Array.sort() + ICompare)
  10. 2017.4.25 解方程 思考记录