本實驗的目標是搭建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文件
<?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
<html>
<body bgcolor="red">
<center>
<%String s = session.getId();%>
<%=s%>
<h1>tomcatA </h1>
</center>
</body>
</html>
2.100: E8912319C717E184712FDF56F428176A tomcatA
2.200: 9C842947128B1DDE593E5B30D425E2A6 tomcatB
從上面可以看到,得到不同的ID號,如何解決這問題呢,
讓tomcat讀寫用戶信息都在memcached上
4、修改配置文件:vim /usr/local/tomcat/conf/context.xml,增加下面的配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
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號是沒變的