linux下的负载均衡,安装及配置详解(例子使用centos系统)

前阵子调了linux下的负载,网上很多资料,但是不太全,自己就整理了一下,希望对大家有帮助

(这是我配置完后写的,忘记截图了,抱歉!)

从安装jkd到完成负载一步步详细道来:

linux和window下的负载都差不多,linux的负载就是在安装apache的时候繁琐了点,特别是g++安装,还有在两台机子测试的最好用同版本的tomcat


window下的apache要安装:apache_2.2.4-win32-x86-no_ssl.msi


Linux下载地址:http://www.centoscn.com/CentosSoft/

Jdk下载:这里使用rpm格式的包

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

tomcat下载:http://tomcat.apache.org/

apache下载:http://httpd.apache.org/download.cgi#apache24 

Apr和apr-util下载:http://apr.apache.org/download.cgi

Pcre下载:http://sourceforge.net/projects/pcre/files/pcre/


我使用的包:http://download.csdn.net/detail/luoruxian/7364179


Tar.gz包解压:tar –zxvf 包名

Rpm包安装:rpm -ivh 包名

 

所需要用的包都放在Desktop下


安装步骤:

1、 先安装jdk和tomcat,

打开终端

安装jdk 指令:rpm –ivh 包名

那我们可以到/usr/java  进入这个目录 看到java 文件夹 ,java文件夹里面还有一个 jdk1.0_26的文件 说明已经安装对了 

安装完成后配置环境变量了

指令:vi /etc/profile,按i进入编辑模式

在这个区域内输入以下3条命令

export JAVA_HOME=/usr/java/jdk1.7.0_02

export CLASSPATH=$JAVA_HOME/bin/dt.jar:$JAVA_HOME/bin/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

按ESC键输入:wq保存退出  q退出  q!不保存强制退出

到此jdk安装完毕。可以输入指令java –version查看

 

把tomcat解压出来指令:tar –zxvf 包名

然后复制到 /usr/local

指令:cp –r 包名 /usr/local/tomcat1

多复制一个tomcat 名为tomcat2

配置环境变量

指令:vi /etc/profile,按i进入编辑模式

在刚才的配置下面加上这2条命令

export CANALITA_HOME=/usr/local/tomcat1

export CANALITA_BASE=/usr/local/tomcat1

保存退出,可以启动tomcat测试下

进入tomcat1 指令:/usr/local/tomcat1/bin

然后启动tomcat 指令:sh startup.sh   关闭tomcat的指令:sh shutdown.sh

 

2、 当安装apache时会提示你缺少apr,所以需要安装

Apr和apr-util

解压apr和apr-util

回到桌面进入apr 指令:cd apr包名

然后输入指令:./configure --with-apr=/usr/local/apr

完成之后编译,指令:make

然后安装,指令:sudo make install

 

Apr-util的安装方法和上面一样

 

3、安装完这2个之后呢,在apache安装时又有新的提示,缺少pcre,pcre的安装需要gcc和g++。gcc在安装centos时有了,我们只需要安装g++即可,安装g++比较繁琐。首先要确保的是你的centos系统的镜像文件还在,因为在该镜像文件的packages文件夹下有我们所需要的gcc-c++安装包和安装gcc-c++的所有依赖包

依赖包如下:版本号有区别(注:如果有些实在找不到可以跳过)

kernel-headers-2.6.18-128.el5.x86_64.rpm

compat-glibc-headers-2.3.4-2.26.x86_64.rpm

compat-glibc-2.3.4-2.26.x86_64.rpm

compat-libstdc++-33-3.2.3-61.x86_64.rpm

compat-libf2c-34-3.4.6-4.x86_64.rpm

compat-libgcc-296-2.96-138.i386.rpm

cpp-4.1.2-44.el5.x86_64.rpm

glibc-headers-2.5-34.x86_64.rpm

glibc-devel-2.5-34.x86_64.rpm

libgomp-4.3.2-7.el5.x86_64.rpm

libstdc++-devel-4.1.2-44.el5.x86_64.rpm

gcc-4.1.2-44.el5.x86_64.rpm

compat-gcc-34-3.4.6-4.x86_64.rpm

compat-gcc-34-c++-3.4.6-4.x86_64.rpm

以上的依赖包要按顺序安装,安装完依赖包之后就可以安装gcc-c++包了

使用指令:rpm –ivh 包名  按顺序安装即可

 

4、 之后就可以安装pcre了

解压pcre的包 指令:tar -zxvf pcre-8.32.tar.gz

然后进入该包  指令:cd 包名

接着输入指令:./configure --enable-utf8

然后编译指令:make

安装指令: make install

 

 

 

5、 安装完pcre之后,可以安装apache了

解压apache包,然后进入该包:指令cd 解压后的包名

然后执行该指令:./configure --enable-so --enable-mods-shared=most --with-mpm=worker  

然后编译指令:make

安装指令:sudo make install

安装完成之后,启动apache

   进入apache2 指令:cd /usr/local/apache2/bin

   启动apache 指令:apachectl start       结束为stop   重启restart

这时可以打开网页,输入localhost,显示 It Works!说明apache安装成功

 

下面是负载均衡的配置

 

负载需要用到mod_jk.so 

下载:http://pan.baidu.com/share/link?shareid=3998581769&uk=34256769

解压tomcat-connectors-1.2.40-src.tar.gz包,得到tomcat-connectors-1.2.40-src

进入 指令: cd tomcat-connectors-1.2.40-src

然后进入native文件夹 指令:cd native

然后再执行该指令:./configure --with-apxs=/usr/local/apache2/bin/apxs

编译它 指令:make

使用指令ls查看文件,进入apache-2.0 指令:cd apache-2.0

查看文件,这时你会看到一个mod_jk.so文件,这就是我们所需要的了

把它复制到apache2下的modules文件夹下

指令:cp –rmod_jk.so /usr/local/apache2/modules

 

完成之后进入apache2的conf文件夹指令:cd /usr/local/apache2/conf

在该文件夹下新建2个文件名为 mod_jk.conf 和 workers.properties

指令:touchmod_jk.conf    touch workers.properties

 

进入httpd.conf文件 指令:cd /usr/local/apache2/conf       编辑: vi httpd.conf

在最后面添加这段

# JK module settings

Include conf/mod_jk.conf

保存退出


#号代表注释

Mod_jk.conf的内容如下:

 

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

 

# Where to find workers.properties( 引用 workers 配置文件 )

JkWorkersFile conf/workers.properties

 

# Where to put jk logs(log 文件路径 )

JkLogFile logs/mod_jk.log

 

# Set the jk log level[debug/error/info](log 级别 )

JkLogLevel info

 

# Select the log format(log 格式 )

JkLogStampFormat "[%a %b %d %H:%M:%S%Y] "

 

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat-ForwardDirectories

 

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

 

# Send JSPs for context / to worker namedloadBalancer(URL 转发配置,匹配的 URL 才转发到 tomcat 进行处理 )

JkMount /* controller

 


注:worker.tomcat1.port=8009这里的8009是以下配置的port


workers.properties的内容如下:


#server 列表

worker.list = controller,tomcat1,tomcat2

 

# tomcat1(ajp13  端口号,在tomcat下server.xml配置,默认8009)

worker.tomcat1.port=8009

 

#tomcat 的主机地址,如不为本机,请填写ip地址

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

 

#server 的加权比重,值越高,分得的请求越多

worker.tomcat1.lbfactor = 1

 

# tomcat2

worker.tomcat2.port=9009(因为是在同一台机子上运行2个tomcat端口都需要改)

worker.tomcat2.host=localhost(不是本机就写相应的ip)

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor = 2


# controller( 负载均衡控制器)

worker.controller.type=lb


#  指定分担请求的tomcat

worker.controller.balance_workers=tomcat1,tomcat2

worker.controller.sticky_session=true 

(注:true,apache会把同一个session的请求一直交个该session第一次请求所访问的tomcat处理,如果为false,apache就会把每次请求平分给2给tomcat处理,这样就会造成session的改变,所以必须要建立集群才行,共享session)

接下来就要配置tomcat的server.xml文件了


要实现负载均衡,如果2个tomcat都在本机上,其实tomcat的server.xml只需要改端口就可以了,不能有端口冲突,这里把tomcat2的server.XML的所有端口都改掉

(注:当然,tomcat在不同的服务器的话端口就不会冲突,也就不需要我们去改)

 

如下所示:

(默认:8005)

 

(默认:8080)

(默认:8009)

 

新建一个web项目测试,修改index.jsp文件

 

<%@ page contentType="text/html; charset=utf-8" %>

<%@ page import="java.util.*" %>

    

负载测试

    

ServerInfo:

<%

out.println(request.getLocalAddr()+ " : " + request.getLocalPort()+"
");%>

 <%

out.println("
ID " + session.getId()+"
");

// 如果有新的 Session 属性设置

StringdataName = request.getParameter("dataName");

if (dataName != null && dataName.length() > 0) {

StringdataValue = request.getParameter("dataValue");

session.setAttribute(dataName,dataValue);

 }

 out.println("Session 列表
");

System.out.println("============================");

Enumeration e =session.getAttributeNames();

while(e.hasMoreElements()) {

Stringname = (String)e.nextElement();

Stringvalue = session.getAttribute(name).toString();

 out.println( name + " = " + value+"
");

 System.out.println( name + " = " + value);

  }

 %>

"index.jsp"method="POST">

名称:text size=20 name="dataName">


值:text size=20 name="dataValue">


submit>

 

把项目部署到2个tomcat上,运行2个tomcat,然后运行apache

(注:启动顺序不要乱,如果apache已经启动了,那在启动2个tomcat之后重新启动apache就可以了)

打开网页输入:http://localhost/项目名    就可以了

 

注意了,这里不用输入端口号,因为请求先发送给apache,然后再由apache通过判断转发给tomcat的

 

好了,以上就能实现负载均衡了


再说一下就是,网上很多都是负载+集群的,但都实现不了(至少我试验了很多次都不行)

所以提醒一下大家,集群的配置除了要修改tomcat的server.xml文件外

还需要在web.xml文件添加/>标签

还有最重要的一点,session必须序列化



你可能感兴趣的:(linux下的负载均衡,安装及配置详解(例子使用centos系统))