架構簡介
參加馬哥linux培訓一周了,自己感覺每天都進步很多,現在來說說這個架構,也是架構師第一周的作業第二題。搭建一套LVS-DR模型的高性能集群,做了兩天終于完成并實現了這個架構,我設計的架構圖如下所示:
此架構主要是用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:
試驗總結
-
在php-fpm服務配置中要注意listen的監聽,和 listen.allowed_clients
-
架設web服務時,要注意網站根目錄的權限問題。
-
此架構可以用ansible一鍵配置完成……,日后要實現
原創文章,作者:N25_木頭鐘,如若轉載,請注明出處:http://www.www58058.com/62736
總結的很好,有例子有說明,加油