Ubuntu+Nginx+Tomcat+Memcached负载均衡

(一):Ubuntu中Nginx的安装与配置
1.1 安装Nginx
(1)在线安装
$sudo apt-get install nginx
Nginx的版本是1.2.1
ubuntu安装Nginx之后的文件结构大致为:
所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
启动程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中,分别是access.log和error.log
并已经在/etc/init.d/下创建了启动脚本nginx
默认的虚拟主机的目录设置在了/usr/share/nginx/www
(2)源代码安装
下载地址:http://nginx.org/download/
我这里下载的是 nginx-1.3.9.tar.gz,安装过程很简单,如下:
./configure make
makeinstallnginx/usr/local/nginxconfnginx.confnginxsbinnginx1./configuresudoaptgetupdate2./configure:error:Ccompilerccisnotfoundsudoaptgetinstallgcc3./configure:error:theHTTPrewritemodulerequiresthePCRElibrary.sudoaptgetinstalllibpcre3libpcre3devsudoaptgetinstallopenssllibssldev4sudo:make:commandnotfoundsudoaptgetinstallbuildessentialsudoaptgetinstallmake1.2Nginx1线 sudo /etc/init.d/nginx start
(2)源代码安装的启动过程
cd/usr/local/nginx sbin/nginx
重启:sudo /usr/local/nginx/sbin/nginx -s reload
然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,
解决之后再继续。
如果你的机器同时安装了Apache,那上面的访问方式就不能使用了,而且nginx都可能启动不了,这是
因为它们都是用了80这个端口。我们这里将nginx的端口修改为8080,
这里主要修改nginx的配置文件nginx.conf,将一下这一行
listen 80;
修改为
listen 8080;
然后就可以访问了,http://localhost:8080/
1.3 Nginx配置
1.3.1 源码编译安装配置
见附件;
1.3.2 在线安装配置
Nginx的配置文件是/etc/nginx/nginx.conf,其中设置了一些必要的参数,我们发现其中这样的语句:
include /etc/nginx/sites-enabled/*
可以看出/etc/nginx/sites-enabled/default文件也是一个核心的配置文件,其中包含了主要的配置信息,
如服务器跟目录、服务器名称、location信息和server信息。
对于源代码安装的nginx,配置文件为/usr/local/nginx/conf/nginx.conf。
下面主要说明location的匹配规则:
(1)= 前缀的指令严格匹配这个查询。如果找到,停止搜索。
(2)剩下的常规字符串,最长的匹配优先使用。如果这个匹配使用 ^~ 前缀,搜索停止。
(3)正则表达式,按配置文件里的顺序,第一个匹配的被使用。
(4)如果第三步产生匹配,则使用这个结果。否则使用第二步的匹配结果。
在location中可以使用常规字符串和正则表达式。
如果使用正则表达式,你必须使用以下规则:
(1)~* 前缀选择不区分大小写的匹配
(2)~ 选择区分大小写的匹配
例子:
location = / {
    # 只匹配 / 查询。
    [ configuration A ]
}
  location / {
    # 匹配任何查询,因为所有请求都以 / 开头。
# 但是正则表达式规则和长的块规则将被优先和查询匹配。
    [ configuration B ]
  }
  location ^~ /images/ {
    # 匹配任何以 /images/ 开头的任何查询并且停止搜索。
# 任何正则表达式将不会被测试。
    [ configuration C ]
  }
  location ~* .(gif|jpg|jpeg)$ {
# 匹配任何以 gif、jpg 或 jpeg 结尾的请求。
# 然而所有 /images/ 目录的请求将使用 Configuration C。
   [ configuration D ]
  }
这里你还要对正则表达式有一定的了解!!!

1.4 nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、weight
指定轮询机率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加
proxy_pass http://backserver/ ;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

(二):安装Tomcat+配置memcached实现session共享
2.1 Tomcat要支持memcached管理Session,需要调用一些jar库文件:见附件。
安装memcached
Memcached官网:http://memcached.org/
安装memcached需要先安装libevent,libevent官网:http://libevent.org/
本次安装版本:(附件中提供的版本为memcached-1.4.24.tar.gz和libevent-2.0.20-stable.tar.gz)
memcached-1.4.20.tar.gz
libevent-2.0.21-stable.tar.gz
2.1安装livevent
查看是否已安装:# rpm qa ” grep libevent
如果已安装且版本低于1.3,则先通过:

rpm -e libevent –nodeps 进行卸载。

tar zxvf libevent-2.0.20-stable.tar.gz

cd libevent-2.0.20-stable

sudo ./configure –prefix=/usr/local/libevent-2.0.20-stable #prefix指定安装路径

sudo make

sudo make install

安装完成后,到prefix指定的目录下,看看是否存在libevent-2.0.20-stable目录,如下图所示。

2.2安装Memcached

tar zxvf memcached-1.4.20.tar.gz

cd memcached-1.4.20

sudo ./configure –prefix=/usr/local/memcached-1.4.24 –with-libevent=/usr/local/libevent-2.0.20-stable

sudo make

sudo make install

2.2.1检查看装情况
安装完成后,到prefix指定的目录下查看是否有memcached-1.4.20目录,如下图所示。

2.2.2查看memcached和libevent版本信息
首先定位到Memcached的bin目录下:

cd /usr/local/memcached-1.4.24/bin

执行命令:

sudo ./memcached -i

2.2.3启动memcached

sudo /usr/local/memcached-1.4.24/bin/memcached -d -v -p 12000 -m 125 -u cc

解释:-d表示以守护进程方式运行memcached;-v表示输出浸膏和错误信息;-p指定监听的端口号;-m指定能使用的最大内存,单位MB;-u指定运行memcached的账户,非root用户。
使用# ps -ef ” grep memcached查看进程。

关注基本选项: 说明
-p 监听的TCP端口 (缺省: 11211)
-d 以守护进程方式运行memcached
-u 运行memcached的账户,非root用户
-m 最大的内存使用,单位是MB,缺省是 64 MB
-c 软连接数量,缺省是1024(最大并发连接数)
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印memcached和libevent的版权信息

2.2 为Tomcat配置memcached
配置文件目录:tomcat\conf\context.xml
修改每台tomcat的conf目录下得context.xml文件或者server.xml文件,在其中加入如下任意一段代码(注意:当使用多台tomcat时,一定要使用non-sticky模式):
A:使用默认的sticky session,kryo序列化方式,memcached缓存
1.
2. …
3.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章