haproxy實現discuz論壇的動靜分離和負載均衡

幻燈片1.png

一、在cs2、cs3、cs4上安裝httpd

[root@cs2 ~]# yum install httpd

[root@cs3 ~]# yum install httpd

[root@cs4 ~]# yum install httpd

二、在cs3、cs4上安裝php和php-mysql

[root@cs3 ~]# yum install php
[root@cs3 ~]# yum install php-mysql

[root@cs4 ~]# yum install php
[root@cs4 ~]# yum install php-mysql

三、在cs5上安裝mysql

[root@cs5 ~]# yum install mariadb-server

四、在cs5上給dz論壇創建數據庫

[root@cs5 ~]# systemctl start mariadb
[root@cs5 ~]# mysql
#創建一個discuz用的數據庫,庫名叫dz
MariaDB [(none)]> create database dz;
#創建并授權賬號dzadmin密碼123321給dz庫,授權范圍為全網
MariaDB [(none)]> grant all privileges on dz.* to dzadmin@'%' identified by '123321';
#授權賬號dzadmin密碼123321給dz庫,授權范圍為本地
MariaDB [(none)]> grant all privileges on dz.* to dzadmin@localhost identified by '123321';
#刷新權限
MariaDB [(none)]> flush privileges;

五、配置cs2、cs3、cs4的httpd

[root@cs2 ~]# vim /etc/httpd/conf/httpd.conf
ServerName cs2.xinfeng.com:80    #修改此處
DocumentRoot "/var/www/html/upload"    #因為次文件還不存在,所以會報錯,等裝了dz之后再執行之后的就OK了
[root@cs2 ~]# httpd -t
[root@cs2 ~]# systemctl start httpd

[root@cs3 ~]# vim /etc/httpd/conf/httpd.conf
ServerName cs3.xinfeng.com:80    #修改此處
DocumentRoot "/var/www/html/upload"    
[root@cs3 ~]# httpd -t
[root@cs3 ~]# systemctl start httpd

[root@cs4 ~]# vim /etc/httpd/conf/httpd.conf
ServerName cs4.xinfeng.com:80    #修改此處
DocumentRoot "/var/www/html/upload"
[root@cs4 ~]# httpd -t
[root@cs4 ~]# systemctl start httpd

六、在cs3安裝discuz

[root@cs3 ~]# wget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
[root@cs3 ~]# mkdir Discuz
[root@cs3 ~]# unzip -d /root/Discuz Discuz_X3.2_SC_UTF8.zip
[root@cs3 ~]# cp -a /root/Discuz/* /var/www/html/
[root@cs3 ~]# chmod -R 777 /var/www/html/upload/*

打開cs3.xinfeng.com安裝

blob.png

blob.png

blob.png

blob.png

論壇管理員賬號admin,密碼123

blob.png

blob.png

blob.png

七、將cs3上安裝完成后的網站根目錄復制到cs2和cs4上

#復制cs3下的/var/www/html所有文件到cs2/var/www/html/下
[root@cs3 ~]# scp -r /var/www/html/* 192.168.1.114:/var/www/html/

#復制cs3下的/var/www/html所有文件到cs4/var/www/html/下
[root@cs3 ~]# scp -r /var/www/html/* 192.168.1.115:/var/www/html/

八、將cs3和cs4的靜態文件存放目錄掛載到cs2下

#/var/www/html/upload中需要掛載的目錄如下
data ┄┄┄數據緩存及附件
static ┄┄┄靜態文件

設置cs2為NFS服務器

[root@cs2 ~]# yum install nfs-utils
[root@cs2 ~]# yum install rpcbind
[root@cs2 ~]# service rpcbind start
[root@cs2 ~]# vim /etc/exports
#NFS輸出目錄為data,可以訪問這個目錄的主機為cs3和cs4,權限為讀寫,訪問uid為0(root),允許超過1024的端口號連接
/var/www/html/upload/data/ 192.168.1.113(rw,all_squash,anonuid=0,insecure)
/var/www/html/upload/data/ 192.168.1.115(rw,all_squash,anonuid=0,insecure)
#NFS輸出目錄為static,可以訪問這個目錄的主機為cs3和cs4,權限為讀寫,訪問uid為0(root),允許超過1024的端口號連接
/var/www/html/upload/static/ 192.168.1.113(rw,all_squash,anonuid=0,insecure)
/var/www/html/upload/static/ 192.168.1.115(rw,all_squash,anonuid=0,insecure)
[root@cs2 ~]# service nfs start
#查看共享狀態
[root@cs2 ~]# showmount -e
Export list for cs2.xinfeng.com:
/var/www/html/upload/static 192.168.1.115,192.168.1.113
/var/www/html/upload/data   192.168.1.115,192.168.1.113

在cs3上掛載

[root@cs3 ~]# yum install nfs-utils
[root@cs3 ~]# yum install rpcbind
[root@cs3 ~]# service rpcbind start
[root@cs3 ~]# service nfs start
[root@cs3 ~]# mount 192.168.1.114:/var/www/html/upload/data/ /var/www/html/upload/data/
[root@cs3 ~]# mount 192.168.1.114:/var/www/html/upload/static/ /var/www/html/upload/static/
[root@cs3 ~]# showmount -e 192.168.1.114
Export list for 192.168.1.114:
/var/www/html/upload/static 192.168.1.115,192.168.1.113
/var/www/html/upload/data   192.168.1.115,192.168.1.113

在cs4上掛載

[root@cs4 ~]# yum install nfs-utils
[root@cs4 ~]# yum install rpcbind
[root@cs4 ~]# service rpcbind start
[root@cs4 ~]# service nfs start
[root@cs4 ~]# mount 192.168.1.114:/var/www/html/upload/data/ /var/www/html/upload/data/
[root@cs4 ~]# mount 192.168.1.114:/var/www/html/upload/static/ /var/www/html/upload/static/
[root@cs4 ~]# showmount -e 192.168.1.114
Export list for 192.168.1.114:
/var/www/html/upload/static 192.168.1.115,192.168.1.113
/var/www/html/upload/data   192.168.1.115,192.168.1.113

九、在cs1上安裝配置haproxy

開起日志功能

[root@cs1 ~]# vim /etc/rsyslog.conf
#打開或增加一下幾行,讓udp514端口處于監聽狀態,并將日志紀錄到指定文件中
$ModLoad imudp
$UDPServerRun 514
local2.*                                                /var/log/haproxy.log
[root@cs1 ~]# systemctl restart rsyslog.service
[root@cs1 ~]# ss -unl | grep 514
UNCONN     0      0            *:514                      *:*                  
UNCONN     0      0           :::514                     :::*

配置haproxy

[root@cs1 ~]# yum install haproxy
[root@cs1 ~]# vim /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
global    #全局配置

    log         127.0.0.1 local2    #日志紀錄位置

    chroot      /var/lib/haproxy    #haproxy的工作目錄
    pidfile     /var/run/haproxy.pid    #pid文件位置
    maxconn     4000                    #最大連接數
    user        haproxy                #運行時使用的用戶身份
    group       haproxy                #運行時使用的組身份
    daemon                            #啟動為守護進程,不加此處運行在前臺
    
    stats socket /var/lib/haproxy/stats    #本地訪問stats統計信息時以套接字方式通信
    
defaults    #默認配置
    mode                    http    #已http模式運行
    log                     global    #默認日志為全局配置中日志的設置
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8    #除本機外所有發往服務器的請求首部中加入“X-Forwarded-For”首部
    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    #前端最大并發連接數
    
listen static    #設置統計報告頁面
    bind *:9000    #監聽在本機9000端口
    stats enable    #打開
    stats hide-version    #隱藏haproxy版本
    stats uri /hadzadmin?stats    #統計頁面路徑
    stats realm "HAProxy/ Static"    #打開統計頁面的認證功能
    stats auth hasts:123            #進入統計頁面所使用的賬號hasts和密碼123
    stats admin if TRUE            #條件滿足時進入管理級別
    
frontend  dz    #前端設置
    bind *:80    #監聽在80端口
    acl url_static path_beg -i /data /static /images /javascript /stylesheets    #url開頭為這些的靜態內容
    acl url_static path_end -i .jpg .gif .png .css .js .html .ico    #url結尾帶為這些的靜態內容
    use_backend staser  if url_static    #如果靜態內容符合url_static的條件,就調度到staser中的服務器
    default_backend             dyser    #其他默認調度到dyser中的服務器
    
backend dyser    #后端動態內容服務器設置
    cookie srv insert nocache    #在cookie中插入srv字串防止登錄信息丟失
    balance     roundrobin    #調度算法為輪詢
    server      cs3 192.168.1.113:80 check
    server      cs4 192.168.1.115:80 check
    
backend staser    #后端靜態內容服務器設置
    balance     roundrobin
    server  cs1 192.168.1.114:80 check
    
[root@cs1 ~]# systemctl start haproxy

修改cs2、cs3、cs4的http配置文件,讓他們能收到真實訪問的ip

[root@cs2 ~]# vim /etc/httpd/conf/httpd.conf
#修改一下內容
    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
[root@cs2 ~]# service httpd reload
#cs3和cs4執行同樣的操作

十、測試

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

分別看下cs2,cs3,cs4最近的訪問日志

[root@cs2 ~]# tail -1 /var/log/httpd/access_log 
192.168.1.110 - - [05/Jun/2016:16:36:12 +0800] "GET /data/attachment/forum/201606/05/161843j4au463pthh432zf.png HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"
[root@cs3 uc_server]# tail -1 /var/log/httpd/access_log 
192.168.1.110 - - [05/Jun/2016:16:33:07 +0800] "GET /misc.php?mod=patch&action=ipnotice&_r=0.40765136777967004&inajax=1&ajaxtarget=ip_notice HTTP/1.1" 200 65 "http://cs1.xinfeng.com/forum.php?mod=viewthread&tid=1&extra=page%3D1" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
[root@cs4 data]# tail -1 /var/log/httpd/access_log 
192.168.1.110 - - [05/Jun/2016:16:33:07 +0800] "GET /misc.php?mod=patch&action=pluginnotice&inajax=1&ajaxtarget=plugin_notice HTTP/1.1" 200 65 "http://cs1.xinfeng.com/forum.php?mod=viewthread&tid=1&extra=page%3D1" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"

原創文章,作者:N17_信風,如若轉載,請注明出處:http://www.www58058.com/17784

(0)
N17_信風N17_信風
上一篇 2016-06-04 14:14
下一篇 2016-06-07 22:03

相關推薦

  • 將兩個局域網用openvpn連接起來

    考慮到我們做集群的時候需要用到可能有20臺機器,可能我的要求跟別人的不一樣的,我需要做20臺左右的集群,不僅僅是會,而且需要非常熟練的搭建,最后通過腳步一鍵自動化部署安裝。 目前我有兩臺電腦,一臺可以運行7臺,另一臺可以運行12臺左右,剛好可以滿足的我的要求,但是我兩臺電腦都是設置的nat模式的網絡,為什么我非要配置nat模式呢,根據集群架構思想,為了保證架…

    Linux干貨 2017-05-01
  • Shell腳本編程

    shell腳本編程 Bash為用戶提供了編程環境 相對于計算機而言,只能識別二進制文件,因此其所運行的其實是二進制指令,而這些二進制指令我們稱之為機器語言,屬于低級語言;程序員編程所使用的語言為高級語言,是人們比較容易理解的語言;因此,程序的執行過程:先把源碼程序翻譯成機器語言(生成可執行的文件),然后解釋執行。程序( 程序=指令+數據 )的編程風格有兩種:…

    2017-04-14
  • N26_第一周作業

    計算機的組成 計算機由五大部分組成:    1.控制器(control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等;    2.運算器(datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行…

    Linux干貨 2016-12-28
  • Linux網絡屬性配置—ifcfg命令家族

    ifcfg命令家族:ifconfig,route,netstat 1、NAME               ifconfig – configure a network interface       SYNOPSIS   &n…

    Linux干貨 2016-11-27
  • 搭建個人博客&論壇(LAMP):wordpress、discuz、phpMyAdmin

    搭建個人博客&論壇(LAMP):wordpress、discuz、phpMyAdmin 一、快速部署LAMP架構平臺 1.CentOS 6系統部署 所需安裝包:httpd, php, mysql-server, php-mysql ]# yum install -y  httpd php&n…

    Linux干貨 2016-10-17
  • MYSQL高級運用-MHA(提供主從復制高可用,主節點故障時,進行故障轉移)

    MHA的介紹、重用工具;
    MHA的安裝;
    搭建MYSQL主從復制架構,運用MHA實現其高可用,主節點故障時,進行故障轉移;并恢復整個架構;

    2017-09-24

評論列表(2條)

  • Net18-AnyISalIn
    Net18-AnyISalIn 2016-06-05 21:55

    66666, 膜拜

  • liu-linux
    liu-linux 2017-05-18 22:37

    寫的真好

欧美性久久久久