伺服器集群:多個服務配合來訪問專案
分布式:同乙個服務由多台伺服器來共同分擔 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協議...