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主機

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

(0)
kangkang
上一篇 2016-06-12
下一篇 2016-06-15

相關推薦

  • sed&awk

    Evernote Export 1、總結sed和awk的詳細用法; awk Linux文本處理工具三劍客:grep、sed和awk。其中grep是一種文本過濾工具,sed是文本編輯器,而awk是一種報表生成器,就是對文件進行格式化處理的,這里的格式化不是文件系統的格式化,而是對文件內容進行各種“排版”,進而格式化顯示。 在Linux之上我們使用的是GNU a…

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

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

    Linux干貨 2016-10-27
  • 第8天:腳本基礎,btrf,raid,

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

    Linux干貨 2016-08-16
  • 第一周作業

    作業

    Linux干貨 2018-03-20
  • sed工具的基本用法

    sed -n(不輸出模式,不自動打?。?sed -d(刪除匹配到的內容) sed-e(多點編輯) sed-r(支持擴展正則表達式) sed#,#(地址定界,在此范圍中匹配) sed 1~2   sed 2~2 (找奇數行和偶數行) sed =(為打印到的內容編輯行號)  sed?。ㄈ》矗?sed s///(查找替換,支持使用其他…

    Linux干貨 2017-05-02
  • rsyslog+mysql+loganalyzer 搭建日志服務器及監控

    rsyslog 日志:歷史事件; 歷史事件:時間、地點、事件; syslog: klogd:kernel yslogd:system(application) 事件記錄格式:日期時間 主機 進程[pid]:事件內容; C/S架構;通tcp或udp協議的服務完成日志記錄的傳送; rsyslog: rsyslog的特性: – 多線程; –…

    Linux干貨 2017-01-10
欧美性久久久久