Nginx 負載均衡多個nmmp主機

設計拓撲圖

Nginx 負載均衡多個nmmp主機

一、Memcache簡介

cache(緩存系統)

高性能分布式緩存服務器,緩存所有的“可流式化”數據:livejournal旗下Danga Interacive公司

程序=指令+數據

指令:程序

數據:IO操作

文件系統:

特征:協議簡單

 基于libevent的事件處理

 內置內存存儲方式

 memcached 不互通信的分布式

由于一臺memcached變動時會導致數據無法查詢到,客戶端使用一致性hash算法

一臺memcached變動時,數據會丟失。memcached之間不能互相通信,所以不支持冗余。

注:memcacched服務重啟時,緩存的數據會丟失;

CentOS 7 memcached的安裝流程;

base repository;

服務端程序:memcached

程序環境:

配置文件; /etc/sysconfig/memcached

主程序:/usr/bin/memcached

工具/usr/bin/memcached-tool

unitfile /usr/lib/systemd/system/memcached.service

libmemcached:libmemcached 是一個C/C++對于memcached服務器的客戶端庫和工具

libmemcached-devel:這個包中包涵libmemcached的頭文件和庫

Memcached命令詳解

memcached

memcached [options]:

-l <ip_addr>:監聽的地址

-d Run memcahched as a daemon

-m <num> 緩存空間最大值

-u <username>:進程屬主

-p <num>:監聽的tcp端口,默認為11211

-U <num>:監聽的udp端口,0表示關閉

-M 當緩存滿時,禁止對緩存清理

-c 最大并發連接數

-t <threads>用于指定服務器啟動的線程數;每個線程數響應多個請求

Slab Allocator:內存分配器

預先分配好固定大?。╯lab class)內存塊,每種大小的塊(chunk)有1 或多個;

相信的slab class的大小差別由增長因子控制;-f<factor>,默認為1.25

# vim /etc/sysconfig/memcached

OPITONS=” -f 1.1 -U 0″ 可以更改

php連接memcached程序

php-pecl-memcache

php-pecl-memcached

Cluster保持會話的方法

session sticky

session cluster

session server

二、安裝配置memcached,php-fpm,nginx

node3 安裝memcached
# ansible node3 -m yum -a "name=memcached state=present"
# ansible node3 -m command -a "rpm -ql memcached"
# ansible node3 -m service -a "name=memcached state=started"
node0,1,2安裝nginx
# for i in {1..2}; do ansible node$i -m copy -a "src=/root/nginx-1.10.0-1.el7.ngx.x86_64.rpm dest=/root/ " ; done
# for i in {1..2} ; do ssh node$i yum -y install  /root/nginx-1.10.0-1.el7.ngx.x86_64.rpm ; done
node1,2安裝php-fpm mariadb php-pecl-memcached php-memcache php-memcached
# for i in {1..2}; do ansible node$i -m yum -a "name=mariadb-server state=present" ; done
# for i in {1..2}; do ansible node$i -m yum -a "name=php-fpm state=present" ; done
# for i in {1..2}; do ansible node$i -m service -a "name=mariadb enabled=on" ; done
# for i in {1..2}; do ansible node$i -m yum -a "name=php-pecl-memcached state=present" ; done
# ll /usr/lib64/php/modules/ 安裝完 php-peclmemcached 后可以看到 memcached.so
-rwxr-xr-x 1 root root  118160 Apr  2  2014 memcached.so
-rwxr-xr-x 1 root root  106160 Jun 10  2014 memcache.so
# for i in {1..2} ; do ansible node$i -m yum -a "name=php-memcache state=present";done;
# for i in {1..2} ; do ansible node$i -m yum -a "name=php-memcached state=present";done;
# vim /etc/php.ini 注這里用的是ansible 所以可以修改或編輯好一個配置文件,然后復制到其它的兩個在線的結點
[PHP]  
extension = "/usr/lib64/php/modules/memcache.so"  注:要修改的地方
extension = "/usr/lib64/php/modules/memcached.so" 注:要修改的地方
session.save_handler = memcached  注:需要修改
session.save_path = "tcp://node3:11211 注:需要修改 
# for i in {1..2}; do ansible node$i -m copy -a "src=/etc/php.ini dest=/etc/ " ; done
# for i in {1..2}; do ansible node$i -m service -a "name=php-fpm state=started " ; done
# vim /etc/nginx/conf.d/default.conf
server {
listen       80;
server_name  localhost;
location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm index.php;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/html;
}
location ~ \.php$ {
root           /usr/share/nginx/html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}
}
#vim /usr/share/nginx/html/index.php

<?php
phpinfo() ;
?>

將nignx的配置文件和php的測試頁復制到兩個結點上

# for i in {1..2}; do ansible node$i -m copy -a "src=/etc/nginx/conf.d/default.conf dest=/etc/nginx/conf.d/ " ; done
# for i in {1..2}; do ansible node$i -m copy -a "src=/usr/share/nginx/html/index.php dest=/usr/share/nginx/html/ " ; done

啟動兩個結點(node1,node2)的nginx

# for i in {1..2} ; do ansible node$i -m service -a "name=nginx state=started";done;

在瀏覽器中輸入 http://172.16.23.11/index.php

查看兩個結點的php是否正常工作,并且查看其index.php中提供的phpinfo(); php配置信息 ,可以查看到memcache 和memcached兩項Nginx 負載均衡多個nmmp主機Nginx 負載均衡多個nmmp主機

訪問 http://172.16.23.12/index.php

Nginx 負載均衡多個nmmp主機

Nginx 負載均衡多個nmmp主機

三、在node0結點上配置nginx負載均衡后臺的兩臺(node1,node2)主機,并為兩結點通過php程序測試mariadb

注:1、由于ansible就在node0上,所以此處直接用系統自身的命令來進行配置,而非遠程執行

      2、把剛剛給node1,node2遠程復制的default.conf配置還原還去

      由于node0的nginx無其它將配置文件刪了重新安裝一下nignx 也行;

# vim /etc/nginx/nginx.conf
在http段中加入以下內容
upstream mem {
server node1:80;
server node2:80;
}
# vim /etc/nginx/conf.d/default.conf
在每一個location中加入以下內容
proxy_pass http://mem;
# systemctrl start nginx  
此時nginx已經可以負載均衡后面的兩臺服務器了

為node1,node2提供兩個php連接mysql的測試頁

<h1>www.rj.com NODE2</h1>
<?php
$link=mysql_connect("localhost","root","centos.123");
if(!$link)echo"CNONNECT FILED!";
else echo "CAN CNONNECT !";
?>

此時訪問nginx的負載均衡的結點172.16.23.10后可測試結果如下

Nginx 負載均衡多個nmmp主機

Nginx 負載均衡多個nmmp主機

原創文章,作者:renjin,如若轉載,請注明出處:http://www.www58058.com/69137

(0)
renjinrenjin
上一篇 2014-08-25
下一篇 2014-09-25

相關推薦

  • 使用lxc搭建虛擬機

        使用lxc可以幫助我們搭建輕量級的虛擬機,這種虛擬機的對資源要求不高,非常適合在硬件條件受限時建立多臺虛擬機的情況,有助于我們完成需要多節點參與的實驗環境。     下面來演示lxc的搭建過程: 一、確保NetworkManager服務是停止的。 二、將宿主機的網卡模擬為…

    Linux干貨 2015-06-17
  • Linux軟件管理(rpm,yum)

    Linux的應用程序安裝提供了兩中格式的軟件包:一種是軟件開發者直接提供的源碼包;另一種是發行版廠商提供事先編譯好打包的軟件包;用戶需要根據需要來選擇何種方式安裝軟件,作為系統管理運維人員,要想合理應用,必須熟悉這兩者之間的內在聯系以及各自的特性和差異; *軟件包管理工具)   — RPM軟件包管理工具  — YUM軟件包前端管理工具 軟…

    Linux干貨 2016-08-29
  • 筆記–8.4 文本處理工具,正則表達式

    cat 查看文本文件 命令功能: cat主要有三大功能: 1.一次顯示整個文件:cat filename 2.從鍵盤創建一個文件:cat > filename 只能創建新文件,不能編輯已有文件. 3.將幾個文件合并為一個文件:cat file1 file2 > fil…

    Linux干貨 2016-08-07
  • 20160803作業-用戶組和權限管理

    http://note.youdao.com/yws/public/redirect/share?id=46f06331b737c6d08a0e8c9c3d49ac9e&type=false

    Linux干貨 2016-08-08
欧美性久久久久