2、案例拓扑Session:存储在服务器端,保存客户端的登录状态信息,浏览历史等信息
Cookies:由服务器下发给客户端,保存在客户端的一个文件里。保存的内容主要包括:SessionID、账号名,过期时间等
二、配置web1服务器 1、安装软件
2、配置Nginx动静分离参见前面环境部署文档:虚拟机搭建centos7.5-Nginx七层代理及环境部署_*_花非人陌_*的博客-CSDN博客
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000; #php-fpm的IP端口
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf; #加载Fast-CGI参数文件
}
[root@web1 ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@web1 ~]# systemctl enable --now mariadb
[root@web1 ~]# systemctl enable --now php-fpm
3、部署测试页面
下载测试测试页面文件:链接:https://pan.baidu.com/s/1m_qK61j1OymtRoJTccM2yQ
提取码:8888
将测试页面包拷贝到对应文件夹下 [root@web1 ~]# tar -xf lnmp_soft.tar.gz [root@web1 ~]# cd lnmp_soft/php_scripts/ [root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz [root@web1 php_scripts]# cp -r php-memcached-demo/* /usr/local/nginx/html/4、验证Session
登录成功后查看,在web1服务器查看Session文件信息
- 访问成功后会在session目录下会生成文件
- 需要清楚网页cook数据,每一次重新登录对应一个session
[root@web1 php_scripts]# cd /var/lib/php/session/ [root@web1 session]# ls sess_c6bind3cpt3mc3vrdeih42ikn3 sess_pg05i0qs3522mea5cp78mjs7u0 #浏览2次,清过cook数据,所以产生两个文件二、网站重复登录问题 1、部署第二台服务器
2、修改网页代码(便于区分2台服务器区别)参照web1部署,或者直接克隆web1
[root@web2 ~]# sed -ie "// a " /usr/local/nginx/html/index.php #添加颜色属性 [root@web2 ~]# sed -ie "// a " /usr/local/nginx/html/home.php #添加颜色属性3、部署Nginx代理服务器(7层)
参见前面环境部署文档:虚拟机搭建centos7.5-Nginx七层代理及环境部署_*_花非人陌_*的博客-CSDN博客
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
http {
upstream servers { #注意,upstream模块要写到http的里面
server 192.168.5.106:80;
server 192.168.5.107:80;
}
...
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servers; #通过proxy_pass将用户的请求转发给servers集群,他的语句优先级高于root,放root前面和后面都可以
root html;
index index.php index.html index.htm;
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
4、测试
三、Session共享 1、拓扑图客户端反复测试代理服务器:http://192.168.5.108/index.php 效果如下
2、memcached概述
3、部署memcached
高性能的分布式缓存服务器;缺点重启后所有数据丢失 - 用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度 - 官方网站:http://memcached.org/ - memcached支持许多平台:Linux、FreeBSD、Solaris (memcached 1.2.5以上版本)、Mac OS X、Windows
[root@proxy ~]# yum -y install memcached
[root@proxy ~]# systemctl enable --now memcached
[root@proxy ~]# cat /etc/sysconfig/memcached #配置文件定义的变量
PORT="11211"
USER="memcached"
MAXCONN="1024" #最大连接数
CACHESIZE="64" #最大缓存数64M
OPTIONS=""
[root@proxy ~]# cat /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
启动服务 内存大小 并发量
[Install]
WantedBy=multi-user.target
4、使用telnet测试memcached服务器
[root@proxy ~]# yum -y install telnet [root@proxy ~]# telnet 192.168.4.5 11211 Trying 192.168.4.5... …… ##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。 set name 0 180 3 //定义变量,变量名称为name plj //输入变量的值,值为plj STORED get name //获取变量的值 VALUE name 0 3 //输出结果 plj END ##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。 add myname 0 180 10 //新建,myname不存在则添加,存在则报错 set myname 0 180 10 //添加或替换变量 replace myname 0 180 10 //替换,如果myname不存在则报错 get myname //读取变量 delete myname //删除变量 flush_all //清空所有 quit //退出登录5、PHP+Memcached
安装PHP扩展 - 默认PHP无法连接memcached数据库 - 需要安装扩展软件包,才能让PHP连接memcached数据库 - 为web1/2主机安装扩展包
#Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享 [root@web1 ~]# yum -y install php-pecl-memcache #修改php文件 [root@web1 ~]# grep 'php_value[' /etc/php-fpm.d/www.conf #修改前 php_value[session.save_handler] = files #存储方式为文件 php_value[session.save_path] = /var/lib/php/session #指定本地目录,保存到此目录下 [root@web1 ~]# sed -i '224s/files/memcache/' /etc/php-fpm.d/www.conf [root@web1 ~]# sed -i '225s%/var/lib/php/session%"tcp://192.168.4.5:11211"%' /etc/php-fpm.d/www.conf [root@web1 ~]# grep 'php_value[' /etc/php-fpm.d/www.conf #修改后 php_value[session.save_handler] = memcache #存储方式保存到缓存数据库里 php_value[session.save_path] = "tcp://192.168.4.5:11211" #指定网络路径 [root@web1 ~]# systemctl restart php-fpm web2同web1操作一致6、测试
| 客户端测试效果 |
|---|
| 反复测试访问代理服务器:http://192.168.4.5/index.php |
| 实际实现的是负载均衡效果,输入用户名和密码进入反复测试,web1和web2会来回切换,但是sessionID不会变化 |



