CentOS 7.2 mini 安装 tomcat 8.5.20 + httpd 2.4.6 + mod_jk 1.2.12 负载均衡和 session 复制
2017-08-22 00:00
477 查看
3台服务器环境
192.168.56.41 tomcat-1 安装tomcat,和tomcat-2 session 复制
192.168.56.42 tomcat-2 安装tomcat,和tomcat-1 session 复制
192.168.56.43 httpd-3 安装 apache httpd 和 mod_jd 执行负载均衡
一 安装 jdk (在 tomcat-1、tomcat-2 两台服务器上)
1 安装openjdk 1.8的jre和jdk
安装后的jre和jdk在 /usr/lib/jvm/ 里,本例中具体的文件夹是java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
2 在 /etc/profile文件 或者 /etc/profile.d/文件夹中新建 java.sh 文件,这里使用新建文件的方式,在文件中加入以下内容
3 让环境变量立即生效
4 检验版本
二 安装 tomcat (在 tomcat-1、tomcat-2 两台服务器上)
1 前往 http://tomcat.apache.org/download-80.cgi 下载tomcat8.5.20的压缩文件
192.168.56.41 tomcat-1 安装tomcat,和tomcat-2 session 复制
192.168.56.42 tomcat-2 安装tomcat,和tomcat-1 session 复制
192.168.56.43 httpd-3 安装 apache httpd 和 mod_jd 执行负载均衡
一 安装 jdk (在 tomcat-1、tomcat-2 两台服务器上)
1 安装openjdk 1.8的jre和jdk
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
安装后的jre和jdk在 /usr/lib/jvm/ 里,本例中具体的文件夹是java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
2 在 /etc/profile文件 或者 /etc/profile.d/文件夹中新建 java.sh 文件,这里使用新建文件的方式,在文件中加入以下内容
vi /etc/profile.d/java.sh
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64 JRE_HOME=$JAVA_HOME/jre CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASSPATH PATH
3 让环境变量立即生效
source /etc/profile
4 检验版本
java -version
二 安装 tomcat (在 tomcat-1、tomcat-2 两台服务器上)
1 前往 http://tomcat.apache.org/download-80.cgi 下载tomcat8.5.20的压缩文件
curl -O http://apache.fayea.com/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz[/code] 2 解压下载的压缩文件 apache-tomcat-8.5.20.tar.gztar -zxvf apache-tomcat-8.5.20.tar.gz
3 新建 /usr/local/tomcat 文件夹,并将解压的文件移动到 /usr/local/tomcat 下mkdir /usr/local/tomcat mv apache-tomcat-8.5.20 /usr/local/tomcat/apache-tomcat-8.5.20
4 在 /etc/profile.d/ 文件夹中新建tomcat的配置文件vi /etc/profile.d/tomcat.shCATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.20 CATALINA_BASE=$CATALINA_HOME PATH=$PATH:$CATALINA_BASE/bin export PATH CATALINA_HOME CATALINA_BASE
5 让环境变量立即生效source /etc/profile
6 为tomcat添加systemd unit服务启动文件,之后就能通过systemctl命令控制vi /etc/systemd/system/tomcat.service[Unit] Description=Tomcat 8.5.20 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/tomcat/apache-tomcat-8.5.20/tomcat.pid ExecStart=/usr/local/tomcat/apache-tomcat-8.5.20/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/usr/local/tomcat/apache-tomcat-8.5.20/bin/shutdown.sh PrivateTmp=true [Install] WantedBy=multi-user.target
7 开启tomcat的防火墙端口firewall-cmd --permanent --zone=public --add-port=8080/tcp firewall-cmd --permanent --zone=public --add-port=8009/tcp firewall-cmd --reload
三 为 tomcat 配置 apr 连接处理器, apr 是 tomcat 三个处理器 (bio、nio、apr)中支撑高并发和异步处理性能最好的 (在 tomcat-1、tomcat-2 两台服务器上)
1 下载编译安装 apr,为之后的 tomcat-native 编译安装及运行提供环境
1.1 安装 libtool ,避免安装的时候出现错误 grep: /usr/local/src/apr-1.6.2/libtool: No such file or directory 或者 make[1]: *** [libapr-1.la] Error 1 以及 make: *** [all-recursive] Error 1yum install -y gcc libtool
1.2 下载并编译安装aprcurl -O http://apache.fayea.com//apr/apr-1.6.2.tar.gz tar -zxvf apr-1.6.2.tar.gz cd apr-1.6.2
1.3 修改 configure 配置文件 中的 $RM "$cfgfile" 改为 $RM -f "$cfgfile" ,也可以忽略该错误,我在编译的时候也可以顺利编译通过,没有出现error,但不知道会对后续产生影响不,否则报错 rm: cannot remove 'libtoolT': No such file or directoryvi configure
1.4 执行编译./configure make make install
(安装后文件会自动生成在 /usr/local/apr文件夹下,库文件生产在 /usr/local/apr/lib 下)
2 下载编译安装高版本的 openssl,为之后的 tomcat-native 编译安装及运行提供环境
CentOS 7.2 mini 中默认的 openssl 版本是 1.0.1e,无法完成 tomcat 8.5.20 中自带的 tomcat-native 1.2.12的编译。最新的openssl提供了1.0.2和1.1.0两个系列版本,1.0.2使用多而且是长期支持版本,该版本编译后的文件默认存放在 /usr/local/ssl下,1.1.0系列编译后产生的头文件在/usr/local下、库文件在/usr/local/ssl下,本例使用1.0.2。还有一点需要注意,网上很多文章说使用yum remove openssl openssl-devel删除系统中的旧版本,不过会连带删除很多基础库,所以风险更大,不推荐使用,这里使用安装新版和改变旧版本名称连接的方式解决。
2.1 安装编译 openssl 时需要的 perl 和 zlib-devel (不安装 zlib-devel 会在编译 openssl 时加 zlib 参数出现错误 c_zlib.c:25:19: fatal error: zlib.h: No such file or directory)yum -y install perl zlib-devel
2.2 下载并编译安装openssl 1.0.2lcurl -O https://www.openssl.org/source/openssl-1.0.2l.tar.gz tar -zxvf openssl-1.0.2l.tar.gz cd openssl-1.0.2l ./config shared zlib (如果是 1.1.0系列一定要加 -fPIC 参数,否则在编译 tomcat-native 时会出现如下错误)
--------------如果不加 -fPIC,在编译 tomcat-native的时候因为 openssl 会出现以下错误 -------------
/usr/local/openssl/lib/libssl.a(s3_meth.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with –fPIC
/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[1]: *** [libtcnative-1.la] Error 1
make[1]: Leaving directory `/usr/local/tomcat-native-1.2.8-src/native'
make: *** [all-recursive] Error 1
---------------------------------------------------------------------------------------------------------make make install
2.3 升级系统环境为高版本mv /usr/bin/openssl /usr/bin/openssl.bak (备份原来的) ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl (建立软连接) ln -s /usr/local/ssl/include/openssl /usr/include/openssl echo "/usr/local/ssl/lib">>/etc/ld.so.conf (设置到运行库)
3 编译安装tomcat-native,tomcat-native的源码文件在安装的tomcat中 /usr/local/tomcat/apache-tomcat-8.5.20/bin/tomcat-native.tar.gz 位置cd /usr/local/tomcat/apache-tomcat-8.5.20/bin/
tar -xzvf tomcat-native.tar.gz
cd tomcat-native-1.2.12-src/native
./configure --with-apr=/usr/local/apr/ \
--with-java-home=$JAVA_HOME \
--with-ssl=/usr/local/ssl/ \
--prefix=$CATALINA_HOME
make make install
(编译后的库会放在 $CATALINA_HOME/lib 下)
4 在 /usr/local/tomcat/apache-tomcat-8.5.20/bin 下新建 setenv.sh 环境文件,该文件是tomcat的默认启动配置文件 catalina.sh 在启动时加载的一个由用户自己创建和添加环境配置信息的环境配置文件vi /usr/local/tomcat/apache-tomcat-8.5.20/bin/setenv.shLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib LD_RUN_PATH=$LD_RUN_PATH:$CATALINA_HOME/lib export LD_LIBRARY_PATH LD_RUN_PATH CATALINA_PID="$CATALINA_BASE/tomcat.pid" CATALINA_OPTS="-server -Xms256m -Xmx800m -XX:+HeapDumpOnOutOfMemoryError -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -noclassgc -verbose:gc"
四 启动并检查tomcat是否正常加载apr (本人手动编译的 tomcat 一直都没有办法让其自动将监听改变为apr,只能通过手动完成,如有大神留言指导感激不尽) (在 tomcat-1、tomcat-2 两台服务器上)
1 启动查看 tomcat 目录下的日志文件,yum安装在 /usr/share/tomcat/logs/catalina.日期.log,源码安装在/usr/local/tomcat/apache-tomcat/apache-tomcat-8.5.20/catalina.日期.log,如果显示以下内容,表明正常使用aprsystemctl start tomcat cat /usr/local/tomcat/apache-tomcat-8.5.20/logs/catalina.日期.log文件Feb 8, 2015 12:27:41 PM org.apache.catalina.core.AprLifecycleListener init INFO: Loaded APR based Apache Tomcat Native library 1.x.y. Feb 8, 2015 12:27:41 PM org.apache.catalina.core.AprLifecycleListener init INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. Feb 8, 2015 12:27:41 PM org.apache.coyote.http11.Http11AprProtocol init INFO: Initializing Coyote HTTP/1.1 on http-8080
显示以上内容标明 apr 运行正常,如果内容中还包括以下内容,表明 tomcat 自动将监听改为 apr ,Initializing ProtocolHandler ["http-apr-8080"] Initializing ProtocolHandler ["ajp-apr-8009"] Starting ProtocolHandler ["http-apr-8080"] Starting ProtocolHandler ["ajp-apr-8009"]
如果没有以上内容,需要在tomcat的server.xml配置文件中修改监听为apr,位置在 $CATALIINA_HOME/conf/server.xml
将<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改为<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />
2 设置tomcat自启动systemctl enable tomcat
五 配置 tomcat 集群和 session 复制 (在 tomcat-1、tomcat-2 两台服务器上)
1 设置服务器NTP时间同步
1.1 安装 ntp 设置服务器时间同步yum install -y ntp
1.2 启用同步配置timedatectl set-ntp yes
1.3 设置同步服务自启动并启动服务systemctl enable ntpd systemctl start ntpd
1.4 验证ntpq -c peers
2 向tomcat server.xml配置文件中加入集群和session复制配置vi $CATALINA_HOME/conf/server.xml<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
3 打开防火墙45564 、 4000两个配置文件的端口firewall-cmd --permanent --zone=public --add-port=45564/tcp firewall-cmd --permanent --zone=public --add-port=4000/tcp firewall-cmd --reload
六 安装 apache httpd 2.4.6,CentOS 7.2 mini 默认yum是这个版本 (在 httpd-3 服务器上)
1 yum 安装 httpdyum install httpd httpd-devel -y
2 打开防火墙80端口firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload
3 默认安装路径如下
配置文件在/etc/httpd/conf/httpd.conf
静态网页存放路径在 /var/www/html 文件夹下
程序主目录在/usr/share/httpd/
httpd的module文件夹在/usr/lib64/httpd/modules/
4.设置httpd自启动systemctl enable httpd
七.下载并编译安装 tomcat connector (mod_jk) (在 httpd-3 服务器上)
1 安装 gcc 进行编译、安装 libtool 对生成的 lib 进行拷贝等操作yum install -y gcc libtool
2 下载编译curl -O http://apache.fayea.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz tar -zxvf tomcat-connectors-1.2.42-src.tar.gz cd tomcat-connectors-1.2.42-src/native
编译的时候需要httpd开发包中的apxs文件夹进行编译,这个文件夹是在安装httpd-devel后生成的,位置在/usr/bin/apxs./configure --with-apxs=/usr/bin/apxs
make make install
libtool --finish /usr/lib64/httpd/modules
八 在apache httpd 中配置 mod_jk (在 httpd-3 服务器上)
1 在 httpd 的 conf.d 文件夹下添加 mod_jk 的配置信息,该文件夹下的文件会在httpd启动时自动加载vi /etc/httpd/conf.d/mod_jk.confLoadModule jk_module modules/mod_jk.so <IfModule jk_module> JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties </IfModule>
2 在httpd的conf文件夹下添加 workers.properties 和 uriworkermap.properties文件vi /etc/httpd/conf/workers.propertiesworker.list=controller worker.tomcat-1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat-1.host=192.168.56.41 #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat-1.type=ajp13 worker.tomcat-1.lbfactor=1 #server的加权比重,值越高,分得的请求越多 worker.tomcat-2.port=8009 worker.tomcat-2.host=192.168.56.42 worker.tomcat-2.type=ajp13 worker.tomcat-2.lbfactor=1 worker.controller.type=lb #定义负载均衡控制器 worker.controller.balanced_workers=tomcat-1,tomcat-2 #指定此负载平衡器负责的Tomcat应用节点。 worker.controller.sticky_session=false #此处指定集群是否需要会话复制,false 复制,true 当某用户的请求第一次分发到哪台就一直在哪台vi /etc/httpd/conf/uriworkermap.properties/*=controller /jkstatus=status #!/*.gif=controller #!/*.jpg=controller #!/*.png=controller #!/*.css=controller #!/*.js=controller #!/*.htm=controller #!/*.html=controller
3 设置 httpd 自动启动并启动systemctl enable httpd
4 降低安全审核机制vi /etc/selinux/config
修改文件中的 SELINUX=permissivereboot
九 最后需要在部署的网站 web.xml文件中添加 <distributable/> 标签
十 些可参考的内容
1.查找软件包安装位置的命令rpm -ql 软件名称
2.使用云更新软件yum update 软件名称
3.比较全的yum源 epel-release
最新版查找地址 https://mirrors.tuna.tsinghua.edu.cn/epel//7/x86_64/e/ 下载安装 curl -O https://mirrors.tuna.tsinghua.edu.cn/epel//7/x86_64/e/epel-release-7-10.noarch.rpm (编写文章时最新版本为epel-release-7-10.noarch.rpm)
rpm -ivh epel-release-7-10.noarch.rpm
yum clean all
yum update
查看源的命令yum repolist
4.设置环境变量的三种方法
4.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】vi /etc/profileexport CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib export CLASSPATH
改文件后马上生效的命令source /etc/profile
4.2 编辑用户的默认配置文件 .bashrcvi /home/guok/.bash.profileexport CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib export CLASSPATH
改文件后马上生效的命令source /home/guok/.bash_profile
4.3 临时加入环境变量【只对当前shell(BASH)有效(临时的)】export 变量名=变量值
4.4 查看yum软件的版本信息yum info 软件名称
5.tomcat在启动时,如果环境变量(window path 和 LD_LIBRARY_PATH unix\linux)含有tomcat本地库,将使用APR/native连接器。 如果环境变量不存在将使用 非阻塞的java NIO连接器。 APR/native连接器 和 非阻塞的java NIO连接器 配置参数是不一样的。建议: 在生产环境中配置一个固定的连接器,不使用自动配置。
6. 注意环境变量设置的先后顺序很重要,在/etc/profile.d文件夹下的文件也一样,千万别让应该先声明变量的文件名排在后边,否则需要的变量无法声明会引起很多问题。
7 编译安装tomcat自带的启动工具jsvc (但暂时不知道有什么用)
7.1 安装编译jsvc需要的gcc和autoconfyum install -y gcc autoconf
7.2 到$CATALINA_HOME/bin下解压commons-daemon-native.tar.gz文件并编译生成jsvccd $CATALINA_HOME/bin tar xvfz commons-daemon-native.tar.gz cd commons-daemon-1.0.15-native-src/unix ./configure make cp jsvc ../.. cd ../..
7.3 可以通过以下命令启动tomcat服务并测试CATALINA_BASE=$CATALINA_HOME cd $CATALINA_HOME ./bin/jsvc \ -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \ -outfile $CATALINA_BASE/logs/catalina.out \ -errfile $CATALINA_BASE/logs/catalina.err \ -Dcatalina.home=$CATALINA_HOME \ -Dcatalina.base=$CATALINA_BASE \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \ org.apache.catalina.startup.Bootstrap
相关文章推荐
- CentOS5.3编译安装mod_jk_1.2.15_链接器_整合apache_httpd和tomcat
- CentOS5.3编译安装mod_jk_1.2.15_链接器_整合apache_httpd和tomcat
- Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
- CentOS5.3 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat
- CentOS5.3 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat
- CentOS 7下httpd-2.4.6的mod_auth_mysql安装及配置
- 实例详解tomcat组件安装+Nginx反向代理tomcat+Apache使用mod_jk和mod_proxy反向代理和负载均衡 推荐
- RedHat linux+apache+tomcat+mod_jk 负载均衡安装说明
- mod_jk方式apache+tomcat负载均衡
- 基于apache的tomcat负载均衡和集群配置(基于mod_jk.so)
- Apache+Tomcat实现负载均衡及集群(session同步)--三、动静分离(1)使用mod_jk
- centos7.2 yum 安装tomcat的问题
- CentOS7.2安装JDK + Tomcat
- Configure Apache HTTPd with Jakarta Tomcat Connector (mod_jk)
- 王高利:Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Cluster
- windows 下apahce (2.2.11版)+tomcat+mod_jk整合,url rewrite 路径重写,负载均衡基础实践
- nginx+tomcat集群负载均衡(实现session复制)
- Linux 安装tomcat-connectors-1.2.37-src.tar.gz,获取mod_jk.so。
- centos6.5源码安装和centos7.2使用yum安装httpd后,如何添加模块;以及怎么设置Cache-Control:max-age=?浏览器缓存时间
- 一、linux(centOs 7.2)安装jdk,tomcat(tar包方式)