【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk
Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk
httpd版本: httpd-2.4.17
jk版本: tomcat-connectors-1.2.41
参考来源:
Apache (1) —— Mac下安装Apache Httpd到自定义路径(非/etc/apache2)
Apache (2) —— Mac 下安装多个Apache Tomcat实例
Working with mod_jk
How to Compile Tomcat mod_jk connector on Mac OS X Mavericks
Installing mod_jk for Apache 2.2 on Mac OS X 10.5 Leopard
Apache负载均衡配置
Apache学习之二、HTTPD的负载均衡
Apache配置反向代理、负载均衡和集群(mod_proxy方式)
准备
首先我们参照下面两篇文章配置好httpd和两个Tomcat实例
Apache (1) —— Mac下安装Apache Httpd到自定义路径(非/etc/apache2)
Apache (2) —— Mac 下安装多个Apache Tomcat实例
其中Tomcat的两个实例node-a和node-b分别存放与"./servers/cluster/tomcat/node-a"和"/servers/cluster/tomcat/node-b"下
对应的配置分别为:
- Server Port: 8015 与 8025
- Connector: 8081 与 8082
- AJP: 8019 与 8029
另分别为连个实例添加jvmRoute的配置
node-a
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
node-b
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
注意:不要忘记修改供测试的页面特征
配置httpd负载均衡(Load Balancer)
httpd负载均衡Tomcat的方式主要可以分为两类
- httpd自带的mod_proxy
- Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信mod_jk
*注意 本篇文章主要关注第二类配置
首先编译
在Apache的网站上下载tomcat-connectors-1.2.41,然后解压。
运行命令编译
$ cd native
$ ./configure CFLAGS='-arch x86_64' APXSLDFLAGS='-arch x86_64' --with-apxs=/usr/sbin/apxs
$ make
$ sudo make install
*注意 --with-apxs需要指向目标节点的apxs
此处我本地的路径为
/Users/Richard/Documents/Dev/servers/cluster/httpd/node-a/bin/apxs
如果执行正常不出错,末尾几行的输出为
...
config.status: creating common/list.mk
config.status: creating common/jk_types.h
config.status: creating common/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
然后"./native"下运行make
期间会出现warning,可以暂时忽略不影响
jk_lb_worker.c:1397:36: warning: address of array'p->worker->session_cookie_path' will always evaluate to 'true'[-Wpointer-bool-conversion]if (p->worker->session_cookie_path && *p->worker->se...~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ ~~
make执行正常的最后几行输出为
...
Making all in common
make[1]: Nothing to be done for `all'.
Making all in apache-2.0
make[1]: Nothing to be done for `all'.
make install如果在非sudo状态下,最后会出现错误
...
install: /Users/Richard/Documents/Dev/servers/cluster/httpd/node-a/modules/mod_jk.so: Permission denied
apxs:Error: Command failed with rc=4653056
.
make[1]: *** [install_dynamic] Error 1
make: *** [install-recursive] Error 1
sudo运行make install
...
libtool: install: ranlib /Users/Richard/Documents/Dev/servers/cluster/httpd/node-a/modules/mod_jk.a
chmod 755 /Users/Richard/Documents/Dev/servers/cluster/httpd/node-a/modules/mod_jk.soPlease be sure to arrange /Users/Richard/Documents/Dev/servers/cluster/httpd/node-a/conf/httpd.conf...make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
配置mod_jk
在node-a下新建文件夹"other",并创建文件workers.properties
# Define two status worker:
# - jk-status for read-only use
# - jk-manager for read/write use
worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true worker.list=jk-manager
worker.jk-manager.type=status # We define a load balancer worker
# with name "balancer"
worker.list=balancer
worker.balancer.type=lb
worker.balancer.error_escalation_time=0
worker.balancer.max_reply_timeouts=10
worker.balancer.sticky_session=true
worker.balancer.sticky_session_force=true # Now we add members to the load balancer First member is "tomcat1", most attributes are inherited from the template "worker.template".
worker.balancer.balance_workers=tomcat1
worker.tomcat1.reference=worker.template
worker.tomcat1.host=127.0.0.1
worker.tomcat1.port=8019
worker.tomcat1.activation=A # Second member is "tomcat2", most attributes are inherited from the template "worker.template".
worker.balancer.balance_workers=tomcat2
worker.tomcat2.reference=worker.template
worker.tomcat2.host=127.0.0.1
worker.tomcat2.port=8029
worker.tomcat2.activation=A # Finally we put the parameters
worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3
*注意上面的host配置都是127.0.0.1,会影响我们下面的测试
并同时在"./node-a/other/"下创建文件uriworkermap.properties
/*.do=balancer
/*.jsp=balancer #/*.gif=balancer
#/*.jpg=balancer
#/*.png=balancer
#/*.css=balancer
#/*.js=balancer
#/*.htm=balancer
#/*.html=balancer
#/*.txt=balancer # Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!) !/servlets-examples/*.jpeg=lb #
# Mount jkstatus to /jkmanager
# For production servers you will need to
# secure the access to the /jkmanager url
#
/jk-manager=jk-manager
/jk-status=jk-status
最后
为httpd.conf,添加配置
# 加载jk配置文件
Include conf/mod_jk.conf
测试
重新启动httpd,并用浏览器访问"localhost:81",提示"Service Unavailable"错误
查看"./node-a/log"目录下"mod_jk.log"文件
[Wed Dec 09 15:00:31.403 2015] [13735:4417540096] [info] get_most_suitable_worker::jk_lb_worker.c (1119): all workers are in error state for session QUMQZVRPS1-4MX593EAOD71Y6YAFXUP1-U734UPHI-1
[Wed Dec 09 15:00:31.403 2015] [13735:4417540096] [info] service::jk_lb_worker.c (1664): All tomcat instances failed, no more workers left (attempt=1, retry=1)
[Wed Dec 09 15:00:31.403 2015] [13735:4417540096] [info] service::jk_lb_worker.c (1675): All tomcat instances are busy or in error state
[Wed Dec 09 15:00:31.403 2015] [13735:4417540096] [error] service::jk_lb_worker.c (1680): All tomcat instances failed, no more workers left
[Wed Dec 09 15:00:31.403 2015] [13735:4417540096] [info] jk_handler::mod_jk.c (2991): Service error=0 for worker=balancer
尝试访问
127.0.0.1:81
得到正常结果
这样就完成一个以httpd单节点为负载均衡器分发到不同Tomcat的简单架构。
*扩展
- 如果将host改为"localhost"是否能正常访问?
- 与另一篇中用httpd自带lb的方式不同映射的路径("./test"),这里是根目录,需要如何配置达到相同效果?
- 这里测试结果可以正常显示样式和图片,是什么配置起的作用?
【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk相关推荐
- 在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了,且合并完成。如果不知道请查看MAC 下配置Apache和PHP
在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了,且合并完成.如果不知道请查看MAC 下配置Apache和PHP 1.创建一个空工程, 新建一个php文件,暂且命名为ind ...
- redis主从复制,复制功能是高可用Redis的基础,为满足故障恢复和负载均衡等需求把Redis数据复制多个副本部署到其他机器;如何实现redis的主从复制模式以及主从复制模式下常见的运维问题;
目录 一.如何使用redis主从复制模式 1.建立复制 2.断开复制 3.安全性 4.只读模式 5.传输延迟 二.Redis的复制拓扑结构 1.一主一从结构 2.一主多从结构 3.树状主从结构 三.主 ...
- linux 怎么配置apache,在Linux下配置Apache Web服务
<在Linux下配置Apache Web服务>由会员分享,可在线阅读,更多相关<在Linux下配置Apache Web服务(10页珍藏版)>请在人人文库网上搜索. 1.在Lin ...
- 【高可用HA】Centos7.0下通过Corosync+pacemaker+pcs+drbd实现mariadb的高可用
作者:吴业亮 博客:https://wuyeliang.blog.csdn.net/ 一.操作系统配置 1.1.准备: 两个节点ha-node1和ha-node2均按照centos7.0系统,每个节点 ...
- mac php 403,mac下配置apache以及403问题
mac下是自带Apache服务器的,不需要另外安装. 开启Apache 在终端中输入以下指令即可对Apache进行相关操作 [js]//开启apache服务 sudo apachectl start ...
- Mac下配置Apache服务器
Apache HTTP Server是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠 ...
- mysql lvs 读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言 4 2.原理 4 2.1.概要介绍 4 2.2.工作原理 4 2.3.实际作用 4 3方案 ...
- 分布式技术与实战第七课 高并发下高可用的熔断、降级、限流和负载均衡、监控以及统一的日志系统
第39讲:从双十一看高可用的保障方式 从这一课时开始,专栏内容进入最后一个模块,即分布式高可用系列,这部分的内容,我将以电商大促为背景,讲解系统限流.降级熔断.负载均衡.稳定性指标.系统监控和日志系统 ...
- lvs加MySQL读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言 4 2.原理 4 2.1.概要介绍 4 2.2.工作原理 4 2.3.实际作用 4 3方 ...
最新文章
- elastaticsearch 5.1.2 x-pack 设置权限访问
- java打开网页横屏_巅峰之战!三款最热java手机浏览器横屏
- 轻量级UIImageView分类缓存 库 AsyncImageView 使用
- 如何利用OpenSSL生成证书
- Exchange 邮件投递被拒的问题分析
- ALLyeSNO 优化版浩方 第二版 Ver 2007 06 15 清除广告 自动挤房间
- mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
- C/C++网络编程工作笔记0001---网络编程的基本概念
- Android Intent调用大全、系统自带Intent调用大全
- lomboz 官方网址
- 计算机一级exc除法函数,excel除法函数 excel除法如何表示
- HTML 媒体(Media)
- ggplot中怎么使用类似par()的函数实现同时绘制多幅图
- J9数字论:如何去在Web2和Web3的融合中获得自己的优势呢?
- 程序员笔试题---国信证券
- 支持向量机——SVM原理
- 迟来的回顾2019年
- uniapp(vue)生成PDF
- 完美解码为什么播放电影时是半透明的
- mysql导出表结构为word_MySql导出表结构为word文档
热门文章
- 推荐一款好用的搜索引擎(kngine)
- 从VC 6.0移植代码到VS C++ 2005得出的一些经验
- JAVA SE学习day_05: IO与流操作
- 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析
- python怎么编程上传资料_Python实现文件上传
- 微型计算机分析,微机原理练习题分析
- mysql城市联动表怎么建_MVC4.0搭建的省市县三联动,包含数据库
- 简易灯箱画廊设计html,原生Js实现的画廊功能
- 刚接手的项目代码 怎么看_11.21号动态:音恋今天公告称团队刚接手这个项目没多久...
- linux下搭建python 机器学习环境