php伺服器集群小記

2021-09-25 04:24:23 字數 4392 閱讀 3249

伺服器集群:多個服務配合來訪問專案

分布式:同乙個服務由多台伺服器來共同分擔 mysql的分布式操作

192.168.1.130-----------nginx 純靜態的檔案 html

192.168.1.131-----------php php-fpm test.php

192.168.1.132-----------mysql

192.168.1.133-----------快取資料庫 memcached 、redirs

192.168.1.134-----------ab壓力測試工具

ip130–nginx:

配置nginx,訪問ip131上的php檔案

vi /etc/nginx/conf.d/default.conf

修改為

location ~ \.php$ 

#在server外面新增:

upstream local_servers

啟動nginx:

systemctl restart nginx.service

ip131–php:

vi /etc/php-fpm.conf 查詢裡面:include=/etc/php-fpm.d/www.conf

然後進去www.conf檔案

需要注釋:listen.allowed_clients = 127.0.0.1

修改:listen = 192.168.1.131:9000

儲存退出

下面拷貝的這份跟上面同樣操作,就埠號改為9001

在/etc下拷貝乙份php-fpm.conf 為php-fpm1.conf

cp php-fpm.conf php-fpm1.conf

php-fpm.conf對應的另外乙個配置檔案是php-fpm.d下的www.conf

也複製乙份www.conf 為www1.conf

讓www1.conf關聯php-fpm1.conf www1下主要是修改所在的埠號 9001 www對應9000

需要注釋:listen.allowed_clients = 127.0.0.1

啟動9000:systemctl restart php-fpm.service

啟動9001:/usr/sbin/php-fpm -y /etc/php-fpm1.conf

瀏覽器訪問: 能訪問通就可以了

操作mysql:

mysql安裝在ip132上

記得ip132開啟mysql服務和3306埠

systemctl restart mysqld.service

firewall-cmd --zone=public --add-port=3306/tcp --permanent

systemctl restart firewalld.service

不成功還有可能是許可權的問題—在本機登入mysql後,更改 「mysql」 資料庫裡的 「user」 表裡的 「host」 項,從」localhost」改稱』%』。。重啟mysql

ip131:test1.php

$servername="192.168.1.132";

$name="root";

$pwd="mynewpwd123!@#";

$dbname="chinaarea";

$params = array (

pdo::mysql_attr_init_command => 'set names \'utf8\'' , //設定字符集 保證中文不亂碼

pdo::attr_errmode => pdo::errmode_exception, //設定當前pdo的錯誤處理方式

);trycatch (pdoexception $e)

瀏覽器訪問: 連線成功就可以了~

操作memcached:

1.php簡單操作memcache

ip133-memcached:注意不是本機127.0.0.1而是所在ip,之前我就一直連線不上

需要開啟memcached服務: /usr/bin/memcached -d -l192.168.1.133-p 11211 -m 200 -u root

不成功的話也去試一試開啟11211埠

ip131:test2.php

<?php 

$m=new memcached();

$m1=$m->addserver("192.168.1.133",11211);

//var_dump($m);

echo "連線成功";

$m->set("name","zhangsan");

echo $m->get("name");

瀏覽器訪問:

結果:連線成功zhangsan

2.乙個小demo 操作mysql/memcached

/user/2.html id=2的使用者資訊先讀mem快取資料庫,如果mem沒有,就讀mysql資料庫並存入mem中,下次再進入直接讀mem。

ip130-nginx:配置nginx:

新增:

location  /user/
ip131-php:getuser.php

<?php 

$uri=$_server['request_uri'];//獲取當前網域名稱的字尾

echo "進入getuser.php了----uri=".$uri;

$servername="192.168.1.132";

$name="root";

$pwd="mynewpwd123!@#";

$dbname="chinaarea";

$params = array (

pdo::mysql_attr_init_command => 'set names \'utf8\'' , //設定字符集 保證中文不亂碼

pdo::attr_errmode => pdo::errmode_exception, //設定當前pdo的錯誤處理方式

);trycatch (pdoexception $e)

ip133-mem:

開啟mem服務:systemctl restart memcached

有必要時需要開啟11211埠

不成功的話還需要修改ip130的配置

selinux這個是乙個安全服務,但是配置複雜,會影響很多軟體的部署。專業防火牆

禁用selinux(永久生效)

修改/etc/sysconfig/selinux

更改其中的selinux項的值就可以關閉和啟用selinux服務了。

修改 selinux=enforcing 成 selinux=disable 禁用selinux

然後重啟機器,不是指重啟服務哈,需要重啟虛擬機器和crt,再重啟nginx。

瀏覽器訪問: 重新整理 就會看到效果了~

ab測試工具:

安裝:yum -y install httpd-tools

測試安裝是否成功:

ab -v

ip134-abtest

工具進行測試: ab 可以模擬多人同時訪問乙個頁面的 統計出 訪問時間做統計

訪問量大了, 解決併發量大的時候如何進行測試: ab --1500人 90%左右的使用者開啟專案的時間1s

當測試併發量為10000時:易出問題:socket: too many open files (24)

解決方法:所以有關的伺服器都要設定,不然還是沒有用

ulimit -n 30000

echo 30000 > /proc/sys/net/core/somaxconn

echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

echo 0 > /proc/sys/net/ipv4/tcp_syncookies

併發量在10000人的時候 100%人在3s左右能夠執行專案 index.html 靜態頁面

requests per second: 157.50 [#/sec] (mean) (平均每秒的請求數) 這個是非常重要的引數數值,伺服器的吞吐量

集群伺服器

集群,英文名稱為cluster,通俗地說,集群是這樣一種技術 它將多個系統連線到一起,使多台伺服器能夠像一台機器那樣工作或者看起來好像一台機器。採用集群系統通常是為了提高系統的穩定性和網路中心的資料處理能力及服務能力。舉個例子來說,我們架設了一台www伺服器,上面構建了乙個電子商務 然而隨著時間的推...

伺服器遷移小記

幾個月前收到 digitalocean 發來的郵件,說因為我邀請使用者註冊並達到他的要求,送了我50刀的額度,本來就沒想到它能送,結果不久之前它又送了一次,果斷讓我產生了回到它的懷抱的念頭,畢竟現在 vultr 上的日本伺服器5刀 月,速度也不太理想,還是繞路,還不如拿去買個迅雷會員。遷移主要用到了...

web伺服器小記

伺服器分web伺服器,應用程式伺服器以及http伺服器,此處只解釋web伺服器,詳情 web伺服器 定義 一般指的是 伺服器,是指駐留在網際網路上的電腦程式,因為web伺服器注意支援的協議是http,所以一般情況下http伺服器與web伺服器相等 基本功能 提供web資訊瀏覽服務 支援 http協議...