linux下apache+tomcat集群详细配置
环境:
操作系统均为: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_keys5远程无密码登录(把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
将内容修改为:
node1node2
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/hadoop7、配置环境变量,并启动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 -formatsbin/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,
0条评论