linux tomcat 集群,nginx可以替代tomcat吗
今天给各位分享linux tomcat 集群的知识,其中也会对nginx可以替代tomcat吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
linux下apache+tomcat集群详细配置
环境:
操作系统均为:CentOS 5.1
Apache2.X服务器一台:IP地址192.168.232.4;安装路径/usr/local/apache;
Tomcat6服务器一台:IP地址192.168.232.5;安装路径/usr/local/tomcat;
Tomcat6服务器一台:IP地址192.168.232.6;安装路径/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/rc.d/init.d/httpd
#vi/etc/rc.d/init.d/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/httpd.pid
# config:/usr/local/apache/conf/httpd.conf
增加服务项
#chkconfig--add httpd
#chmod 755/etc/rc.d/init.d/httpd
#chkconfig--level 345 httpd on
JDK安装:
#chmod a+x jdk-6u4-linux-i586-rpm.bin
#./jdk-6u4-linux-i586-rpm.bin
JAVA环境变量设置:
#vi/etc/profile
在文件最后添加以下内容:
JAVA_HOME=/usr/java/jdk1.6.0_04
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
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][/url]
#tar zxvf apache-tomcat-6.0.16.tar.gz
#mv apache-tomcat-6.0.16/usr/local/tomcat
Tomcat随机启动:
#vi/etc/rc.local
添加以下内容:
/usr/local/tomcat/bin/startup.sh
tomcat6配置文件server.xml:
把
<!-- 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="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
去掉注释变为
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
***群集详细配置***
<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.MessageDispatch15Interceptor"/>
</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.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
配置应用的web.xml:
在每个webapps应用中,修改配置文件web.xml文件添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下内容:
<!--此应用将与群集服务器复制Session-->
<distributable/>
具体修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url][/url]"
xmlns:xsi=""
xsi:schemaLocation=" [url][/url]"
version="2.5">
</web-app>
修改后:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url][/url]"
xmlns:xsi=""
xsi:schemaLocation=" [url][/url]"
version="2.5">
<!--此应用将与群集服务器复制Session-->
<distributable/>
</web-app>
配置apache的ajp负载均衡功能:
确保将以下Module的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so
增加以下内容:
# Proxypass Config
Include conf/extra/httpd-modproxy.conf
建立文件httpd-modproxy.conf输入内容:
<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][/url] loadfactor=1
BalancerMember [url][/url] loadfactor=2
</Proxy>
注释:
ProxyRequests Off表示启用反向代理,必须开启;
ProxyPass为代理转发的Url,即将所有访问/的请求转发到群集balancer://tomcatcluster,这里为/即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录;
BalancerMember为群集的成员,即群集服务器1或2,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember;
调试负载均衡集群系统:
访问apache服务器的web服务:[url][/url]
如果显示负载均衡有关信息则说明成功了,接着可以访问[url][/url]即访问到了tomcat的应用
***必须先启动Tomcat服务再启动Apache服务!***
参考文档:
[url][/url]
[url][/url]
[url][/url]
[url][/url]
如何学习linux
第一阶段:初级入门
初级阶段需要把linux运维学习路线搞清楚,任何学习都是循序渐进的,所以学linux运维也是需要有一定的路线。
1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)
2、Linux用户及权限基础
3、Linux系统进程管理进阶
4、linux高效文本、文件处理命令(vim、grep、sed、awk、find等命令)
5、shell脚本入门(可边练习边学习)
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1、TCP/IP网络基础(差不多CCNA、NP的知识就够用)
2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)
3、Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法
4、加密/解密原理及数据安全、系统服务访问控制及服务安全基础
5、iptables安全策略构建
6、shell脚本进阶(主要是结合一些应用,写一些案例)
7、MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)
第三阶段:高级提升
1、http服务代理缓存加速(其中主要学习varnish、nginx缓存系统,要对CDN的知识有所了解。)
2、企业级负载集群(其中主要学习nginx、haproxy、lvs要对主要知识熟练掌握,对负载均衡算法有清晰认识)
3、企业级高可用集群(其中需要对keepalived,heartbeat等进行深入讲解)
4、运维监控zabbix详解(主要是zabbix、cacti、nagios等监控系统,现在用的比较多的是zabbix)
5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansible、puppet、cobbler等运维自动化工具)
第四阶段:资深方向进阶
1、大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)
2、云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)
3、运维开发(主要是python运维开发)
4、自动化运维(在之前自动化基础上做深入)
5、运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)
linux运维主要做什么
1) Linux运维岗位及工作内容
互联网Linux运维工程师是一个融合多学科(网络、系统、开发、数据库、安全、存储等)的综合性技术岗位,甚至还需要沟通、为人处世、培训、销售、管理等非技术能力,这给运维工程师提供了一个广阔的发展空间。
2) Linux运维工程师岗位职责
一般从企业入门到中级Linux运维工程师的工作大致有:挑选IDC机房及带宽、购买物理服务器或云服务、购买及使用CDN服务、搭建部署程序开发及用户的访问系统环境(例如:网站运行环境)、对数据进行备份及恢复、处理网站运行中的各种故障(例如:硬件故障、软件故障、服务故障、数据损坏及丢失等)、对网站的故障进行监控、解决网站运行的潜在安全问题、开发自动化脚本程序提高工作效率、规划网站架构、程序发布流程和规范,制定运维工作制度和规范、配合开发人员部署及调试产品研发需要的测试环境、代码发布等工作需求,公司如果较小可能还会兼职网管、网络工程师、数据库管理员、安全工程师、技术支持等职责。
涉及到的Linux平台上的运维工具有:Linux系统,Linux基础命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,,K8S,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,网络基础,Shell/Python开发基础等,除此之外还可能涉及到交换机、路由器、存储、安全、开发等知识。
运维工程师还包括一些低端的岗位,例:网络管理员、监控运维、IDC运维,值班运维
职业发展方向:Linux运维工程师、系统架构师、数据库工程师、运维开发工程师、系统网络安全工程师、运维经理、运维总监
3) Linux中级运维工程师应用软件阶段。
Linux系统,Linux基础命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,网络基础,Shell/Python开发基础
4)Linux运维架构师岗位职责
运维架构师是运维工程师的高级阶段,并没有明确的岗位界限区分,运维架构师一般来说是除了对运维工程师应用的开源工具熟练掌握之外,更多的是用思想来运维了,即DevOps的落地,各种企业运行过程中的解决方案提出和执行,例如:根据公司的现状可以设计各类运维解决方案的能力:
1、自动化代码上线(SVN/GIT+Jenkins+MVN)解决方案;
2、云计算部署架构及Docker微服务架构方案;
3、服务自动化扩容方案(KVM/OpenStack/Docker+Ansible+Zabbix);
4、10万并发的网站架构、秒杀系统的架构及解决发你个案;
5、多IDC机房互联方案、全网数据备份解决方案、账号统一认证方案;
6、数据库、存储及各重要服务节点的集群和高可用方案。
7、各网络服务的极端优化方案、服务解耦/拆分。
8、运维流程、制度、规范等的建设和推行。
9、沟通能力、培训能力、项目管理、业务需求分析及落地执行力等。
这里仅举几个例子,实际工作中会有更多,运维架构师的工作,其实就是解决企业中的用户访问量不断增大带来的痛点,最终达到高效、优质的为客户提供网站及业务服务。
总的来说:Linux运维架构师更多的是根据企业日益增长的访问量需求,利用若干运维工具组合加上经验思想,形成解决业务需求方案的阶段,当然也不排除对运维工具进行二次开发以及可视化展示运维数据的阶段(开发软件平台),这个阶段涉及的工具会非常多,几乎市面好用的开源工具都在备选之列,在一线城市互联网公司的薪资范围15000-50000/月。
职业方向:高级数据库工程师、运维开发工程师、运维经理、运维总监、技术总监
运维架构师:将多个工具组合,加上思想经验,形成方案,用思想和经验赚钱的阶段。
技术的提升仅是量的积累,思想的提升才是质的飞跃!——老男孩
5)数据库运维工程师
众所周知,数据几乎是所有企业的生命线,所以数据库工程师的地位和薪水一般会比普通运维工程师高一些,主要工作内容就是保证数据库数据的安全以及高效地为用户提供各种服务。工作内容主要有:数据库环境搭建、数据库优化、数据库