本实验的目标是搭建memcached服务器,验证测试网站客户端如何
连接上memcached服务器,并用集群来验证session会话ID
一、前期准备工作,准备两台服务器,一台做memcached服务器(A:4.123),
一台做网站服务器(B:4.124)
1、在A上安装软件: yum -y install memcached.x86_64 telnet(远程服务器测试用)
2、在B上配置安装LNMP环境
二、在服务器A上的操作
1、配置配置文件:vim /etc/sysconfig/memcached
PORT="11211" // 服务端口号
USER="memcached"
MAXCONN="1024" //最大连接数
CACHESIZE="64" //存储空间的大小
OPTIONS="" //可选参数配置
2、启动服务,设置开机自启动:
systemctl start memcached.service
systemctl enable memcached.service
3、连接,简单的语句测试
telnet 127.0.0.1 11211 //在shell下连接数据库
验证是否能读写:
set name 0 180 3 //新建name变量,不压缩、存活180秒、3个字符长度
123 //输入变量的内容
STORED
get name //读取name变量的值
VALUE name 0 3
123
END
4、memcached一些简单的语句:
add--新建(不覆盖掉以前的内容) set--新建 (会覆盖掉以前的内容)
append--追加(往已有的变量追加内容) flush_all--清空所有的内容
三、在服务器B上的操作
1、在B上安装好nginx、php、mariadb
详细安装参考我其它的实验,在上面安装软件并配置好配置文件
安装:yum -y install php-pecl-memcache.x86_64,让php文件可以连接memcached数据库
在php文件里面填上A服务器的IP地址信息和端口号:mem.php文件
$memcache=new Memcache;
$memcache->connect('192.168.4.123',11211) or die ('could not connect!! '); //连接数据库
$memcache->set('key', 'test'); //写入数据
$get_values=$memcache->get('key'); //读取数据
echo $get_values; //在页面上显示
?>
2、在服务器A上验证:http://192.168.4.124/mem.php,出来"test"则是说明验证成功
四、memcached中session会话
1、准备两台服务器java+tomcat(2.100和2.200) //可参考我其它的实验
准备一台代理服务器,用nginx来做代理,我这里用服务器A来做代理,
在上面安装nginx,并配置web集群,用真机做客户端来访问。
2、 sid Session:用户账户,密码,访问历史等。
cookie:存放id号 ,下次直接登陆,不需要输入用户名和密码
3、把测试页面分别放在两台默认网站的根目录下 :test.jsp,在客户端测试,得到不同的id
<%String s = session.getId();%>
<%=s%>
tomcatA
2.100: E8912319C717E184712FDF56F428176A tomcatA
2.200: 9C842947128B1DDE593E5B30D425E2A6 tomcatB
从上面可以看到,得到不同的ID号,如何解决这问题呢,
让tomcat读写用户信息都在memcached上
4、修改配置文件:vim /usr/local/tomcat/conf/context.xml,增加下面的配置
memcachedNodes="mem1:192.168.2.123:11211" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/> 把上面的地址改成memcached的地址,我这里用的IP是192.168.2.123(A) 5、验证:http://www.test.com/test.jsp 得到的结果是: D3866D1BC10489BC58961E3732D63863-mem1 tomcatB D3866D1BC10489BC58961E3732D63863-mem1 tomcatA 可以看到,在上面的验证中,虽然服务器换了,但是其ID号是没变的