搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)

架構簡介

參加馬哥linux培訓一周了,自己感覺每天都進步很多,現在來說說這個架構,也是架構師第一周的作業第二題。搭建一套LVS-DR模型的高性能集群,做了兩天終于完成并實現了這個架構,我設計的架構圖如下所示:

搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)

此架構主要是用ipvsadm來實現高性能集群,Realserver(RS1,RS2)安裝配置nginx,RS服務器分別配置了一個內網,一個外網。正常情況時,客戶端web請求發送到lvs服務器(vip),lvs服務器根據ipvsadm定義的規則將請求負載均衡至后端RS服務器,RS服務器的nginx對于靜態資源請求就直接在本機檢索并返回,對于php的動態請求,則反向代理制PHP-FPM服務器。如果有涉及到MYSQL的請求,PHP-FPM服務器會自動與mariadb服務器處理數據。NFS服務器掛載到rs1,rs2,php-fpm服務器。達到數據同步的功能。

架構要求

1:wordpress程序通過nfs共享給各個realserver

2:后端realserver中的nginx和php分離

環境說明

LVS-SERVER

  • 網卡1: 192.168.31.21

  • 配置ipvsadmin工具

RS1-server

  • 網卡1: 192.168.31.22(外網)

  • 網卡2:192.168.68.22(內網)

  • 配置nginx服務,NFS服務,

RS2-server

  • 網卡1: 192.168.31.23(外網)

  • 網卡2:192.168.68.23(內網)

  • 配置nginx,NFS

NFS-server

  • 網卡1:192.168.68.24(內網)

  • 配置nfs,

PHP-FPM-server

  • 網卡1:192.168.68.25(內網)

  • 配置php-fpm,nfs

MARIADB-server

  • 網卡1:192.168.68.26(內網)

  • 配置mariadb

系統都是Centos 7

VIP: 192.168.31.2

windows做本地解析 192.168.31.2 z.com

軟件安裝

LVS-SERVER

[root@lvs-server ~]# yum -y install ipvsadm

RS1-SERVER

[root@rs1-server ~]# yum -y install nginx nfs-utils rpcbind

RS2-SERVER

[root@rs2-server ~]# yum -y install nginx nfs-utils rpcbind

NFS-server

[root@nfs-server ~]# yum -y install nfs-utils rpcbind

PHP-fpm server

[root@phpfpm-server ~]# yum -y install php-fpm php-mysql php-gd php-mbstring php-mcrypt
[root@phpfpm-server ~]# yum -y nfs-utils rpcbind

Mariadb-server

[root@mariadb-server ~]# yum -y install nfs-utils rpcbind

服務配置

NFS文件共享

[root@nfs-server ~]#groupadd www -g 501
[root@nfs-server ~]#useradd www -u 501 -g www -M -r    
[root@nfs-server ~]#mkdirp -pv /data/wwwroot
[root@nfs-server ~]#chown -R www:www /data/wwwroot
[root@nfs-server ~]#echo '/data/wwwroot   192.168.68.0/24(rw,sync,all_squash,anongid=501,anonuid=501)' > /etc/exports
[root@nfs-server ~]#exportfs -rv
[root@nfs-server ~]#systemctl start rpcbind.service #啟動rpcbind,nfs注冊工具
[root@nfs-server ~]#systemctl start nfs.service   #啟動nfs
[root@nfs-server ~]#mkdir -pv /data/wwwroot/z_com

LVS 配置

[root@lvs-server ~]# ifconfig eno16777736:0 192.168.32.2 netmask 255.255.255.0 broadcast 192.168.31.2
[root@lvs-server ~]# route add -host 192.168.31.2 dev eno16777736:0
[root@lvs-server ~]# ipvsadm -A -t 192.168.31.2:80 -s rr
[root@lvs-server ~]# ipvsadm -a -t 192.168.31.2:80 -r 192.168.31.22 -g
[root@lvs-server ~]# ipvsadm -a -t 192.168.31.2:80 -r 192.168.31.23 -g
[root@lvs-server ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.31.2:80 rr
  -> 192.168.31.22:80             Route   1      0          0         
  -> 192.168.31.23:80             Route   1      0          0

RS1、RS2 配置一樣

[root@rs1-server ~]#vim skp.sh  #LVS-DR配置
#!/bin/bash

VIP=192.168.31.2

case "$1" in
  start)
   echo "配置lvs Real Server開始..."
   ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
   route add -host $VIP dev lo:0
   echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
   ;;
  stop)
   echo "正在關閉lvs Real server"
   ifconfig lo:0 down
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
   ;;
  *)
   echo "用法:$0 {start|stop}"
   exit 1
esac

[root@rs1-server ~]#chmod +x skp.sh
[root@rs1-server ~]#./skp.sh start
[root@rs1-server ~]#groupadd www -g 501
[root@rs1-server ~]#useradd www -u 501 -g www -M -r  
[root@rs1-server ~]# ifconfig lo:0 192.168.32.2 netmask 255.255.255.255 broadcast 192.168.31.2
[root@rs1-server ~]# route add -host 192.168.31.2 dev lo:0
[root@rs1-server ~]#systemctl start rpcbind.service
[root@rs1-server ~]#showmount -e 192.168.68.24
Export list for 192.168.68.24:
/data/wwwroot 192.168.68.0/24
[root@rs1-server ~]#mkdir -p /htdocs
[root@rs1-server ~]#mount -t nfs 192.168.68.24:/data/wwwroot /htdocs
[root@rs1-server ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda2                      58G  2.3G   56G   4% /
devtmpfs                      484M     0  484M   0% /dev
tmpfs                         493M     0  493M   0% /dev/shm
tmpfs                         493M  6.8M  487M   2% /run
tmpfs                         493M     0  493M   0% /sys/fs/cgroup
/dev/sda1                     497M  118M  379M  24% /boot
tmpfs                          99M     0   99M   0% /run/user/0
192.168.68.24:/data/wwwroot   58G  2.3G   56G   4% /htdocs

[root@rs1-server ~]#vim /etc/nginx/conf.d/z.com.conf
server {
    listen          80;
    server_name     z.com;
    root            /htdocs/z_com;
    index           index.php;
    add_header X-via $server_addr;

    location / {
            root    /htdocs/z_com;
            index   index.php index.html index.html;
    }

    location ~* \.(jpg|jpeg|png|gif|js|css)$ {
            root    /htdocs/z_com;
    }

    location ~ \.php$ {
            root            /htdocs/z_com;
            fastcgi_pass    192.168.68.25:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME /htdocs/z_com$fastcgi_script_name;
            include         fastcgi_params;
    }
}
[root@rs1-server ~]#systemctl start nginx.service

PHP-FPM配置

[root@phpfpm-server ~]#groupadd www -g 501
[root@phpfpm-server ~]#useradd www -u 501 -g www -M -r 
[root@phpfpm-server ~]#systemctl start rpcbind.service
[root@phpfpm-server ~]#showmount -e 192.168.68.24
Export list for 192.168.68.24:
/data/wwwroot 192.168.68.0/24
[root@phpfpm-server ~]#mkdir -p /htdocs
[root@phpfpm-server ~]#mount -t nfs 192.168.68.24:/data/wwwroot /htdocs
[root@phpfpm-server ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda2                      58G  2.3G   56G   4% /
devtmpfs                      484M     0  484M   0% /dev
tmpfs                         493M     0  493M   0% /dev/shm
tmpfs                         493M  6.8M  487M   2% /run
tmpfs                         493M     0  493M   0% /sys/fs/cgroup
/dev/sda1                     497M  118M  379M  24% /boot
tmpfs                          99M     0   99M   0% /run/user/0
192.168.68.24:/data/wwwroot   58G  2.3G   56G   4% /htdocs
[root@phpfpm-server ~]#vim /etc/php-fpm.d/www.conf 
 ##修改/etc/php-fpm.d/www.conf的部分選項
listen = 192.168.68.22:9000
listen.allowed_clients = 192.168.68.22,192.168.68.23
user = www
group = www
[root@phpfpm-server ~]#systemctl start php-fpm.service

Mariadb數據庫配置

[root@mariadb-server ~]#systemctl start mariadb.service
[root@mariadb-server ~]#mysql -uroot 
MariaDB [(none)]> create database wordpress;  #創建wordpress數據庫
MariaDB [(none)]> grant all on wordpress.* to 'wordpress'@'192.168.68.%' identified by '123456'; 授權worpress用戶

搭建wordpress

[root@nfs-server ~]#cd /data/wwwroot/z_com
uzip wordpress.zip

用瀏覽器訪問z.com:搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)

試驗總結

  • 在php-fpm服務配置中要注意listen的監聽,和 listen.allowed_clients

  • 架設web服務時,要注意網站根目錄的權限問題。

  • 此架構可以用ansible一鍵配置完成……,日后要實現

原創文章,作者:N25_木頭鐘,如若轉載,請注明出處:http://www.www58058.com/62736

(0)
N25_木頭鐘N25_木頭鐘
上一篇 2016-12-05 23:55
下一篇 2016-12-06

相關推薦

  • 習題

    1.當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 2.當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 3.當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? 4.復制/etc/fstab文件到/var/tmp下,設置文件所有者為wa…

    Linux干貨 2016-08-04
  • 學習的第二周

    硬鏈接不能跨分區,硬鏈接不支持對目錄的創建, 硬鏈接的本質是一個文件N個節點  ls |xargs rm 解決參數太長 無法正常刪除的問題。   軟連接 依賴于原始文件 刪除就沒了軟連接可以跨分區,可以根據目錄創建軟連接,而且還可以針對文件夾 軟連接依賴于原始文件。原始文件刪了軟連接就打不開了  相對路徑一般相對當前工作目錄,但…

    Linux干貨 2017-05-30
  • rsync+inotify實現數據實時備份

    rsync+inotify實現數據實時備份 §·rsync簡單介紹 1 §·什么是rsync 1 §·rsync的功能特性 1 §·rsync的優點和不足 2 §·初識inotify 2 §·rsync命令工作模式 2 §·rsync常用命令選項 3 §·配置rsync以守護進程的方式運行 3 ※·安裝并啟動 xinetd 3 ※·為rsync服務器提供配置…

    Linux干貨 2016-10-30
  • 邏輯卷管理—LVM

    邏輯卷管理—LVM   LVM:Logical  Volume  Manager        使用軟件方式來組織一個或多個底層硬件設備為一個抽象的邏輯設備。 1、查看分區情況: 2、創建分區:(更改分區類型為8e:Linux LVM) 3、創建分區成功: 5、創建物理…

    Linux干貨 2016-09-01
  • CentOS6啟動流程

    CentOS 6 啟動流程 | root密碼重置 | 添加系統服務 一、CentOS 6 啟動流程:     1)POST加電自檢         Power-On-Self-Test,主板在接通電源后,系統首先由BIOS程序來對對CPU、…

    Linux干貨 2016-09-08
  • 導讀谷歌三大核心技術之一 GoogleFileSystem(一)

    GoogleFileSystem設計構想 為滿足Google數據處理的需求,Google工程師設計并實現了GoogleFileSystem(GFS)。GFS與傳統分布式文件系統類似,也需要滿足高性能、可伸縮性、可靠性以及可用性。與傳統分布式文件系統思路不不同的是: GFS認為組件失效是常態而非意外,GFS由大量廉價設備組成 文件數量異常巨大 絕大部分文件修改…

    Linux干貨 2017-05-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-09 20:52

    總結的很好,有例子有說明,加油

欧美性久久久久