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:内存分配器

预先分配好固定大小(slab 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.178linux.com/79180

(0)
kangkang
上一篇 2016-06-12 18:31
下一篇 2016-06-15 12:36

相关推荐

  • Zabbix-3.2.3实现微信(WeChat)告警

    Zabbix-3.2.3实现微信(WeChat)告警 zabbix Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。 关于邮件报警可以参考:Zabbix Web 邮件报警 一、微信企业号申请 地址: …

    2017-04-21
  • Linux运维之进程管理

    一、进程概念 进程是内核的一个功能,在Linux中,运行一个程序或命令可以出发一个事件而驱动一个PID,在linux系统中,系统只识别二进制程序文件,我们可以通过执行系统上的二进制程序来运行程序,进而产生进程。在linux系统中第一个进程是init程序,它是系统开机第一个加载的程序,用来支撑系统的正常运行的一个程序,内核启动的一个用户级进程。   …

    Linux干货 2016-09-09
  • 硬盘的读写原理

     硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的;IDE 遵循的是ATA标准,而目前流行的SATA,…

    Linux干货 2015-04-10
  • 自制简易linux系统

    一、环境准备 1.笔记本电脑 2.vmware12软件 3.CentOS 6虚拟机 4.大于5G空间的物理磁盘分区 二、分区并挂载文件系统 1.添加磁盘 在vmware中选中CentOS 6系统并右击鼠标选择设置,添加–>硬盘–>SCSI(推荐)–>创建新虚拟磁盘–>大小改为5G–>完成 2.分区并…

    Linux干货 2016-09-20
  • rpm

    软件运行环境 API:Application Programming Interface     POSIX:Portable OS 程序源代码–> 预处理–> 编译–> 汇编–> 链接   &nb…

    Linux干货 2016-08-21
  • Linus:利用二级指针删除单向链表

    感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多,并加入了插图) Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。 下面是Linus的教学原文及翻译—— “…

    Linux干货 2016-07-10