- 浏览: 463067 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
本文中 包含 nginx memcached tomcat 集群 的安装和配置
wget url 为下载所需的资源文件方式,也可以通过 VMware Tools 工具载入,
如何安装 VMwareTools 参考本博客或者其他资料
后面最后一章节是安装配置squid 在项目第一期不作要求。
第一章 安装配置nginx
1 安装nginx
1 下载解压nginx
Nginx 依赖很多软件(gcc、g++、make、libz-dev、libbz2-dev、libreadline-dev)
所以下面我们就来安装这些依赖包
安装此模块之前需要先获取root权限,不然会提示 you need to be root to perform this command
获取权限的方法是 终端 输入su 回车,输入密码
2 建立用户组(可以跳过这一步)
3 需要pcre库支持 pcre是一个正则表达式库
下载
解压
进入目录安装
以上准备工作已经完成。以下开始进入安装。
上面的步骤完成 nginx就已经安装好了。
因为我们使用的是默认的 configure,所以会安装到/usr/local/nginx目录。相应的配置文件是/usr/local/nginx/conf/nginx.conf。
因为前面建立的是nginx 用户,所以到
不间断重启nginx
kill -HUP 主进程号
可以查看具体的安装目录
查看 80 端口是否被监听 netstat -tulnp | grep :80
可以使用下面 的语句块 实现多台虚拟主机的配置
下面是 最终的配置文档形式
下面是nginx.conf同目录的 代理文件proxy.conf 的最终形式
检测nginx 是否安装成功,可以在安装路径 html 下新增一个文件
直接访问这个文件
2 安装memcached
安装memcached
转向其解压路径 直接安装
cd memcached-1.2.0
./configure --with-libevent=/usr
# make
# make install
安装完成后会把memcached放到 /usr/local/bin/memcached ,
测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
启动memcached
停止memcached
先使用 netstat -ntpl 查看 memcached 的pid
使用命令kill pid 杀死进程
测试
telnet 127.0.0.1 12111
如果出现 bash:telnet:command not found
安装一下即可
yum -y insatll telnet
3 安装多个tomcat
① 安装 jdk
首先卸载默认的jdk1.42
rpm -qa | grep gcj
libgcj-devel-3.4.6-3
java-1.4.2-gcj-compat-1.4.2.0-27jpp
libgcj-3.4.6-3
# yum -y remove java-1.4.2-gcj-compat
② 下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
或者
wget http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz
http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz
解压 tar -zxvf jdk1.7.0_71-xxxxx.tar.gz
重命名 mv jdk1.7.0_71-xxxxx.tar.gz jdk1.7.0_71
③ 写入环境变量 /etc/profile 最后加入如下内容
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
检测jdk 安装成功与否 java -version
④ 导入tomcat 压缩包 apache-tomcat-7.0.57.tar.gz
解压 tar -zxvf apache-tomcat-7.0.57.tar.gz
重命名 mv apache-tomcat-7.0.57.tar.gz tomcat7-1
复制一份tomcat
cp -r tomcat7-1 tomcat7-2
修改
tomcat7-2 中的文件
1 conf/server.xml
修改三个监听端口
<Server port="8005" shutdown="SHUTDOWN">
改成
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改成
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改成
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
使用jvmRoute 区分不同的tomcat ,目的是1 在验证页面上可以观察的很清晰,2 可以实现
不同的session 使用不同的tomcat处理 减轻服务器压力。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
有多个tomcat的时候 可以设置jvmRoute="tomcat1,2,3,4....."
2 conf/context.xml(为了与memcached 集成实现session 同步,需要在两个tomcat中都修改此文件)
1) 在 Context 节点下 加入如下代码
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211 "
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
2) 我们需要一系列的jar包来实现session同步
asm-3.2.jar
javolution-5.4.3.1.jar
kryo-1.04.jar
kryo-serializers-0.8.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-javolution-serializer-1.6.3.jar
msm-kryo-serializer-1.6.3.jar
msm-xstream-serializer-1.6.3.jar
reflectasm-0.9.jar
spymemcached-2.8.4.jar
这些jar 会打包附在本博文附件
需要将这些jar 分别 复制到tomcat/bin 目录
linux 可以使用命令
cp -frap jar/* tomcat7-1/lib 完成 */
⑤ 为了更加通用和简单易懂 以及后期添加更多的tomcat集群 这里也对/etc/profile 文件进行修改
#tomcat7-1
CATALINA_BASE=/usr/local/tomcat7-1
CATALINA_HOME=/usr/local/tomcat7-1
TOMCAT_HOME=/usr/local/tomcat7-1
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
#tomcat7-2
CATALINA_2_BASE=/usr/local/tomcat7-2
CATALINA_2_HOME=/usr/local/tomcat7-2
TOMCAT_2_HOME=/usr/local/tomcat7-2
export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME
这里设置的变量值 需要在tomcat 安装目录下引用
现在打开tomcat7-1/bin/catalina.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE
现在打开tomcat7-2/bin/catalina.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE
修改 tomcat 的配置文件
tomcat7-1的配置文件和
tomcat7-2的配置文件修改如下:
修改 tomcat7-2/bin 下的文件:startup.sh 和 shutdown.sh(加入的内容一样),在文件中加入以下内容:
tomcat7-1的配置文件修改如下:(startup.sh 和 shutdown.sh)
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE
tomcat7-2的配置文件修改如下:(startup.sh 和 shutdown.sh)
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE
4 etc/hosts 文件添加域名 www.server80.com
5 测试项目
在eclipse 下新建cluster web项目,
其中有两个页面
cluster.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","Public");
response.setDateHeader("Expires",10);
%>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
// 如果有新的请求,则添加session属性
String name = request.getParameter("name");
if (name != null && name.length() > 0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("<b>Session setting success !!!</b>");
%>
</body>
</html>
cluster2.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","Public");
response.setDateHeader("Expires",10);
%>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
out.print("<b>Session List:</b>");
Enumeration<String> names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"<br>");
System.out.println( sname + " = " + value);
}
%>
</body>
</html>
页面 1 用于设置session
页面2 用于获取session
当启动 nginx memcached 和 两个 tomcat
访问 www.server80.com/cluster/cluster.jsp?name=kk&value=pp
请求将以轮询的形式访问分布式状态的两个tomcat
访问 www.server80.com/cluster/cluster2.jsp
页面上 我们看到我们的请求在以轮询的方式访问两个tomcat 但是sessionID是不会变化的,
这就说明 虽然我们访问的是不同的tomcat 但是是同一个session ,到此,session同步完成。
本章节安装配置squid 项目第一期不作要求
配置 suqid(多台,多台squid(不同路径) 集群 一台 nginx)
参照 http://blog.yunvi.com/html/160.html
下载 wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.9-20141113-r13188.tar.gz
解压 tar -zxvf squid-3.4.9-20141113-r13188.tar.gz
重命名 mv squid-3.4.9-20141113-r13188 squid-3.4.9
安装
cd suqid-3.4.9
./configure --prefix=/usr/local/squid \
--localstatedir=/var/squid \
--enable-stacktraces
make && make install
优化linux内核
linux内核的优化根据具体情况来定,其中比较重要的参数有:
net.ipv4.tcp_max_tw_buckets = 6000
表示允许的最多timewait数量,这个值根据服务器的情况来定,不建议太高
net.ipv4.ip_local_port_range = 1024 65000
允许tcp连接打开的端口范围,上面指定为1024-65000
参考优化参数:(将此参数插入到/etc/sysctl.conf文件中)
运行命令使其生效:
sysctl -p
创相关目录并启动squid
mkdir /var/squid
chown -R squid.squid /var/squid
ln -s /usr/local/squid/sbin/squid /usr/sbin/
ln -s /usr/local/squid/bin/squidclient /usr/bin/
ulimit -SHn 102400
squid -z
squid
如果出现没有权限
直接使用 chmod 777 /usr/local/squid/var/logs/cache.log
查看squid服务是否正常启动,端口是否打开
netstat -an | grep 80
也可以用 netstat -ntpl 查看
wget url 为下载所需的资源文件方式,也可以通过 VMware Tools 工具载入,
如何安装 VMwareTools 参考本博客或者其他资料
后面最后一章节是安装配置squid 在项目第一期不作要求。
第一章 安装配置nginx
1 安装nginx
1 下载解压nginx
①: wget http://nginx.org/download/nginx-1.7.7.tar.gz ②: tar zxvf nginx-1.7.7.tar.gz
Nginx 依赖很多软件(gcc、g++、make、libz-dev、libbz2-dev、libreadline-dev)
所以下面我们就来安装这些依赖包
yum -y install gcc gcc-c++ autoconf automake yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
安装此模块之前需要先获取root权限,不然会提示 you need to be root to perform this command
获取权限的方法是 终端 输入su 回车,输入密码
2 建立用户组(可以跳过这一步)
groupadd -r nginx man useradd useradd -s /sbin/nologin -g nginx -r nginx id nginx
3 需要pcre库支持 pcre是一个正则表达式库
下载
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
解压
tar -zxvf pcre-8.36.tar.gz
进入目录安装
cd pcre-8.36 ./configure make && make install
以上准备工作已经完成。以下开始进入安装。
cd nginx-1.7.7 ./configure make && make install
上面的步骤完成 nginx就已经安装好了。
因为我们使用的是默认的 configure,所以会安装到/usr/local/nginx目录。相应的配置文件是/usr/local/nginx/conf/nginx.conf。
因为前面建立的是nginx 用户,所以到
cd usr/local/nginx/conf/nginx.conf 文件 就是nginx配置文件了。 使用命令 ps -ef | grep nginx root 48344 1 0 00:41 ? 00:00:00 nginx:master process /usrlocal/nginx/sbin/nginx
关闭nginx (前提切入 root 用户,su) kill -quit 48344 nginx 重启命令 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 或者 先杀死 在启动 kill -quit 主进程号
不间断重启nginx
kill -HUP 主进程号
可以查看具体的安装目录
查看 80 端口是否被监听 netstat -tulnp | grep :80
卸载nginx yum remove nginx (chmod -R 777 nginx-1.7.7 将所有文件夹设置为可读可写)
可以使用下面 的语句块 实现多台虚拟主机的配置
下面是 最终的配置文档形式
#user www www; worker_processes 1; pid /usr/local/nginx/logs/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; include proxy.conf; #一定要指向代理文件 sendfile on; tcp_nopush on; keepalive_timeout 65; # 这里实现轮询 upstream www.server80.com{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:9080 weight=1; } ##cache 缓存部分 有些设置在代理文件中## proxy_temp_file_write_size 128k; proxy_temp_path /home/temp_dir;#如果页面允许我们缓存 那么就会在这个路径下 这个是临时目录 ## 如果页面允许我们缓存 那么就会在这个路径下 proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; ##end## server { #listen 8081; server_name www.server80.com; location /{ root html; index index.html index.jsp index.htm; proxy_redirect off; proxy_set_header Host $host; #这一句至关重要 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://www.server80.com; # 转向tomcat } ## 缓存部分 location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) { proxy_pass http://www.server80.com; proxy_redirect off; proxy_set_header Host $host; proxy_cache cache_one; proxy_cache_valid 200 302 1h; proxy_cache_valid 301 1d; proxy_cache_valid any 1m; expires 30d; } access_log /usr/local/nginx/logs/www.server80.com.log; } }
下面是nginx.conf同目录的 代理文件proxy.conf 的最终形式
proxy_connect_timeout 300s; proxy_send_timeout 900; proxy_read_timeout 900; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
检测nginx 是否安装成功,可以在安装路径 html 下新增一个文件
直接访问这个文件
2 安装memcached
wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz # wget http://www.monkey.org/~provos/libevent-1.2.tar.gz # ./configure --prefix=/usr # make # make install 测试libevent .测试libevent是否安装成功: # ls -al /usr/lib | grep libevent
安装memcached
转向其解压路径 直接安装
cd memcached-1.2.0
./configure --with-libevent=/usr
# make
# make install
安装完成后会把memcached放到 /usr/local/bin/memcached ,
测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
启动memcached
/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /usr/local/memcached.pid /usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11212 -c 256 -P /usr/local/memcached.pid
参数: -p <num> 设置TCP端口号(默认不设置为: 11211) -U <num> UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -d 以daemon方式运行 -u <username> 绑定使用指定用于运行进程<username> -m <num> 允许最大内存用量,单位M (默认: 64 MB) -P <file> 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用 可以启动多个memcached 当一台memcached宕机之后 另外一台继续工作,试验证明。
停止memcached
先使用 netstat -ntpl 查看 memcached 的pid
使用命令kill pid 杀死进程
测试
telnet 127.0.0.1 12111
如果出现 bash:telnet:command not found
安装一下即可
yum -y insatll telnet
3 安装多个tomcat
① 安装 jdk
首先卸载默认的jdk1.42
rpm -qa | grep gcj
libgcj-devel-3.4.6-3
java-1.4.2-gcj-compat-1.4.2.0-27jpp
libgcj-3.4.6-3
# yum -y remove java-1.4.2-gcj-compat
② 下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
或者
wget http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz
http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz
解压 tar -zxvf jdk1.7.0_71-xxxxx.tar.gz
重命名 mv jdk1.7.0_71-xxxxx.tar.gz jdk1.7.0_71
③ 写入环境变量 /etc/profile 最后加入如下内容
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
检测jdk 安装成功与否 java -version
④ 导入tomcat 压缩包 apache-tomcat-7.0.57.tar.gz
解压 tar -zxvf apache-tomcat-7.0.57.tar.gz
重命名 mv apache-tomcat-7.0.57.tar.gz tomcat7-1
复制一份tomcat
cp -r tomcat7-1 tomcat7-2
修改
tomcat7-2 中的文件
1 conf/server.xml
修改三个监听端口
<Server port="8005" shutdown="SHUTDOWN">
改成
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改成
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改成
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
使用jvmRoute 区分不同的tomcat ,目的是1 在验证页面上可以观察的很清晰,2 可以实现
不同的session 使用不同的tomcat处理 减轻服务器压力。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
有多个tomcat的时候 可以设置jvmRoute="tomcat1,2,3,4....."
2 conf/context.xml(为了与memcached 集成实现session 同步,需要在两个tomcat中都修改此文件)
1) 在 Context 节点下 加入如下代码
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211 "
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
2) 我们需要一系列的jar包来实现session同步
asm-3.2.jar
javolution-5.4.3.1.jar
kryo-1.04.jar
kryo-serializers-0.8.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-javolution-serializer-1.6.3.jar
msm-kryo-serializer-1.6.3.jar
msm-xstream-serializer-1.6.3.jar
reflectasm-0.9.jar
spymemcached-2.8.4.jar
这些jar 会打包附在本博文附件
需要将这些jar 分别 复制到tomcat/bin 目录
linux 可以使用命令
cp -frap jar/* tomcat7-1/lib 完成 */
⑤ 为了更加通用和简单易懂 以及后期添加更多的tomcat集群 这里也对/etc/profile 文件进行修改
#tomcat7-1
CATALINA_BASE=/usr/local/tomcat7-1
CATALINA_HOME=/usr/local/tomcat7-1
TOMCAT_HOME=/usr/local/tomcat7-1
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
#tomcat7-2
CATALINA_2_BASE=/usr/local/tomcat7-2
CATALINA_2_HOME=/usr/local/tomcat7-2
TOMCAT_2_HOME=/usr/local/tomcat7-2
export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME
这里设置的变量值 需要在tomcat 安装目录下引用
现在打开tomcat7-1/bin/catalina.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE
现在打开tomcat7-2/bin/catalina.sh
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE
修改 tomcat 的配置文件
tomcat7-1的配置文件和
tomcat7-2的配置文件修改如下:
修改 tomcat7-2/bin 下的文件:startup.sh 和 shutdown.sh(加入的内容一样),在文件中加入以下内容:
tomcat7-1的配置文件修改如下:(startup.sh 和 shutdown.sh)
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE
tomcat7-2的配置文件修改如下:(startup.sh 和 shutdown.sh)
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE
4 etc/hosts 文件添加域名 www.server80.com
5 测试项目
在eclipse 下新建cluster web项目,
其中有两个页面
cluster.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","Public");
response.setDateHeader("Expires",10);
%>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
// 如果有新的请求,则添加session属性
String name = request.getParameter("name");
if (name != null && name.length() > 0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("<b>Session setting success !!!</b>");
%>
</body>
</html>
cluster2.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","Public");
response.setDateHeader("Expires",10);
%>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
out.print("<b>Session List:</b>");
Enumeration<String> names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"<br>");
System.out.println( sname + " = " + value);
}
%>
</body>
</html>
页面 1 用于设置session
页面2 用于获取session
当启动 nginx memcached 和 两个 tomcat
访问 www.server80.com/cluster/cluster.jsp?name=kk&value=pp
请求将以轮询的形式访问分布式状态的两个tomcat
访问 www.server80.com/cluster/cluster2.jsp
页面上 我们看到我们的请求在以轮询的方式访问两个tomcat 但是sessionID是不会变化的,
这就说明 虽然我们访问的是不同的tomcat 但是是同一个session ,到此,session同步完成。
本章节安装配置squid 项目第一期不作要求
配置 suqid(多台,多台squid(不同路径) 集群 一台 nginx)
参照 http://blog.yunvi.com/html/160.html
下载 wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.9-20141113-r13188.tar.gz
解压 tar -zxvf squid-3.4.9-20141113-r13188.tar.gz
重命名 mv squid-3.4.9-20141113-r13188 squid-3.4.9
安装
cd suqid-3.4.9
./configure --prefix=/usr/local/squid \
--localstatedir=/var/squid \
--enable-stacktraces
make && make install
优化linux内核
linux内核的优化根据具体情况来定,其中比较重要的参数有:
net.ipv4.tcp_max_tw_buckets = 6000
表示允许的最多timewait数量,这个值根据服务器的情况来定,不建议太高
net.ipv4.ip_local_port_range = 1024 65000
允许tcp连接打开的端口范围,上面指定为1024-65000
参考优化参数:(将此参数插入到/etc/sysctl.conf文件中)
运行命令使其生效:
sysctl -p
创相关目录并启动squid
mkdir /var/squid
chown -R squid.squid /var/squid
ln -s /usr/local/squid/sbin/squid /usr/sbin/
ln -s /usr/local/squid/bin/squidclient /usr/bin/
ulimit -SHn 102400
squid -z
squid
如果出现没有权限
直接使用 chmod 777 /usr/local/squid/var/logs/cache.log
查看squid服务是否正常启动,端口是否打开
netstat -an | grep 80
也可以用 netstat -ntpl 查看
- 配置所需软件.rar (8 MB)
- 下载次数: 3
- apache-tomcat-7.0.57.tar.gz (8.5 MB)
- 下载次数: 0
发表评论
-
nginx stream 模块的应用
2019-08-28 10:17 802nginx 作为反向代理服务器,通常以7层网络代理为主 , ... -
docker 运行nginx 挂载本地目录
2018-05-31 10:32 997docker run --name nginx83 -d ... -
nginx MQ 负载均衡
2017-11-29 19:14 985要求 : 1 nginx 1.9版本以上。 2 opens ... -
spymemcached客户端 出现节点宕机不能正常写入读出的错误
2016-04-23 15:07 910spymemcached 是内存数 ... -
mysql分布式缓存与memcached
2015-09-06 23:15 2223请尊重知识,请尊 ... -
nginx+tomcat+memcached (msm)实现 session同步复制
2015-05-08 23:13 2612tomcat + memcached + nginx 实现s ... -
nginx + ssl(https)
2015-03-24 15:26 1315#user nobody; worker_pro ... -
nginx 开机自启动脚本
2015-03-19 10:44 1185PATH=/usr/local/sbin:/usr/local ... -
nginx + tomcat 负载均衡实现客户端缓存
2015-01-27 10:17 1319整体机制:多个业务tomcat 多个图片tomcat ... -
nginx 试验配置(整体配置文件)
2015-01-19 15:14 764#user nobody; worker_pr ... -
winSCP 服务器 在线联网
2015-01-09 18:05 7101 新建 bb.bat 文件 里面是你的服务器 列表 ... -
nginx 高并发配置
2014-12-20 00:00 732http://www.iteblog.com/archives ... -
nginx 最全资料
2014-12-19 23:32 352http://bbs.linuxtone.org/thread ... -
nginx expires 配置调优
2014-12-16 23:21 504nginx expires 表示在客户端缓存时间 越长越好 缺 ... -
yslow 火狐浏览器插件 查看缓存
2014-11-30 22:27 856yslow 火狐浏览器插件 查看缓存 也可以使用linux ... -
nginx + memcached session 同步
2014-11-17 23:23 859squid 缓存疑问 问题归 ... -
squid 安装配置
2014-11-13 16:23 721[size=medium] 安装squid: yum in ... -
nginx+多tomcat 集成 二(nginx tomcat jdk 软件安装)
2014-11-13 10:52 1018[size=medium] 1 安装 jdk 首先卸载默 ... -
nginx+多tomcat 集成 一(nginx tomcat jdk 软件安装)
2014-11-13 10:51 767[size=medium] nginx 1 下载解压n ...
相关推荐
### Nginx+Apache+MySQL+PHP+Memcached+Squid 搭建门户网站 #### 一、前言与架构概述 随着互联网技术的发展,如何构建一个高效、稳定且能够应对高并发访问的Web服务器成为了许多企业和开发者关注的重点。本文将...
Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载均衡和集群 实现多服务器负载均衡 系统性能优化 数据库 Nginx+Squid负载均衡 配置好的集群 总共三十个文档">Apache+Tomcat+...
通过Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面和图片的缓存。 3)通过web服务器的配置来实现负载均衡 即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2....去处理。 2.1.2WEB应用...
通过Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面和 图片的缓存。 3) 通过web服务器的配置来实现负载均衡 即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2....去处理。 2.1.2 WEB...
18. **集群和高可用性**:双机热备、Memcached(缓存服务)、Squid(代理服务器)、F5负载均衡器以及集群配置确保服务的高可用性。 19. **客户端和浏览器**:包括IE、Firefox、Chrome、Opera等桌面浏览器,以及iOS...
8. **相关经验**:Squid缓存服务器、Nginx/Lighttpd等Web服务器、Memcached缓存服务、负载均衡和分布式文件处理等,这些都是运维工程师应掌握的关键技术。 9. **DNS解析**:DNS使用53端口,正向解析将域名转换为IP...
Memcached作为纯内存的键值缓存系统,是人人网架构中的另一个重要组成部分。其高效、稳定和广泛的应用使得它成为必备工具。尽管它不自带分布式能力,但通过客户端实现分布,特别是使用一致性哈希进行键的分布。人人...
面试中可能会询问Squid缓存服务器的配置与管理,Nginx和Lighttpd的反向代理、负载均衡设置,Memcached的使用场景,以及邮件服务器的搭建和维护。同时,负载均衡软件如HAProxy和Nginx的负载分发策略也是考察重点。 ...