构建 memcached 服务
1.1 问题
本案例要求先快速搭建好一台 memcached 服务器,并对 memcached 进行简单的添,删,改,查操作:
安装 memcached 软件,并启动服务
使用 telnet 测试 memcached 服务
对 memcached 进行增,删,改,查等操作
1.2 方案
使用 1 台 RHEL7 虚拟机作为 memcached 服务器(192.168.4.5).
在 RHEL7 系统光盘中包含有 memcached,因此需要提前配置 yum 源,即可直接使用 yum 安装,客户端测试时需要提前安装 telnet 远程工具.
验证时需要客户端主机安装 telnet,远程 memcached 来验证服务器的功能:
提示:0 表示不压缩,180 为数据缓存时间,10 为需要存储的数据字节数量.
add name 0 180 10 // 变量不存在则添加
set name 0 180 10 // 添加或替换变量
replace name 0 180 10 // 替换
get name // 读取变量
append name 0 180 10 // 向变量中追加数据
delete name // 删除变量
stats // 查看状态
flush_all // 清空所有
1.3 步骤
实现此案例需要按照如下步骤进行.
步骤一:构建 memcached 服务
1)使用 yum 安装软件包 memcached
2)启动服务并查看网络连接状态验证是否开启成功:
[root@svr5 ~]# yum -y install memcached
[root@svr5 ~]# rpm -qa memcached
memcached-1.4.15-9.el7.x86_64
步骤二:使用 telnet 访问 memcached 服务器
[root@svr5 ~]# systemctl start memcached
[root@svr5 ~]# systemctl status memcached
[root@svr5 ~]# netstat -anptu | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2839/memcached
tcp 0 0 :::11211 :::* LISTEN 2839/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 2839/memcached
udp 0 0 :::11211 :::* 2839/memcached
1)使用 yum 安装 telnet
[root@svr5 ~]# yum -y install telnet
2) 使用 telnet 连接服务器测试 memcached 服务器功能,包括增,删,改,查等操作.
……
[root@svr5 ~]# telnet 192.168.4.5 11211
Trying 192.168.4.5...
2 案例 2:LNMP+memcached
set name 0 180 3 // 定义变量,变量名称为 name
plj // 输入变量的值,值为 plj
STORED
get name // 获取变量的值
VALUE name 0 3 // 输出结果
plj
END
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 // 删除变量
stats // 查看状态
flush_all // 清空所有
quit // 退出登录
2.1 问题
沿用练习一,部署 LNMP+memcached 网站平台, 通过 PHP 页面实现对 memcached 服务器的数据操作,实现以下目标:
部署 LNMP 实现 PHP 动态网站架构
为 PHP 安装 memcache 扩展
创建 PHP 页面,并编写 PHP 代码,实现对 memcached 的数据操作
2.2 方案
使用 2 台 RHEL7 虚拟机,其中一台作为 memcached 及 LNMP 服务器(192.168.4.5),另外一台作为测试用的 Linux 客户机(192.168.4.100),如图 - 1 所示.
图 - 1
在 RHEL7 系统光盘中包含有我们需要的 MariaDB,PHP,我们需要使用源码安装 Nginx,使用 RPM 包安装 FPM.另外如果 希望使用 PHP 来操作 memcached,注意必须要为 PHP 安装 memcache 扩展(php-pecl-memcache),否则 PHP 无法解析连接 memcached 的指令.客户端测试时需要提前安装 telnet 远程工具.
2.3 步骤
实现此案例需要按照如下步骤进行.
步骤一:部署 LNMP 环境
1)使用 yum 安装基础依赖包
2)源码安装 Nginx
[root@svr5 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel
.. ..
> --user=www --group=www \
[root@svr5 ~]# useradd -s /sbin/nologin www
[root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
[root@svr5 ~]# cd nginx-1.8.0
[root@svr5 nginx-1.8.0]# ./configure \
3)安装 MariaDB 数据库
> --with-http_ssl_module
[root@svr5 ~]# make && make install
[root@svr5 ~]# yum -y install mariadb mariadb-server mariadb-devel
4)安装 PHP
5)为 PHP 添加 memcache 扩展
[root@svr5 ~]# yum -y install php php-mysql
[root@svr5 ~]# yum -y localinstall php-fpm-5.4.16-36.el7_1.x86_64.rpm
[root@svr5 ~]# yum -y install php-pecl-memcache
6)修改 Nginx 配置文件
步骤二:启动服务
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
1)启动 Nginx 服务
这里需要注意的是,如果服务器上已经启动了其他监听 80 端口的服务软件(如 httpd),则需要先关闭该服务,否则会出现冲突.
2)启动 MySQL 服务
[root@svr5 ~]# systemctl stop httpd // 如果该服务存在,则关闭该服务
[root@svr5 ~]# /usr/local/nginx/sbin/nginx
[root@svr5 ~]# netstat -utnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx
3)启动 PHP-FPM 服务
[root@svr5 ~]# systemctl start mariadb
[root@svr5 ~]# systemctl status mariadb
步骤三:创建 PHP 页面,使用 PHP 语言测试 memcached 服务
[root@svr5 ~]# systemctl start php-fpm
[root@svr5 ~]# systemctl status php-fpm
创建 PHP 首页文档 / usr/local/nginx/html/index.php:
步骤四:客户端测试
[root@svr5 ~]# vim /usr/local/nginx/html/test.php
<?php
$memcache=new Memcache; // 创建 memcache 对象
$memcache->connect('localhost',11211) or die ('could not connect!!');
$memcache->set('key','test'); // 定义变量
$get_values=$memcache->get('key'); // 获取变量值
echo $get_values;
?>
客户端使用浏览器访问服务器 PHP 首页文档,检验对 memcached 的操作是否成功:
[root@client ~]# firefox http://192.168.4.5/test.php
3 案例 3:使用 Tomcat 设置 Session
3.1 问题
通过 Tomcat 服务器设置 Session 回话 ID,实现以下目标:
部署 Nginx 为前台调度服务器
调度算法设置为轮询
后端 JSP 服务器为 Tomcat
编写 JSP 测试页面,显示 SessionID 信息
3.2 方案
使用 4 台 RHEL7 虚拟机,其中一台作为 Nginx 前端调度器服务器 (eth0:192.168.4.5,eth1:172.16.2.5),两台虚拟机部署为 Tomcat 服务器,分别为 web1 服务器 (192.168.2.100)和 Web2 服务器(192.168.2.200),另外一台作为测试用的 Linux 客户机(172.16.4.100), 拓扑如图 - 2 所示.
图 - 2
3.3 步骤
实现此案例需要按照如下步骤进行.
步骤一:部署前端 Nginx 调度服务器
1)使用源码安装 nginx 软件
2)修改 Nginx 配置文件
[root@svr5 ~]# yum -y install pcre-devel openssl-devel
[root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
[root@svr5 ~]# cd nginx-1.8.0
[root@svr5 nginx-1.8.0]# ./configure
[root@svr5 nginx-1.8.0]# make && make install
Nginx 配置文件中,通过 upstream 定义后端服务器地址池,默认调度策略为轮询,使用 proxy_pass 调用 upstream 定义的服务器地址池:
3)启动 Nginx 服务
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
upstream tomcatgrp {
server 192.168.2.100:8080;
server 192.168.2.200:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcatgrp;
root html;
index index.html index.htm;
}
}
[root@svr5 ~]# /usr/local/nginx/sbin/nginx
步骤二:部署 Tomcat
注意: 以下部署 Tomcat 的操作,需要在两台后端服务器做相同的操作,下面我们以一台 Web1 服务器(192.168.2.100)为例,对 Web2 服务器执行相同操作即可.
1)安装 jdk 环境
[root@svr100 ~]# yum -y install java-1.8.0-openjdk
2)安装 tomcat 软件
3)启动 tomcat 服务,并查看端口信息
[root@svr100 ~]# tar -zxvf apache-tomcat-8.0.30.tar.gz
[root@svr100 ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat
4)创建 JSP 测试页面,要求页面可以显示 Session ID 信息
[root@svr205 ~]# /usr/local/tomcat/bin/startup.sh // 启动 tomcat
[root@svr205 ~]# netstat -utnalp | grep :8080
tcp 0 0 :::8080 :::* LISTEN 3181/java
通过在页面代码中添加 JSP 语句 <%String s = session.getId();%> 即可:
步骤三:客户端访问测试效果
[root@svr5 ~]# ~]# vim /usr/local/tomcat/webapps/ROOT/test.jsp
>
="red"> // 指定网页背景颜色
>
<%String s = session.getId();%> // 获取 SessionID
<%=s%>
>tomcatA</h1> // 固定字串信息,Web2 的信息应该为 tomcatB
>
>
>
1)客户端使用浏览器访问测试页面
[root@pc01 ~]# firefox http://192.168.4.5/test.jsp
客户端两次访问的页面,应该对应的是 Web1 和 Web2 服务器返回的不同页面,并且会分别显示不同的 Session ID 信息,效果如图 - 3 所示.
图 - 3
4 案例 4:Tomcat 实现 session 共享
4.1 问题
沿用练习三,通过为在 Tomcat 上部署 msm(memcached-session-manager)实现 session 会话共享,本案例需要在练习三的基础上实现:
配置 Tomcat 支持 memcached
客户端访问两台不同的后端 Web 服务器时,Session ID 信息一致
4.2 方案
在练习三拓扑的基础上,Nginx 服务器除了承担调度器外,还需要担任 memcached 数据库的角色,并在两台 Tomcat 服务器上部署 msm 实现 session 会话共享.拓扑结构如图 - 4 所示.
图 - 4
4.3 步骤
实现此案例需要按照如下步骤进行.
步骤一:构建 memcached 服务
1)安装 Memcached 服务
[root@svr5 ~]# yum -y install memcached
2)启动服务并查看网络连接状态验证是否开启成功:
步骤二:在 Tomcat 服务器上部署 msm
[root@svr5 ~]# systemctl start memcached
[root@svr5 ~]# netstat -anptu | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2839/memcached
tcp 0 0 :::11211 :::* LISTEN 2839/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 2839/memcached
udp 0 0 :::11211 :::* 2839/memcached
注意:这些操作在两台后端 Web 服务器上均需要执行,以下操作以 Web1(192.168.2.100)服务器为例.
1)安装 msm
2)修改 Tomcat 配置文件,连接 memcached 服务器
[root@svr100 ~]# cd lnmp-soft/session
[root@svr100 session]# ls *.jar
asm-5.1.jar minlog-1.3.0.jar
kryo-3.0.3.jar msm-kryo-serializer-1.9.2.jar
kryo-serializers-0.34.jar reflectasm-1.11.1.jar
memcached-session-manager-1.9.2.jar spymemcached-2.11.1.jar
memcached-session-manager-tc8-1.9.2.jar
[root@svr100 session]# cp *.jar /usr/local/tomcat/lib/
步骤三:客户端测试
[root@svr100 ~]# ~]# vim /usr/local/tomcat/conf/context.xml
>
="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="mem1:192.168.2.5:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|CSS|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
客户端使用浏览器访问两台不同的 Web 服务器.
操作步骤与练习三一致,最终可以获得相关的 Session ID 信息.
来源: http://www.bubuko.com/infodetail-2457719.html