博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Memcached,session共享
阅读量:4228 次
发布时间:2019-05-26

本文共 5194 字,大约阅读时间需要 17 分钟。

memcached是高性能的分布式缓存服务器,用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态Web

应用的响应速度。访

 

通过Nginx调度器负载后端两台Web服务器,实现以下目标:
部署Nginx为前台调度服务器
调度算法设置为轮询
后端为两台LNMP服务器
部署测试页面,查看PHP本地的Session信息
 

  • 部署LNMP环境

关闭SELinux、防火墙

]# setenforce 0

]# firewall-cmd --set-default-zone=trusted

for i in 100 200 \

>do \
>ssh 192.168.2.$i  \   
> yum -y install mariadb mariadb-server mariadb-devel php php-mysql
gcc pcre-devel openssl-devel  \
>cd /root/lnmp_soft/   \
>tar -xf nginx-1.12.2.tar.gz   \
>cd  nginx-1.12.2              \
>./configure --with-http_ssl_module \
>make && make install  \
>/usr/local/nginx/sbin/nginx  \
>cd ..    \
>yum -y install /root/lnmp_soft/php-fpm-5.4.16-42.el7.x86_64.rpm   \
>systemctl restart mariadb php-fpm   \
>done

--------

主机名为web1,web2
修改配置文件动静分离vim /usr/local/nginx/conf/nginx.conf

location / {
root html;
index  index.php  index.html  index.htl;#默认.php
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastxgi_index  index.php;
include fastcgi.conf;
}

  
scp /usr/local/nginx/conf/nginx.conf  root@192.168.2.200:/usr/local/nginx/conf/
ss -nutlp | grep mysql/php-fpm/nginx确认服务全起了

web1编写php测试脚本:

vim /usr/local/nginx/html/test.php

<?php
$i=33;
echo $i;
?>
web2机上同上脚本,33值改44
firefox 192.168.2.100/test.php proxy上测试2个LNMP能够使用

 

  • 部署前端nginx调度服务器(proxy代理)

前面已做请忽略

 yum -y install gcc pcre-devel openssl-devel
tar-xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure 
make && make install

修改配置文件vim /usr/local/nginx/conf/nginx.conf 

...
upstream webs {
server 192.168.2.100;    #如果做ssh代理就加22端口,这里默认80端口
server 192.168.2.200;
}
server {
  listen 80;
server_name locahost;
location / {
proxy_pass http://webs;
root html;
index  index.php index.html index.htm;
}
}

nginx -s reload

client客户端测试:curl http://192.168.4.5/test.php   #反复测试,配置文件改了默认index.php为首页,写test.php也行

[root@web1 ~]# cd lnmp_soft/php_scripts/

[root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz
[root@web1 php_scripts]# cd php-memcached-demo
[root@web1 php-memcached-demo]# cp -a  *  /usr/local/nginx/html/
cp -a(保留链接、文件属性,并复制目录下的所有内容)
注意:可用修改 index.php 和 home.php 两个文件的内容,添加页面颜色属性,以区
别后端两台不同的服务器 :<body bgcolor=blue>
firefox 192.168.2.100  #填写信息,默认首页没改则后面加/index.php 
[root@web1 ~]# cd /var/lib/php/session/            //查看服务器本地的Session信息
[root@web1 ~]# ls
sess_ahilcq9bguot0vqsjtd84k7244                        //注意这里的ID是随机的
[root@web1 ~]# cat sess_ahilcq9bguot0vqsjtd84k7244

Session(服务器上)+cookie(客户端上)
      请求、回应
用户---------------------服务器(网站)

1.输入用户、密码 --> 检查正确性
2.<---服务器返回home  (同时)在服务器新建uuid文件(文件名uuid)[用户名,登陆状态]内容为Session
在返回home页面同时。通过包头信息cookie:uuid
keep-alive保持连接,一次连接多次通话
客户端浏览器保存cookie
3.客户端F5刷新页面
浏览器自动把cookie发送给服务器
4.服务器根据cookie的值找uuid(不需重复登陆)
其他用户浏览器访问服务器(没有cookie。需要登陆)
其他用户第二次访问 (有自己的cookie,不需要重复登陆)
uuid文件名长方便不冲突,在/var/lib/php/session/
以上为单机不适合集群(独享)

user           -----proxy     -----web1

                                       ----web2

会导致重复输入用户密码

谷歌浏览器或firefox 192.168.4.5/index.php登陆进去F5反复刷新
解决方法集群下加ip_hash

user -----proxy+memcached(共享)-----web1
                                                           -----web2

memcached数据库软件(性能差)

没有数据库,没有表
基于内存,key=value(kv数据库)
致命问题:重启服务内存会丢失
一个月一次重启客户无感知,误以自己电脑出错
再装一个连数据库memcached的telnet来测试(他们不是原装原配的,一般和php脚本使用)
php脚本里加多点if (if先读memcache数据,else在查mysql)/usr/lib/systemd/system/所有服务的目录
-----------------------------

]# yum -y install   memcached   telnet

配置文件 /usr/lib/systemd/system/memcached.service(查看即可)

[Unit]

Description=Memcached
Before=httpd.service
After=network.target

 

[Service]

Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE数据库大小 -c $MAXCONN最大连接并发  $OPTIONS

 

[Unit]

Description=Memcached
Before=httpd.service
After=network.target

 

[Service]

Type=simple
EnvironmentFile=-/etc/sysconfig/memcached

--------------------

[root@proxy system]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
 

启动服务并查看网络连接状态验证是否开启成功

]# systemctl start memcached

[root@proxy system]# telnet 192.168.2.5 11211
set name(变量名) 0 (不压缩)  180(存多久/s) 3 (存几个字符要与值一致)
abc
get name 回车,显示值abc

add myname 0 180 10 //新建,myname 不存在则添加,存在则报错

set myname 0 180 10 //添加或替换变量
replace myname 0 180 10 //替换,如果 myname 不存在则报错
get myname //读取变量
append myname 0 180 10 //向变量中追加数据
delete myname //删除变量
flush_all //清空所有,相当于删根
quit //退出登录

--------------------------------------------------------------------------------------
web1,web2机上都操作
LNMP+memcached
为 PHP 安装 memcache 扩展  yum list memcache---> php-pecl-memcache.x86_64 (扩展模块)   
创建 PHP 页面,并编写 PHP 代码,实现对 memcached 的数据操作

   cd    ~/lnmp_soft/

   ls
   cd php_scripts/
   ls
   cp mem.php    /usr/local/nginx/html/
   cd /usr/local/nginx/html/
   ls
   vim mem.php 

<?php

$memcache=new Memcache;  #创建 memcache 对象
$memcache->connect('192.168.2.5',11211) or die ('could not connect!! ');  #192.168.2.5是memcached数据库,原是localhost
$memcache->set('key', 'test');   #定义变量
$get_values=$memcache->get('key');  #获取变量值
echo $get_values;
?>
------------------
firefox 192.168.2.100/mem.php  会访问失败
yum -y install php-pecl-memcache
systemctl start php-fpm
firefox 192.168.2.100/mem.php   结果成功
session会话信息默认保存在/var/lib/php/session本地
vim /etc/php-fpm.d/www.conf
...
最后两行
php_value[session.save_handler] = memcache  
#定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
php_value[session.save_path] = "tcp://192.168.2.5:11211"
#//通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)

systemctl restart php-fpm

清除浏览器cookie记录
谷歌浏览器访问192.168.2.5/index.php
此时进去了就算变了服务器也不用输入用户名密码

session存到了数据库
用proxy机telnet 192.168.4.5 11211
get cookie

转载地址:http://ahiqi.baihongyu.com/

你可能感兴趣的文章
Java I/O
查看>>
SQL Server 2005 T-SQL Recipes: A Problem-Solution Approach
查看>>
Core Python Programming
查看>>
Creating Database Web Applications with PHP and ASP
查看>>
ASP.NET 2.0 Demystified
查看>>
Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects
查看>>
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
查看>>
Database Programming with Visual Basic® .NET and ADO.NET: Tips, Tutorials, and Code
查看>>
ISO 9001: 2000 For Small Businesses
查看>>
Microsoft Visual Studio 2005 Unleashed
查看>>
Windows Server 2003 Security Infrastructures: Core Security Features
查看>>
Configuring ISA Server 2000
查看>>
Microsoft Money 2006 For Dummies
查看>>
Vision with Direction: A Systematic Introduction to Image Processing and Computer Vision
查看>>
Oracle Internals: Tips, Tricks, and Techniques for DBAs
查看>>
Programming Wcf Services
查看>>
AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Second Edition
查看>>
Pro Open Source Mail: Building an Enterprise Mail Solution
查看>>
Visual SourceSafe 2005 Software Configuration Management in Practice
查看>>
Beginning EJB 3 Application Development: From Novice to Professional
查看>>