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 15:47
下一篇 2014-09-25 19:56

相關推薦

  • linux 學習筆記

    第二周

    Linux干貨 2018-03-16
  • grep、egrep正則表達式之初窺門徑

    何謂正則表達式 正則表達式,又稱正規表示法、常規表示法(Regular Expression,在代碼中常簡寫為regex、regexp或RE),是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的…

    2015-03-19
  • linux初步

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理命令 文件管理有哪些命令:ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail等,下面我們就來詳細的說一下(只說常用的,不是命令全部) (1). ls 命令 1 2 3 4 5 6…

    Linux干貨 2017-01-22
  • 學習宣言

    生命太過于短暫,今天放棄了明天不一定能得到。

    Linux干貨 2016-10-27
  • shell四劍客之find

    find命令詳解 ### 命令格式 find pathname -options [-print -exec -ok] ### 命令參數 pathname:find命令所查找的目錄路徑。例如用.表示當前目錄,用/來表示系統根目錄 -print:find命令將會匹配的文件輸出到標準輸出。-e…

    Linux干貨 2016-08-22
  • 正則表達式

    正則表達式 熱身 正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。 例如 grep, expr, sed , awk. 或Vi中經常會使用到正則表達式,為了充分發揮&…

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