linux下apache+tomcat集群详细配置

linux下apache+tomcat集群详细配置,第1张

环境:

操作系统均为:CentOS 51

Apache2X服务器一台:IP地址1921682324;安装路径/usr/local/apache;

Tomcat6服务器一台:IP地址1921682325;安装路径/usr/local/tomcat;

Tomcat6服务器一台:IP地址1921682326;安装路径/usr/local/tomcat;

配置:

Apache安装:

#/configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite

注释:激活tomcat集群需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。enable-proxy-ftp可以不编译。

#make;make install

制作Apache启动项:

#cp support/apachectl /etc/rcd/initd/httpd

#vi /etc/rcd/initd/httpd

添加以下内容:(包括#号)

# Startup script for the Apache Web Server

# chkconfig: 2345 85 15

# description: Apache is a World Wide Web server It is used to server

# HTML files and CGI

# processname: httpd

# pidfile: /usr/local/apache/log/httpdpid

# config: /usr/local/apache/conf/httpdconf

增加服务项

#chkconfig --add httpd

#chmod 755 /etc/rcd/initd/httpd

#chkconfig --level 345 httpd on

JDK安装:

#chmod a+x jdk-6u4-linux-i586-rpmbin

#/jdk-6u4-linux-i586-rpmbin

JAVA环境变量设置:

#vi /etc/profile

文件最后添加以下内容:

JAVA_HOME=/usr/java/jdk160_04

CLASSPATH=:$JAVA_HOME/lib/toolsjar:$JAVA_HOME/lib/dtjar

PATH=$JAVA_HOME/bin:$PATH

CATALINA_HOME=/usr/local/tomcat

export JAVA_HOME CLASSPATH PATH CATALINA_HOME

执行如下命令使环境变量生效:

source /etc/profile

测试配置是否成功:

java –version

Tomcat安装:

#wget [url]http://apachemirrorphpchinacom/tomcat/tomcat-6/v6016/bin/apache-tomcat-6016targz[/url]

#tar zxvf apache-tomcat-6016targz

#mv apache-tomcat-6016 /usr/local/tomcat

Tomcat随机启动:

#vi /etc/rclocal

添加以下内容:

/usr/local/tomcat/bin/startupsh

tomcat6配置文件serverxml:

<!-- You should set jvmRoute to support load-balancing via AJP ie :

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">

-->

<Engine name="Catalina" defaultHost="localhost">

改成

<!-- You should set jvmRoute to support load-balancing via AJP ie :

-->

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcatX">

<!--

<Engine name="Catalina" defaultHost="localhost">

-->

说明:

第一台tomcat就把jvmRoute="tomcat1"

第二台tomcat就把jvmRoute="tomcat2"

<!--

<Cluster className="orgapachecatalinahatcpSimpleTcpCluster"/>

-->

去掉注释变为

<Cluster className="orgapachecatalinahatcpSimpleTcpCluster"/>

群集详细配置

<Cluster className="orgapachecatalinahatcpSimpleTcpCluster"

channelSendOptions="8">

<Manager className="orgapachecatalinahasessionDeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

<Channel className="orgapachecatalinatribesgroupGroupChannel">

<Membership className="orgapachecatalinatribesmembershipMcastService"

address="228004"

port="45564"

frequency="500"

dropTime="3000"/>

<Receiver className="orgapachecatalinatribestransportnioNioReceiver"

address="auto"

port="4000"

autoBind="100"

selectorTimeout="5000"

maxThreads="6"/>

<Sender className="orgapachecatalinatribestransportReplicationTransmitter">

<Transport className="orgapachecatalinatribestransportnioPooledParallelSender"/>

</Sender>

<Interceptor className="orgapachecatalinatribesgroupinterceptorsTcpFailureDetector"/>

<Interceptor className="orgapachecatalinatribesgroupinterceptorsMessageDispatch15Interceptor"/>

</Channel>

<Valve className="orgapachecatalinahatcpReplicationValve"

filter=""/>

<Valve className="orgapachecatalinahasessionJvmRouteBinderValve"/>

<Deployer className="orgapachecatalinahadeployFarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListener className="orgapachecatalinahasessionJvmRouteSessionIDBinderListener"/>

<ClusterListener className="orgapachecatalinahasessionClusterSessionListener"/>

</Cluster>

配置应用的webxml:

在每个webapps应用中,修改配置文件webxml文件 添加元素<distributable/>

在webxml文件中<web-app>元素下增加以下内容:

<!--此应用将与群集服务器复制Session-->

<distributable/>

具体修改如下:

修改前:

<xml version="10" encoding="ISO-8859-1">

<web-app xmlns="[url]http://javasuncom/xml/ns/javaee[/url]"

xmlns:xsi="http://wwww3org/2001/XMLSchema-instance"

xsi:schemaLocation="http://javasuncom/xml/ns/javaee [url]http://javasuncom/xml/ns/javaee/web-app_2_5xsd[/url]"

version="25">

</web-app>

修改后:

<xml version="10" encoding="ISO-8859-1">

<web-app xmlns="[url]http://javasuncom/xml/ns/javaee[/url]"

xmlns:xsi="http://wwww3org/2001/XMLSchema-instance"

xsi:schemaLocation="http://javasuncom/xml/ns/javaee [url]http://javasuncom/xml/ns/javaee/web-app_2_5xsd[/url]"

version="25">

<!--此应用将与群集服务器复制Session-->

<distributable/>

</web-app>

配置apache的ajp负载均衡功能:

确保将以下Module的注释去掉

LoadModule proxy_module modules/mod_proxyso

LoadModule proxy_connect_module modules/mod_proxy_connectso

LoadModule proxy_ftp_module modules/mod_proxy_ftpso

LoadModule proxy_http_module modules/mod_proxy_httpso

LoadModule proxy_ajp_module modules/mod_proxy_ajpso

LoadModule proxy_balancer_module modules/mod_proxy_balancerso

LoadModule status_module modules/mod_statusso

增加以下内容:

# Proxypass Config

Include conf/extra/httpd-modproxyconf

建立文件httpd-modproxyconf输入内容:

<Location /server-status>

SetHandler server-status

Order Deny,Allow

Deny from all

Allow from all

</Location>

<Location /balancer-manager>

SetHandler balancer-manager

Order Deny,Allow

Deny from all

Allow from all

</Location>

ProxyRequests Off

ProxyPass / balancer://tomcatcluster stickysession=jsessionid nofailover=On

<Proxy balancer://tomcatcluster>

BalancerMember [url]http://1921682325:8080[/url] loadfactor=1

BalancerMember [url]http://1921682326:8080[/url] loadfactor=2

</Proxy>

注释:

ProxyRequests Off 表示启用反向代理,必须开启;

ProxyPass为代理转发的Url,即将所有访问/的请求转发到群集balancer://tomcatcluster,这里为/即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录;

BalancerMember为群集的成员,即群集服务器1或2,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember;

调试负载均衡集群系统:

访问apache服务器的web服务:[url]http://1921682324/balancer-manager[/url]

如果显示负载均衡有关信息则说明成功了,接着可以访问[url]http://1921682324/[/url]即访问到了tomcat的应用

必须先启动Tomcat服务再启动Apache服务!

参考文档:

[url]http://tomcatapacheorg/tomcat-60-doc/cluster-howtohtml[/url]

[url]http://tomcatapacheorg/tomcat-60-doc/balancer-howtohtml[/url]

[url]http://manchinaunixnet/newsoft/ApacheMenual_CN_22new/mod/mod_proxyhtml[/url]

[url]http://manchinaunixnet/newsoft/ApacheMenual_CN_22new/mod/mod_proxy_balancerhtml[/url]

你需要做web还是什么。 j2ee的话,我用过的MVC框架很多 前端展示:JSP(HTML+CSS+Js(jquery)) 后端:Struts2/1 + spring + ibatis/Hibernate/mybatis 这个目前相对比较流行。 hibernate对数据库兼容性最好。 ibatis/mybatis更容易上手。

环境配置:

虚拟机:

vmware workstation 12

系统:

ubuntu 1604 LTS(推荐使用原版,不要用kylin)

节点:                192168159132    master                192168159134    node1                192168159137    node2

jdk-8u101-Linux-x64gz (Java )hadoop-273targz (Hadoop 包)

安装步骤:

1、安装虚拟机系统,并进行准备工作(可安装一个然后克隆)

2修改各个虚拟机的hostname和host

3创建用户组和用户

4、配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以通过相互ping通。

5安装jdk和配置环境变量,检查是否配置成功

6、配置ssh,实现节点间的无密码登录 ssh node1/2指令验证时候成功

7、master配置hadoop,并将hadoop文件传输到node节点

8、配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功。

1安装虚拟机

在VM上安装下载好的Ubuntu的系统,具体过程自行百度。可以安装完一个以后克隆,但是本人安装过程中遇到很多问题,经常需要删除虚拟机,重新安装,而被克隆的虚拟机不能删除,所以本人就用了很长时候,一个一个安装。

一共3台虚拟机:分配情况和IP地址如下:

(注:查看ip地址的指令   ifconfig)

安装虚拟机时可以设置静态IP,因为过程中常常遇到网络连接问题,ifconfig找不到IPV4地址。当然,也可以不设,默认分配。

192168159132    master                192168159134    node1                192168159137    node2

2修改虚拟机的hostname和hosts文件

以master上机器为例,打开终端,执行如下的操作,把hostname修改成master,hosts修改成如下所示的样子:

#修改hostname的指令:sudo gedit /etc/hostname

#修改hosts指令:sudo gedit /etc/hosts

#将以下内容添加到hosts中192168159132    master192168159134    node1192168159137    node2

如下图所示:

同样地,在node1和node2机器上做相似的操作,分别更改主机名为node1和node2,然后把hosts文件更改和master一样。

3创建用户和用户组(三台机器上都要操作)

1 创建hadoop用户组

sudo addgroup hadoop

2 创建hadoop用户

sudo adduser -ingroup hadoop hadoop

3 给hadoop用户添加权限,打开/etc/sudoers文件

sudo gedit /etc/sudoers

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限

在root  ALL=(ALL:ALL)  ALL下添加hadoop  ALL=(ALL:ALL)  ALL

4检验各个主机之间能否连通

分别以刚刚创建的hadoop用户重新登录系统,以后的操作都以hadoop用户登录。

ping +主机名

分别在各个主机上执行上述指令,看是否能与其他主机连通。

出现下图代表能够连通:

如果都成功ping通,进行下面的操作。

5安装jdk和配置环境变量

分别在每台主机上安装jdk,并配置环境变量。(嫌麻烦的前面可以安装完jdk后再克隆)

1)下载jdk安装包(自行百度),并将安装包拖入到虚拟机当中

2)通过cd命令进入到安装包的当前目录,利用如下命令进行解压缩。

tar -zxvf jdk(安装包名称)

3)利用如下命令将解压后的文件夹移到/usr目录下 

#注意,这样移动到/usr以后就没有jdk18这个目录了,是将这个目录下的所有文件全部移动到/usr/java下,mv jdk18(文件夹名称) /usr/java

4)配置环境变量

sudo gedit /etc/profile

在末尾加上四行:

[plain] view plain copy print

#java    

export JAVA_HOME=/usr/java   

export JRE_HOME=/usr/java/jre    

export CLASSPATH=$JAVA_HOME/lib    

export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin  

输入如下命令使配置生效:source /etc/profile

查看配置是否成功,

出现如上信息说明java配置成功。

6配置SSH,实现节点间的无密码登录

本人在这一步经常出错,莫名其妙的错误,网上也找不到资料。需要自己多实验几次。

下面的 123在所有主机上都要做

1安装ssh

[plain] view plain copy print

sudo apt-get install openssh-server  

已有ssh或者安装成功了的输入命令

[plain] view plain copy print

ps -e | grep ssh  

验证SSH是否成功安装输入

[plain] view plain copy print

ssh localhost  

出现以下提示说明安装成功

3生成密钥Pair

ssh-keygen -t rsa

输入之后一直选择enter即可。生成的秘钥位于 ~/ssh文件夹下。可用cd 命令进入查看。

4在master上,导入authorized_keys

cat ~/ssh/id_dsapub >> ~/ssh/authorized_keys

5远程无密码登录(把master上的authorized_keys拷贝到其他主机的相应目录下)

#进入master的ssh目录,执行复制操作

scp authorized_keys hadoop@node1:~/ssh/

scp authorized_keys hadoop@node2:~/ssh/

修改各台主机上authorized_keys文件的权限:

所有机器上,均执行命令:

chmod 600 ssh/authorized_keys

完成之后,在master上执行下面操作,检查免密码登录是否成功。

ssh node1(node2)

7master配置hadoop,然后将master的hadoop文件传送给node节点

1)解包移动

[plain] view plain copy print

#解压hadoop包  

tar -zxvf hadoop  

#将安装包移到/usr目录下  

mv hadoop /usr/hadoop  

2)新建文件夹

[plain] view plain copy print

#在/usr/hadoop目录下新建如下目录(root)  

mkdir /dfs  

mkdir /dfs/name  

mkdir /dfs/data  

mkdir /tmp  

3)配置文件:hadoop-envsh(文件都在/usr/hadoop/etc/hadoop中)

修改JAVA_HOME值(export JAVA_HOME=/usr/java) 

4)配置文件:yarn-envsh

修改JAVA_HOME值(export JAVA_HOME=/usr/java)

5)配置文件:slaves

将内容修改为:

node1

node2

6)配置文件:core-sitexml

[html] view plain copy print

<configuration>  

<property>  

<name>fsdefaultFS</name>  

<value>hdfs://master:9000</value>  

</property>  

<property>  

<name>iofilebuffersize</name>  

<value>131072</value>  

</property>  

<property>  

<name>hadooptmpdir</name>  

<value>file:/usr/hadoop/tmp</value>  

<description>Abase for other temporary   directories</description>  

</property>  

</configuration>  

7)配置文件:hdfs-sitexml

[html] view plain copy print

<configuration>  

<property>  

<name>dfsnamenodesecondaryhttp-address</name>  

<value>master:9001</value>  

</property>  

<property>  

<name>dfsnamenodenamedir</name>  

<value>file:/usr/hadoop/dfs/name</value>  

</property>  

<property>  

<name>dfsdatanodedatadir</name>  

<value>file:/usr/hadoop/dfs/data</value>  

</property>  

<property>  

<name>dfsreplication</name>  

<value>2</value>  

</property>  

<property>  

<name>dfswebhdfsenabled</name>  

<value>true</value>  

</property>  

</configuration>  

8)配置文件:mapred-sitexml

先创建然后编辑

cp etc/hadoop/mapred-sitexmltemplate etc/hadoop/mapred-sitexml

gedit etc/hadoop/mapred-sitexml

[html] view plain copy print

<configuration>  

<property>                                                                    

<name>mapreduceframeworkname</name>  

<value>yarn</value>  

</property>  

<property>  

<name>mapreducejobhistoryaddress</name>  

<value>master:10020</value>  

</property>  

<property>  

<name>mapreducejobhistorywebappaddress</name>  

<value>master:19888</value>  

</property>  

</configuration>  

9)配置文件:yarn-sitexml

[html] view plain copy print

<configuration>  

<property>  

<name>yarnnodemanageraux-services</name>  

<value>mapreduce_shuffle</value>  

</property>  

<property>                                                                  

<name>yarnnodemanageraux-servicesmapreduceshuffleclass</name>  

<value>orgapachehadoopmapredShuffleHandler</value>  

</property>  

<property>  

<name>yarnresourcemanageraddress</name>  

<value>master:8032</value>  

</property>  

<property>  

<name>yarnresourcemanagerscheduleraddress</name>  

<value>master:8030</value>  

</property>  

<property>  

<name>yarnresourcemanagerresource-trackeraddress</name>  

<value>master:8031</value>  

</property>  

<property>  

<name>yarnresourcemanageradminaddress</name>  

<value>master:8033</value>  

</property>  

<property>  

<name>yarnresourcemanagerwebappaddress</name>  

<value>master:8088</value>  

</property>  

</configuration>  

10)将hadoop传输到node1和node2 usr/hadoop目录,(如果传输时报错说 :权限拒绝,先把文件传送到非/usr目录下,然后在node上把这个文件再移动到/usr/hadoop)

scp -r /usr/hadoop hadoop@node1:/usr/hadoop

7、配置环境变量,并启动hadoop,检查是否安装成功

1)配置环境变量

#编辑/etc/profilesudo gedit /etc/profile#以上已经添加过java的环境变量,在后边添加就可以#hadoop  export HADOOP_HOME=/opt/Hadoop/hadoop-272  export PATH=$PATH:$HADOOP_HOME/sbin  export PATH=$PATH:$HADOOP_HOME/bin  

执行 

source /etc/profile

使文件生效。

2)启动hadoop,进入hadoop安装目录

bin/hdfs namenode -format

sbin/start-allsh

3)启动后分别在master, node下输入jps查看进程

看到下面的结果,则表示成功。

Master:

node:

8向hadoop集群系统提交第一个mapreduce任务(wordcount)

进入本地hadoop目录(/usr/hadoop)

1、  bin/hdfs dfs -mkdir -p /data/input在虚拟分布式文件系统上创建一个测试目录/data/input

2、  hdfs dfs -put READMEtxt  /data/input  将当前目录下的READMEtxt 文件复制到虚拟分布式文件系统中

3、  bin/hdfs dfs-ls /data/input    查看文件系统中是否存在我们所复制的文件

如图操作:

3、  运行如下命令向hadoop提交单词统计任务

进入jar文件目录,执行下面的指令。

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-273jar wordcount /data/input /data/output/result

查看result,结果在result下面的part-r-00000中

hdfs dfs -cat /data/output/result/part-r-00000

自此,hadoop集群搭建成功!

nginx+vsftp搭建服务器

前言:

在分布式架构中,往往会有多个tomcat,然后你上传的只是在其中的某一个tomcat,你访问时是由集群的tomcat随机提供服务。当你访问的tomcat是有的那个时,能正常显示,如果恰巧是那个没有的tomcat时,就不能正常显示。这就完成了访问同一个,可能你刷新一次可以访问,再刷新一次就访问不到了。这时,我们就需要一个服务器用来专门存储,一般我们都用nginx。

1、nginx+vsftp:

上面分别介绍了nginx和vsftp,那么这两个东西怎么组合起来用呢?怎么实现这个服务器呢?我们知道,tomcat安装好启动后,在浏览器输入localhost:8080,就会出现tomcat的欢迎页,nginx也一样。比如linux的ip是19216850122,那么启动nginx后,在浏览器访问这个地址也会出现nginx的欢迎页,其实是因为它有个默认的访问页面,完整的地址应该是19216850122/indexhtml,那么我们就可以根据这个,把它默认的访问页面改成我们上传的的保存路径,比如上传了一张picjpg到linux的/home/ftpuser/images中,如果我们把默认访问页面改成/home/ftpuser,那么在浏览器中输入19216850122/images/picjpg,就可以访问到这张了。下面就来介绍nginx、vsftp的安装以及配置。

<meta charset="utf-8">

1、安装:

2、添加ftp用户:

3、给ftp用户添加密码:

输入两次密码后修改密码。

4、修改selinux:

①查看状态:

执行这个命令可以看到

这两个都off,执行如下命令设置为on:

再次执行 getsebool -a | grep ftp 看到那两个状态是on就行了。

5、关闭匿名访问:

执行

命令:

还要在vsftpconf文件最下面添加以下内容:

然后保存退出即可。

6、设置开机启动:

7、测试:

打开filezilla工具,输入虚拟机的ip,21端口,用户名和密码,点击快速连接,连接vsftp服务:

如图所示则连接成功。

<meta charset="utf-8">

按照以上步骤安装好nginx和vsftp后,还是不能访问上传的的,需要进行如下配置:

执行

命令,打开nginx的配置文件:

按道理这样就可以了,但是我访问却报错:

403 forbidden ,最后发现是因为ftpuser文件夹没有可读权限,执行如下命令:

再次访问即可成功!

至此服务器搭建完成!至于在Java中如何使用这个服务器,请参考 Java实现把上传到服务器 。

在搭建的过程中,遇到很多坑,因为我参考的教程是centos 6,防火墙是iptables,而centos 7是firewall,

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux下apache+tomcat集群详细配置

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情