Redis会话共享

七层负载均衡实现Redis会话共享?------------

1.session 由服务端程序生成, 生成的是 一个 叫 session_ID 的编号。 存储在服务端( 没登录状态 )
2.应用程序Nginx,会将程序生成的Session_ID 回传给 浏览器 ,通过的Header方式 set-cookies
3.浏览器 收到服务端的Session_ID 会将该Session_ID 存储至 Cookies中。
4.当我尝试登陆网站时,输入用户名称 + 用户密码 + Session_ID
5.登陆成功,我们的服务端会存储该 Session 至 本地,并将该sessionID与对应登陆的用户名称捆绑,标记已登陆
6.当浏览器再起发送请求, 还会携带 cookies 中的 Session_ID,服务端校验Session_ID, 比对成功,则会话保持。

实现操作:

1.搭建nginx+web的轮序调度
  • 在两台web节点上安装PHPmyadmin图形化数据库管理界面
	[root@web01 ~]# unzip phpMyAdmin-5.0.2-all-languages.zip -d /code/      #解压下载软件包
	[root@web01 code]# ln -s /code/phpMyAdmin-5.0.2-all-languages/ /code/phpmyadmin    #将代码做软连接方便升级
	[root@web01 code]# cd /code/phpmyadmin/
	[root@web01 phpmyadmin]# cp  config.sample.inc.php config.inc.php

	[root@web01 phpmyadmin]# vim config.inc.php    	#编写配置文件
	/* Server parameters */
	$cfg['Servers'][$i]['host'] = '172.16.1.51';	#告诉软件程序连接的那个数据库

#授权,session_id存放位置
	[root@web01 phpmyadmin]# chown -R www.www /var/lib/php/


	#Nginx配置文件
[root@web01 code]# cat /etc/nginx/conf.d/phpmyadmin.wyk.com.conf
server {
	listen 80;
	server_name phpmyadmin.wyk.com;
	root /code/phpmyadmin;

	location / {
		index index.php;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}
[root@web01 code]# nginx -t
[root@web01 code]# systemctl reload nginx
  • web02
    1.拷贝配置文件
    2.拷贝代码
    3.重建软链接
    4.授权
    5.重启Nginx
  • 接入负载均衡
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_phpmyadmin.wyk.com.conf
upstream php {
	server 172.16.1.7:80;
	server 172.16.1.8:80;
}

server {
	listen 80;
	server_name phpmyadmin.wyk.com;

	location / {
		proxy_pass http://php;
		include proxy_params;
	}
}

nginx -t
systemctl restart nginx
2.将存储在本地的Session,让其存储在Redis中
  • 安装Redis
1.安装Redis
	[root@db01 ~]# yum install redis -y


	2.配置 Redis (这个IP地址是本机的内网IP地址)
	[root@db01 ~]# sed -i '/^bind/c bind 127.0.0.1 172.16.1.51' /etc/redis.conf

	3.启动Redis
	[root@db01 ~]# systemctl start  redis
	[root@db01 ~]# systemctl enable redis
	[root@db01 ~]# netstat -lntp
	Active Internet connections (only servers)
	Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
	tcp        0      0 172.16.1.51:6379        0.0.0.0:*               LISTEN      8966/redis-server 1

  • 修改( web01 web02 ) php程序,将原本存储至本地的SessionID,修改为存储至远程的Redis服务器,所有节点都要做一遍
[root@web02 ~]# vim /etc/php.ini
	session.save_handler = redis
	session.save_path = "tcp://172.16.1.51:6379?weight=1&timeout=2.5"		#连接redis
	;session.save_path = "tcp://172.16.1.51:6379?auth=123456&weight=1&timeout=2.5"	#redis有密码

	#注释php-fpm中控制session存储的路径
	[root@web02 ~]# vim /etc/php-fpm.d/www.conf
	;php_value[session.save_handler] = files
	;php_value[session.save_path]    = /var/lib/php/session

	重启php-fpm
	[root@web02 ~]# systemctl restart php-fpm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值