Nginx+tomcat 负载均衡
一、环境介绍
1.本次实验共3台虚拟机(rhel6.2-64)
192.168.232.147(nginx)
192.168.232.154(tomcat)
192.168.232.155(tomcat)
2.安装并配置JDK
3.配置相关环境变量(profile,hosts)
4.准备好一个web项目,以便用于测试是否负载均衡,本次实验用一以前写的权限管理的模块
二、安装配置tomcat
1.在192.168.232.154,192.168.232.155机器安装tomcat
2.下载一个linux版本的apache-tomcat-7.0.64.tar.gz解压即可用
3.在<Host>标签里添加
<Context path="" docBase="/root/webapps/permission" reloadable="false"/>
4.创建/root/webapps目录,然后把permission这个web项目放到该目录下,启动tomcat,访问
http://192.168.232.154:8080/ , http://192.168.232.154:8080/ 可以访问到permission项目的首页。
这里可以放任意的web项目,我好久没写WEB项目了,所以手头上没有现存的web项目可用,所以随便找了4年前写的权限管理的web项目就拿来用了。
三、安装配置Nginx
1.下载nginx-1.2.6.tar.gz 并解压放到指定的目录下
2.确保nginx编译所具备的运行环境
3.安装pcre-devel openssl openssl-devel
(1)配置本地yum,使得yum安装时能找到安装包
(2)安装:yum -y install pcre-devel openssl openssl-devel
4.创建www用户:useradd www
5.准备编译安装环境
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
6.编译安装,进到nginx解压的根目录:cd /root/app/nginx-1.2.6
make && make install
7.检查nginx安装是否成功
[root@storm1 nginx-1.2.6]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
8.访问nginx默认主页:http://192.168.232.147:80/,可以看到nginx欢迎主页面
到此Nginx安装完毕
四、配置nginx+tomcat集成,其实只需配置nginx,tomcat不用动
1.进到安装指定的目录:/usr/local/nginx,把nginx.conf简单的改成如下
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 /usr/local/nginx/conf/proxy.conf;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
log_format $upstream_addr $status $request_time $time_local $remote_user $http_user_agent;
upstream panguoyuan.com {
server 192.168.232.154:8080;
server 192.168.232.155:8080;
}
server{
listen 80;
server_name panguoyuan.com;
location / {
proxy_pass http://panguoyuan.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
2.在192.168.232.147机器上的hosts如下
[root@storm1 conf]# cat /etc/hosts
192.168.232.147 storm1
192.168.232.154 storm2
192.168.232.155 storm3
192.168.232.147 panguoyuan.com
3.启动服务并验证负载均衡
分别在192.168.232.154,192.168.232.155机器把tomcat服务启动
在192.168.232.147把nginx服务启动:/usr/local/nginx/sbin/nginx
到此为止,nginx+tomcat负载均衡安装配置结束
用浏览器访问:panguoyuan.com,然后分别在192.168.147的/usr/local/nginx/logs/access.log 和192.168.232.154,192.168.232.155机器上的/root/app/apache-tomcat-7.0.64/logs目录下的localhost_access_log.2015-09-04.txt文件里都会记录有响应客户端的访问日志。
一台机器多实例的改进方案
在从性能和资源的利用率角度来分析,企业应用部署都不会在一台服务器上只部署一个实例,一般至少都两个实例以上进行部署,所以下面我在192.168.232.154和192.168.232.155上分别启动两个实例。
1.把上面的apache-tomcat-7.0.64重命名为tomcat1,再把tomcat1复制一份命名为tomcat2
2.在tomcat2中的server.xml的相关端口修改如下信息
(1)8005---->9005
(2)8080---->9090
(3)8009---->9009
保存退出,然后把tomcat1,tomcat2都启动,从以下图可看出6个端口都已经开启了
(4)另一台机器也重复做同样的操作
3.修改/usr/local/nginx/conf/nginx.conf
upstream panguoyuan.com {
server 192.168.232.154:8080;
server 192.168.232.154:9090;
server 192.168.232.155:8080;
server 192.168.232.155:9090;
}
4.重启nginx,访问panguoyuan.com,然后分别到4个tomcat下查看localhost_access_log.2015-09-04.txt日志,都可以看到有访问的日志信息。
session共享
一、安装memcached
1.下载安装包
wget http://www.monkey.org/~provos/libevent-1.3.tar.gz
wget http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
2.在安装memcached之前必须先安装libevent
(1)tar -zxvf libevent-1.3.tar.gz
(2)进到libevent-1.3
./configure --prefix=/usr
make && make install
测试libevent是否安装成功
[root@storm3 libevent-1.3]# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 Sep 5 02:06 libevent-1.3.so.1 -> libevent-1.3.so.1.0.3
-rwxr-xr-x 1 root root 313551 Sep 5 02:06 libevent-1.3.so.1.0.3
-rw-r--r-- 1 root root 502116 Sep 5 02:06 libevent.a
-rwxr-xr-x 1 root root 805 Sep 5 02:06 libevent.la
lrwxrwxrwx 1 root root 21 Sep 5 02:06 libevent.so -> libevent-1.3.so.1.0.3
3.安装memcached
# tar -xzvf memcached-1.2.2.tar.gz
# cd memcached-1.2.2
# ./configure --with-libevent=/usr
# make
# make install
4.检查memcached是否安装成功
[root@storm3 memcached-1.2.2]# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 142620 Sep 5 02:12 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 153737 Sep 5 02:12 /usr/local/bin/memcached-debug
5.启动memcached服务
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid
6.启动memcached时报错并解决
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.3.so.1: cannot open shared object file: No such file or directory
7.解决办法,执行如下两个命令
(1)LD_DEBUG=libs memcached -v
(2)ln -s /usr/lib/libevent-1.3.so.1 /usr/lib64/libevent-1.3.so.1
(3)再次启动
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid
8.测试memcached
[root@storm3 memcached-1.2.2]# telnet 192.168.232.155 12000
Trying 192.168.232.155...
Connected to 192.168.232.155.
Escape character is '^]'.
set username 0 0 10
panguoyuan
STORED
get username
VALUE username 0 10
panguoyuan
END
二、向tomcat的lib目录下添加memcached的依赖包
couchbase-client-1.0.3.jar memcached-session-manager-1.5.1.jar msm-kryo-serializer-1.5.1.jar
javolution-5.4.3.1.jar memcached-session-manager-tc7-1.5.1.jar msm-xstream-serializer-1.5.1.jar
memcached-2.6.jar msm-javolution-serializer-1.5.1.jar
三、修改tomcat的content.xml的内容
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.232.155:12000"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false" />
四、启动tomcat