首页
About Me
Search
1
linuxea:gitlab-ci之docker镜像质量品质报告
49,485 阅读
2
linuxea:如何复现查看docker run参数命令
23,755 阅读
3
Graylog收集文件日志实例
18,638 阅读
4
linuxea:jenkins+pipeline+gitlab+ansible快速安装配置(1)
18,438 阅读
5
git+jenkins发布和回滚示例
18,235 阅读
ops
Openppn
Sys Basics
rsync
Mail
NFS
Other
Network
HeartBeat
server 08
Code
Awk
Shell
Python
Golang
vue
virtualization
KVM
Docker
openstack
Xen
kubernetes
kubernetes-cni
Service Mesh
Data
Mariadb
PostgreSQL
MongoDB
Redis
MQ
Ceph
TimescaleDB
kafka
surveillance system
zabbix
ELK Stack/logs
Open-Falcon
Prometheus
victoriaMetrics
Web
apache
Tomcat
Nginx
自动化
Puppet
Ansible
saltstack
Proxy
HAproxy
Lvs
varnish
更多
互联咨询
最后的净土
软件交付
持续集成
gitops
devops
登录
Search
标签搜索
kubernetes
docker
zabbix
Golang
mariadb
持续集成工具
白话容器
elk
linux基础
nginx
dockerfile
Gitlab-ci/cd
最后的净土
基础命令
gitops
jenkins
docker-compose
Istio
haproxy
saltstack
marksugar
累计撰写
667
篇文章
累计收到
111
条评论
首页
栏目
ops
Openppn
Sys Basics
rsync
Mail
NFS
Other
Network
HeartBeat
server 08
Code
Awk
Shell
Python
Golang
vue
virtualization
KVM
Docker
openstack
Xen
kubernetes
kubernetes-cni
Service Mesh
Data
Mariadb
PostgreSQL
MongoDB
Redis
MQ
Ceph
TimescaleDB
kafka
surveillance system
zabbix
ELK Stack/logs
Open-Falcon
Prometheus
victoriaMetrics
Web
apache
Tomcat
Nginx
自动化
Puppet
Ansible
saltstack
Proxy
HAproxy
Lvs
varnish
更多
互联咨询
最后的净土
软件交付
持续集成
gitops
devops
页面
About Me
搜索到
6
篇与
的结果
2016-02-21
LAMT基于mod_proxy负载均衡
mod_proxy负载均衡LAMT基于mod_proxy调度使用基于mod_proxy负载均衡需要proxy_balancer_module (shared)模块的支持修改mod_proxu.conf文件,添加两台tomcat主机,lb为负载均衡命名[root@nginx-proxy2 conf.d]# cat mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on <Proxy balancer://lb> BalancerMember https://10.0.0.53:8080 loadfactor=1 route=TomcatA BalancerMember https://10.0.0.54:8080 loadfactor=1 route=TomcatB </Proxy> ProxyPass / balancer://lb/ stickysession=JSESSIONID ProxyPassReverse / balancer://lb/ <Location /> Order Allow,Deny Allow from all </Location> [root@nginx-proxy2 conf.d]# stickysession=JSESSIONID可以实现回话保持修改 workers.properties ,添加如下内容,分别是8009(mod_proxy可以http和ajp方式)[root@nginx-proxy2 conf.d]# cat workers.properties worker.list=lbcA,statA worker.TomcatA.port=8009 worker.TomcatA.host=10.0.0.53 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.TomcatB.port=8009 worker.TomcatB.host=10.0.0.54 worker.TomcatB.type=ajp13 worker.TomcatB.lbfactor=1 worker.lbcA.type=lb worker.lbcA.sticky_session=0 worker.lbcA.balance_workers = TomcatA,TomcatB worker.statA.type = status [root@nginx-proxy2 conf.d]# 状态信息[root@nginx-proxy2 conf.d]# cat mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on <Proxy balancer://lb> BalancerMember https://10.0.0.53:8080 loadfactor=1 route=TomcatA BalancerMember https://10.0.0.54:8080 loadfactor=2 route=TomcatB </Proxy> ProxyPass / balancer://lb/ ProxyPassReverse / balancer://lb/ ——————————————————————状态信息————————————————————————— <Location /lbmanager> SetHandler balancer-manager </Location> ProxyPass /lbmanager ! ———————————————————————————————————————————————————————— <Location /> Order Allow,Deny Allow from all </Location>
2016年02月21日
3,174 阅读
0 评论
0 点赞
2016-02-20
LAMT基于mod_jk负载均衡
mod_jk负载均衡配置基于mod_jk的负载均衡mod_jk文章1、 为了避免用户直接访问后端Tomcat实例,影响负载均衡的效果,建议在Tomcat 7的各实例上禁用HTTP/1.1连接器。2、为每一个Tomcat 7实例的引擎添加jvmRoute参数,并通过其为当前引擎设置全局惟一标识符。如下所示。需要注意的是,每一个实例的jvmRoute的值均不能相同。而后去配置apache,修改/etc/httpd/extra/httpd-jk.conf为如下内容:LoadModule jk_module modules/mod_jk.soJkWorkersFile /etc/httpd/extra/workers.propertiesJkLogFile logs/mod_jk.logJkLogLevel debugJkMount /* lbcluster1JkMount /jkstatus/ stat1编辑/etc/httpd/extra/workers.properties,添加如下内容:worker.list = lbcluster1,stat1 worker.TomcatA.type = ajp13 worker.TomcatA.host = 172.16.100.1 worker.TomcatA.port = 8009 worker.TomcatA.lbfactor = 5 worker.TomcatB.type = ajp13 worker.TomcatB.host = 172.16.100.2 worker.TomcatB.port = 8009 worker.TomcatB.lbfactor = 5 worker.lbcluster1.type = lb worker.lbcluster1.sticky_session = 1 worker.lbcluster1.balance_workers = TomcatA, TomcatB worker.stat1.type = status 范例:10.0.0.53/54是tomcat机器,10.0.0.91是httpd负载安装jdk[root@NFS-WEB2 local]# rpm -ivh jdk-7u9-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk ########################################### [100%] 安装apa-tomat[root@NFS-WEB2 local]# tar xf apache-tomcat-7.0.67.tar.gz -C /usr/local/ [root@NFS-WEB2 local]# ln -sv apache-tomcat-7.0.67 tomcat `tomcat' -> `apache-tomcat-7.0.67' [root@NFS-WEB2 bin]# cat /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$CATALINA_HOME/bin:$PATH [root@NFS-WEB2 bin]# cat /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin:$PATHtomcat的init.d启动脚本[root@NFS-WEB2 bin]# cat /etc/init.d/tomcat #!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start;; *) echo "Usage: `basename $0` {start|stop|restart}" exit 1 ;; esac [root@NFS-WEB2 bin]# [root@NFS-WEB2 local]# chmod +x /etc/init.d/tomcat [root@NFS-WEB2 local]# chkconfig --add tomcat 在两个节点分别提供两个不同的测试页面:10.0.0.53[root@NFS-WEB2 webapps]# cd /usr/local/tomcat/webapps [root@NFS-WEB2 webapps]# mkdir testapp [root@NFS-WEB2 webapps]# cd testapp/ [root@NFS-WEB2 testapp]# mkdir -p WEB-INF/{classes,lib} [root@NFS-WEB2 webapps]# vim index.jsp 演示效果,在TomcatA上某context中(如/test),提供如下页面<%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> 10.0.0.54[root@NFS-WEB1 webapps]# cd /usr/local/tomcat/webapps [root@NFS-WEB1 webapps]# mkdir testapp [root@NFS-WEB1 webapps]# cd testapp/ [root@NFS-WEB1 testapp]# mkdir -p WEB-INF/{classes,lib} [root@NFS-WEB1 webapps]# vim index.jsp 演示效果,在TomcatB上某context中(如/test),提供如下页面 <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="blue">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> mod_jk 10.0.0.91[root@nginx-proxy2 modules]# cat /etc/httpd/conf.d/mod_jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel notice JkMount /* lbcA JkMount /jkstatus/ statA [root@nginx-proxy2 modules]# cat /etc/httpd/conf.d/workers.properties worker.list=lbcA,statA worker.TomcatA.port=8009 worker.TomcatA.host=10.0.0.53 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.TomcatB.port=8009 worker.TomcatB.host=10.0.0.54 worker.TomcatB.type=ajp13 worker.TomcatB.lbfactor=1 worker.lbcA.type=lb worker.lbcA.sticky_session=0 回话不保持 worker.lbcA.balance_workers = TomcatA,TomcatB worker.statA.type = status [root@nginx-proxy2 modules]#
2016年02月20日
3,118 阅读
0 评论
0 点赞
2016-02-19
LAMT基于mod_jk配置使用
mod_jk配置apache通过mod_jk模块与Tomcat连接mod_jk是ASF的一个项目,是一个工作于apache端基于AJP协议与Tomcat通信的连接器,它是apache的一个模块,是AJP协议的客户端(服务端是Tomcat的AJP连接器)。[root@nginx-proxy2 conf.d]# cd [root@nginx-proxy2 ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz [root@nginx-proxy2 ~]# cd tomcat-connectors-1.2.40-src/native/ [root@nginx-proxy2 native]# rpm -ql httpd-devel|grep apxs 确保apxs存在,确保httpd-devel安装[root@nginx-proxy2 native]# yum -y install httpd-devel [root@nginx-proxy2 native]# rpm -ql httpd-devel|grep apxs /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz [root@nginx-proxy2 native]# [root@nginx-proxy2 native]# ./configure --with-apxs=/usr/sbin/apxs [root@nginx-proxy2 native]# make && make install 确保mod_jk.so存在[root@nginx-proxy2 modules]# ls /usr/lib64/httpd/modules/ |grep mod_jk mod_jk.so [root@nginx-proxy2 modules]# 编辑配置文件:[root@nginx-proxy2 conf.d]# cat mod_jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* TomcatA JkMount /jkstatus/ stat-LinuxEA 编辑workers.properties!由于是mod_jk,使用ajp,so,端口为8009,[root@nginx-proxy2 conf.d]# cat workers.properties worker.list=TomcatA,stat-LinuxEA worker.TomcatA.port=8009 worker.TomcatA.host=10.0.0.53 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.stat-LinuxEA.type = status [root@nginx-proxy2 conf.d]# pwd /etc/httpd/conf.d [root@nginx-proxy2 conf.d]# 查看日志是否正常:[root@nginx-proxy2 conf.d]# tail /var/log/httpd/mod_jk.log [Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03d0 75 6E 64 3A 20 23 44 32 41 34 31 43 3B 0A 20 20 - und:.#D2A41C;... [Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03e0 7D 0A 20 20 74 64 2E 68 65 61 64 65 72 2D 6C 65 - }...td.header-le [Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03f0 66 74 20 7B 0A 20 20 20 20 74 65 78 74 2D 61 6C - ft.{.....text-al [Thu Feb 18 06:13:02.201 2016] [7345:139943077504992] [debug] ws_write::mod_jk.c (552): written 8065 out of 8065 [root@nginx-proxy2 conf.d]# jk_mod正常后修改日志级别:JkLogLevel notice[root@nginx-proxy2 conf.d]# cat mod_jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel notice JkMount /* TomcatA JkMount /jkstatus/ stat-LinuxEA [root@nginx-proxy2 conf.d]# 在查看则正常[root@nginx-proxy2 conf.d]# tail /var/log/httpd/mod_jk.log [Thu Feb 18 06:17:19.447 2016] [7346:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=8 [Thu Feb 18 06:17:19.448 2016] [7345:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=7 [Thu Feb 18 06:17:19.449 2016] [7344:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=6 [Thu Feb 18 06:17:19.451 2016] [7343:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared [root@nginx-proxy2 conf.d]# 如果是编译安装,--with-apxs则指定相应的位置即可[root@NFS-WEB1 native]# ./configure --with-apxs=/usr/local/apache/bin/apxs [root@NFS-WEB1 native]# make && make install 说明如下:apache要使用mod_jk连接器,需要在启动时加载此连接器模块。为了便于管理与mod_jk模块相关的配置,这里使用一个专门的配置文件/etc/httpd/extra/httpd-jk.conf来保存相关指令及其设置。其内容如下:# Load the mod_jk LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/extra/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* TomcatA JkMount /status/ stat1 除了需要使用LoadModule指令在apache中装载模块外,mod_jk还需要在apache的主配置文件中设置其它一些指令来配置其工作属性。如JkWorkersFile则用于指定保存了worker相关工作属性定义的配置文件,JkLogFile则用于指定mod_jk模块的日志文件,JkLogLevel则可用于指定日志的级别(info, error, debug),此外还可以使用JkRequestLogFormat自定义日志信息格式。而JkMount(格式: JkMount )指定则用于控制URL与Tomcat workers的对应关系。为了让apache能使用/etc/httpd/extra/httpd-jk.conf配置文件中的配置信息,需要编辑/etc/httpd/httpd.conf,添加如下一行:Include /etc/httpd/extra/httpd-jk.conf对于apache代理来说,每一个后端的Tomcat实例中的engine都可以视作一个worker,而每一个worker的地址、连接器的端口等信息都需要在apache端指定以便apache可以识别并使用这些worker。约定俗成,配置这些信息的文件通常为workers.properties,其具体路径则是使用前面介绍过的JkWorkersFile指定的,在apache启动时,mod_jk会扫描此文件获取每一个worker的配置信息。比如,我们这里使用/etc/httpd/extra/workers.properties。workers.properties文件一般由两类指令组成:一是mod_jk可以连接的各worker名称列表,二是每一个worker的属性配置信息。它们分别遵循如下使用语法。worker.list = < a comma separated list of worker names > worker. <worker name> .<property> = <property value> 其中worker.list指令可以重复指定多次,而worker name则是Tomcat中engine组件jvmRoute参数的值。如:worker.TomcatA.host=172.16.100.1根据其工作机制的不同,worker有多种不同的类型,这是需要为每个worker定义的一项属性woker..type。常见的类型如下:◇ ajp13:此类型表示当前worker为一个运行着的Tomcat实例。◇ lb:lb即load balancing,专用于负载均衡场景中的woker;此worker并不真正负责处理用户请求,而是将用户请求调度给其它类型为ajp13的worker。◇ status:用户显示分布式环境中各实际worker工作状态的特殊worker,它不处理任何请求,也不关联到任何实际工作的worker实例。具体示例如请参见后文中的配置。worker其它常见的属性说明:◇ host:Tomcat 7的worker实例所在的主机;◇ port:Tomcat 7实例上AJP1.3连接器的端口;◇ connection_pool_minsize:最少要保存在连接池中的连接的个数;默认为pool_size/2;◇ connection_pool_timeout:连接池中连接的超时时长;◇ mount:由当前worker提供的context路径,如果有多个则使用空格格开;此属性可以由JkMount指令替代;◇ retries:错误发生时的重试次数;◇ socket_timeout:mod_jk等待worker响应的时长,默认为0,即无限等待;◇ socket_keepalive:是否启用keep alive的功能,1表示启用,0表示禁用;◇ lbfactor:worker的权重,可以在负载均衡的应用场景中为worker定义此属性;另外,在负载均衡模式中,专用的属性还有:◇balance_workers:用于负载均衡模式中的各worker的名称列表,需要注意的是,出现在此处的worker名称一定不能在任何worker.list属性列表中定义过,并且worker.list属性中定义的worker名字必须包含负载均衡worker。具体示例请参见后文中的定义。◇ method:可以设定为R、T或B;默认为R,即根据请求的个数进行调度;T表示根据已经发送给worker的实际流量大小进行调度;B表示根据实际负载情况进行调度。◇sticky_session:在将某请求调度至某worker后,源于此址的所有后续请求都将直接调度至此worker,实现将用户session与某worker绑定。默认为值为1,即启用此功能。如果后端的各worker之间支持session复制,则可以将此属性值设为0。根据前文中的指定,这里使用/etc/httpd/extra/workers.properties来定义一个名为TomcatA的worker,并为其指定几个属性。文件内容如下:worker.list=TomcatA,stat1 worker.TomcatA.port=8009 worker.TomcatA.host=172.16.100.1 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.stat1.type = status 至此,一个基于mod_jk模块与后端名为TomcatA的worker通信的配置已经完成,重启httpd服务即可生效。
2016年02月19日
3,381 阅读
0 评论
0 点赞
2016-02-18
LAMT基于mod_proxy调度使用
使用单台nginx直接调度tomcat如下:http { upstream tomcat_server { server 10.0.0.20:8080; server 10.0.0.30:8080; # server 10.0.0.100:8080 backup; } server { location ~* \.(jsp|do)$ { proxy_pass https://tomcat_server; } } } 通常tomcat不直接和前端用户交互,则由nginx_proxy进行,如下图LAMT:配置apache通过mod_proxy模块与Tomcat连接要使用mod_proxy与Tomcat实例连接,需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(实现Tomcat集群时用到)等模块:# /usr/local/apache/bin/httpd -D DUMP_MODULES | grep proxy proxy_module (shared) proxy_connect_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_fcgi_module (shared) proxy_scgi_module (shared) proxy_ajp_module (shared) proxy_balancer_module (shared) proxy_express_module (shared) rpm安装的httpd[root@nginx-proxy2 ~]# rpm -qa httpd httpd-2.2.15-39.el6.centos.x86_64 需要启动的模块:[root@nginx-proxy2 ~]# ls /usr/lib64/httpd/modules/ proxy_module proxy_http_module proxy_ajp_module proxy_balancer_module [root@nginx-proxy2 ~]# httpd -M proxy_http_module (shared) proxy_ajp_module (shared) proxy_module (shared) proxy_balancer_module (shared)编译安装tar xf httpd-2.4.2.tar.gz cd httpd-2.4.2 ./configure \ --prefix=/usr/local/apache 、 --sysconfdir=/etc/httpd \ --enable-so --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --enable-proxy --enable-proxy-http \ --enable-proxy-ajp make && make install 编译安装:需要手动启动,默认编译不启动2、在httpd.conf的全局配置段或虚拟主机中添加如下内容:ProxyVia Off 关闭正向代理 ProxyRequests Off ProxyPreserveHost Off <Proxy *> Require all granted </Proxy> ProxyPass / ajp://172.16.100.1:8009/ ProxyPassReverse / ajp://172.16.100.1:8009/ <Location / > Require all granted </Location> 关于如上apache指令的说明:ProxyPreserveHost {On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址。如果想在反向代理中支持虚拟主机,则需要开启此项,否则就无需打开此功能。ProxyVia {On|Off|Full|Block}:用于控制在http首部是否使用Via:,主要用于在多级代理中控制代理请求的流向。默认为Off,即不启用此功能;On表示每个请求和响应报文均添加Via:;Full表示每个Via:行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via:都会被移除。ProxyRequests {On|Off}:是否开启apache正向代理的功能;启用此项时为了代理http协议必须启用mod_proxy_http模块。同时,如果为apache设置了ProxyPass,则必须将ProxyRequests设置为Off。ProxyPass [path] !|url [key=value key=value ...]]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟路径,url为后端服务器上某URL路径。使用此指令时必须将ProxyRequests的值设置为Off。需要注意的是,如果path以“/”结尾,则对应的url也必须以“/”结尾,反之亦然。另外,mod_proxy模块在httpd 2.1的版本之后支持与后端服务器的连接池功能,连接在按需创建在可以保存至连接池中以备进一步使用。连接池大小或其它设定可以通过在ProxyPass中使用key=value的方式定义。常用的key如下所示:◇ min:连接池的最小容量,此值与实际连接个数无关,仅表示连接池最小要初始化的空间大小。◇ max:连接池的最大容量,每个MPM都有自己独立的容量;都值与MPM本身有关,如Prefork的总是为1,而其它的则取决于ThreadsPerChild指令的值。◇ loadfactor:用于负载均衡集群配置中,定义对应后端服务器的权重,取值范围为1-100。◇ retry:当apache将请求发送至后端服务器得到错误响应时等待多长时间以后再重试。单位是秒钟。如果Proxy指定是以balancer://开头,即用于负载均衡集群时,其还可以接受一些特殊的参数,如下所示:◇lbmethod:apache实现负载均衡的调度方法,默认是byrequests,即基于权重将统计请求个数进行调度,bytraffic则执行基于权重的流量计数调度,bybusyness通过考量每个后端服务器的当前负载进行调度。◇ maxattempts:放弃请求之前实现故障转移的次数,默认为1,其最大值不应该大于总的节点数。◇ nofailover:取值为On或Off,设置为On时表示后端服务器故障时,用户的session将损坏;因此,在后端服务器不支持session复制时可将其设置为On。◇ stickysession:调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID。上述指令除了能在banlancer://或ProxyPass中设定之外,也可使用ProxySet指令直接进行设置,如:BalancerMember https://www1.linuxea.com:8080 loadfactor=1BalancerMember https://www2.linuxea.com:8080 loadfactor=2ProxySet lbmethod=bytrafficProxyPassReverse:用于让apache调整HTTP重定向响应报文中的Location、Content-Location及URI标签所对应的URL,在反向代理环境中必须使用此指令避免重定向报文绕过proxy服务器。示例:[root@nginx-proxy2 conf.d]# pwd /etc/httpd/conf.d [root@nginx-proxy2 conf.d]# cat mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on ProxyPass / https://10.0.0.53:8080/ ProxyPassReverse / https://10.0.0.53:8080/ <Location /> Order Allow,Deny Allow from all </Location> [root@nginx-proxy2 conf.d]# apache最大的好处是可以基于ajp向后转发,不走http协议[root@nginx-proxy2 conf.d]# pwd /etc/httpd/conf.d [root@nginx-proxy2 conf.d]# cat mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on ProxyPass / ajp://10.0.0.53:8009/ ProxyPassReverse / ajp://10.0.0.53:8009/ <Location /> Order Allow,Deny Allow from all </Location> [root@nginx-proxy2 conf.d]# admin-gui定义[root@nginx-proxy2 conf.d]# vim tomcat-user.xml <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/> <!-- <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> --> </tomcat-users>
2016年02月18日
3,710 阅读
1 评论
0 点赞
2016-02-03
Tomcat修改server.xml定义虚拟主机
通过修改server.xml的来定义可能存在一些性能的问题,也可以多开。本章笔记将不再演示Host组件:位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面示例中的定义: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host>unpackWARs="true"JAVA开发人员会把程序打包,扔进目录即可自动解压xmlValidation="false" 启动XML校验,"false"不校验xmlNamespaceAware="false"> 启动xml检测,false不检测常用属性说明: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 1) appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;2) autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;3) unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;例:虚拟主机定义示例:修改server.xml<Host name="www.linuxea123.com" appBase="/www/webapp/" unpackWARS="true" autoDeploy="true"> <Context path="" docBase="ROOT" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.linuxea123.com_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> 创建目录[root@NFS-WEB1 conf]# mkdir /www/webapp/ROOT -p 创建测试页面[root@NFS-WEB1 conf]# vim /www/webapp/ROOT/index.jsp <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>JSP test page.</title> </head> <body> <% out.println("Hello,world!"); %> </body> </html>修改windowshosts文件C:\Windows\System32\drivers\etc\hosts 10.0.0.53 www.linuxea123.com 10.0.0.53 www.linuxea1234.com重启[root@NFS-WEB1 conf]# service tomcat start Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/latest Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@NFS-WEB1 conf]# ss -lnp|grep :80 LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",2436,47)) LISTEN 0 100 :::8009 :::* users:(("java",2436,43)) LISTEN 0 100 :::8080 :::* users:(("java",2436,42)) [root@NFS-WEB1 conf]# 主机别名定义:如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,如下: linuxea.com修改server.xml<Host name="www.linuxea1234.com" appBase="/www/testapp/" unpackWARS="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.linuxea123.com_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="localhost" appBase="webapps"创建目录 [root@NFS-WEB1 conf]# mkdir /www/testapp/ROOT -p 添加测试页面[root@NFS-WEB1 conf]# vim /www/webapp/ROOT/index.jsp <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>JSP test page.</title> </head> <body> <% out.println("Hello,www.linuxea.com!"); %> </body> </html>
2016年02月03日
4,002 阅读
1 评论
0 点赞
2016-02-02
jdk+tomcat安装配置
配置java环境jdk下载[root@NFS-WEB1 local]# rpm -ivh jdk-7u9-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk ########################################### [100%] [root@NFS-WEB1 latest]# /usr/java/latest/bin/java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 脚本[root@NFS-WEB1 latest]# vim /etc/profile.d/java export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin/:$PATH [root@NFS-WEB1 latest]# java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) [root@NFS-WEB1 latest]# apache-tomcat安装wget https://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.67/bin/apache-tomcat-7.0.67.tar.gz [root@NFS-WEB1 ~]# tar xf apache-tomcat-7.0.67.tar.gz -C /usr/local/ [root@NFS-WEB1 ~]# cd /usr/local/ [root@NFS-WEB1 local]# ln -sv apache-tomcat-7.0.67 tomcat `tomcat' -> `apache-tomcat-7.0.67' [root@NFS-WEB1 local]# 查看帮助:[root@NFS-WEB1 tomcat]# bin/catalina.sh --help 启动:[root@NFS-WEB1 tomcat]# bin/catalina.sh start Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/latest Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@NFS-WEB1 tomcat]# ss -lnp|grep java LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",2679,46)) LISTEN 0 100 :::8009 :::* users:(("java",2679,43)) LISTEN 0 100 :::8080 :::* users:(("java",2679,42)) [root@NFS-WEB1 tomcat]# jps 2679 Bootstrap 2704 Jps [root@NFS-WEB1 tomcat]# tomcat配置层次顶级组件:位于整个配置的顶层容器类:可以包含其他组件的组件连接器类组件:连接用户请求至tomcat被嵌套类组件:位于一个容器中,不能半酣其他组件engine:核心容器,catalina引擎,负责通过connector接收用户请求处理请求host:类似于httpd中的虚拟主机,支持基于FQDN的虚拟主机context:最内层的容器类组件,一个context代表一个web应用程序:配置context的主要目的,指定对应的webapp的根目录,还能为webapp指定额外的属性,如部署方式等service:将连接器管理至engine,因此一个service内部可以有多个connector,但是只能有一个engine嵌套类组件:valve:拦截请求并在将其转至对应的webapp之前进行某种处理操作如:remote address filter value :基于ip做访问控制logger:日志记录器,用于记录组件内部的状态信息:可用于除context之外的任何容器中realm:可以用于任何容器类的组件中,关联用户认证库,实现认证和授权:UserDatabaseRealm:使用JNDI自定义的用户认证库;MemoryRealm:tomcat-users.xml;JDBCRealm:基于JDBC连接至数据中查找用户;端口的修改:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> AJP(apache jserv pritical)协议端口:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 二进制协议,使用httpd反向代理用户请求至tomcat时,在httpd和tomcat之间使用;tomcat启动脚本#!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start;; *) echo "Usage: `basename $0` {start|stop|restart}" exit 1 ;; esac
2016年02月02日
3,047 阅读
0 评论
0 点赞