Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡
周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们,希望能够有所帮助!(如果内容中有误,还望大家指出!)
常见的web集群调度器:
调度器分为软件和硬件两种,常见软件:lvs nginx haproxy等
常见硬件:f5 绿盟 梭子鱼等
lvs在企业生产中抗负载能力很强,但是不支持动静分离,正则处理,在大型网站中lvs实施复杂,而且维护成本高,工作在TCP四层,lvs就是一个单纯的负载均衡软件
Nginx使用简单,性能较好,可负载三万到五万的并发量,Nginx上功能较多,可做web服务器也可做流量分配,但不支持session会话 cookie引导等, 工作在TCP七层
haproxy使用简单,功能多,harpoxy支持两种工作模式,一个是TCP四层和七层(传输层和应用层),它补充了Nginx不能session cookie等工作,支持URL检测,如果服务器出问题会有很好的帮助,它和lvs一样只是单纯的负载均衡软件,但是它负载均衡的速度和处理并发上要优于Nginx,haproxy也可对MySQL读进行负载均衡,对后端MySQL节点进行检测,如果后端的MySQL slaves数量超出10台时,性能不如lvs+keepalived
部署Nginx+keepalived+Tomcat 双主高可用负载均衡
思路:
1.首先需要四台服务,两台做Nginx负载均衡(Nginx1和Nginx2),另外两台当作真实节点服务器(Tomcat1和Tomcat2)
2.既然要达到双主的目的,就需要用两个VIP(也就是虚拟ip)添加两条VIP是为了两台调度器互相是对方主服务和从从服务,把两个VIP添加同一个域名里,客户访问域名时同时工作,使两台机器没有一个是处于闲置浪费状态,并且当其中一台机器宕机后,第一台的VIP会转移到另一台,此时第二台会有俩个VIP,这样做最大化使负载均衡达到最理想化状态
3.然后就是在调度器器上安装keepalived工具,当某台调度器宕机后,进行vip飘移,故障切换
部署环境:
负载Nginx1 192.168.40.21
负载Nginx2 192.168.40.22
Tomcat1 192.168.40.23
Tomcat2 192.168.40.24
VIP 192.168.40.66 192.168.40.67
安装Tomcat1
需要源码包 :
Jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz
安装并生成测试页
[root@root ~]# tar xf jdk-7u65-linux-x64.gz
[root@root ~]# mv jdk1.7.0_65/ /usr/local/tomcat7/
[root@root ~]# mkdir -p /web/webapp1/
[root@root ~]#vim /web/webapp1/index.jsp


安装Tomcat2
安装步骤和Tomcat1一样,安装过程略过
Tomcat2测试页内容:

部署Nginx1负载均衡
Nginx搭建过程略,搭建完成后修改Nginx主配置文件,在Nginx上添加Tomcat1和Tomcat2的真实节点服务器
max—fails=1 fail_timeout=10s; 健康检查:最大连接失败测试1次,失败超时10秒

部署Nginx2的负载

Keepalived部署
keepalived可以说是健康检查工具,他可以故障自动切换,节点健康检查
Nginx1上安装keepalived
yum -y isntall keepalived
修改keepalived配置文件,添加VIP以及Nginx 进程监测脚本
编写Nginx检测进程脚本:
#!/bin/bash
#by:ImproveMyself
#检测进程脚本
#检测nginx 进程是否开启,如果没有开启尝试开启
jc=`ps -C nginx --no-header|wc -l`
if [ $jc -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
#如果nginx尝试开启失败,那么就关闭keepalived服务,进行vip飘移
jc2=`ps -C nginx -no-header |wc -l`
if [ $jc -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi

修改keepalived的主配置文件:
位置: /etc/keepalived/

同时在Nginx2上部署keepalived,安装过程和Nginx1的keepalived一样,并且修改keepalived主配置文件

部署完成之后,开启Nginx 和keepalive服务,此时使用ip a 命令查看 Nginx1上的vip,发现vip1的IP
因为VIP 1:192.168.40.66 主调度器是Nginx1 从调度器是Nginx2 ,只有当主调度器宕机之后,VIP1:192.168.40.66才切换到Nginx2上,所以Nginx1上显示VIP1:192.168.40.66是正确的,vip2:192.168.40.67 此时在Nginx1 上没有显示是因为Nginx1现在是VIP2的从调度服务,只有Nginx2 宕机之后VIP2才会切换到Nginx1上!

然后再查看Nginx2 上的vip,发现vip2的ip,这样就说明双主模式已经部署成功了

检测:
使用VIP 192.168.40.66进行访问


使用VIP 192.168.40.67进行访问


当Nginx1宕机后,此时Nginx2上有两条VIP


使用不同VIP访问,依然成功访问




------------------------------------------------------------------------------------------------------------------
Haproxy+keepalived+Tomcat高可用负载
思路:
基于上面那个环境,现在做haproxy高可用 整体思路和Nginx+keepalived+Tomcat的一样,只不过是把Nginx调度换成haproxy调度器,测试方法和方式和上面那个案例一样
部署环境: 负载haproxy1 192.168.40.21
负载haproxy2 192.168.40.22
Tomcat1 192.168.40.23
Tomcat2 192.168.40.24
VIP1 192.168.40.66
VIP2 192.168.40.67
部署haproxy1环境
需要的源码包: haproxy-1.4.24.tar.gz
安装haproxy
tar xf haproxy-1.4.24.tar.gz -C /usr/src/
cd /usr/src/haproxy-1.4.24/
make TARGET=linux26 && make install
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
cp examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/
修改haproxy配置文件
vim /etc/haproxy/haproxy.cfg

创建haproxy.conf文件,用于日志管理
vim /etc/rsyslog.d/haproxy.conf

编写一个监测haproxy进程脚本用于故障切换,写入在keepalived配置文件里
脚本和上面的Nginx.sh脚本一样,你可以把Nginx.sh复制出一个haproxy.sh,更改一下脚本里的检测内容就行了

由于是基于上一个案例上的环境,所以keepalived就不在安装了,只需要把keepalived里的脚本名字更改一下就行了

部署haproxy2和keepalived
因为安装步骤和之前一样,安装过程略
修改haproxy.cfg配置文件和日志管理文件


修改keepalived的主配置文件,并且把脚本写入

部署完完成之后分别开启服务
/etc/init.d/haproxy restart
/etc/init.d/rsyslog restart
/etc/init.d/keepalived restart
测试:
使用两个vip访问




宕机测试:

此时40.22上出现两条vip,证明vip飘移成功

此时再次访问




Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡的更多相关文章
- [转] Haproxy、Keepalived双主高可用负载均衡
http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepaliv ...
- nginx+keepalived双主高可用负载均衡
实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...
- nginx+keepalived+tomcat实现主从高可用负载均衡
设备: 1.准备四台虚拟机,两台tomcat,两台nginx 2.两台tomcat配置相同,测试页不同 两台Tomcat配置完全相同.只有测试页面不同 安装jdk和tomcat [root@local ...
- Lvs+Keepalived+Bind+web构建高可用负载均衡系统
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hatech.blog.51cto.com/8360868/1417899 --- ...
- LVS+keepalived DR模式配置高可用负载均衡集群
实验环境 LVS-Master 10.0.100.201 VIP:10.0.100.203 LVS-Slave 10.0.100.204 WEB1-Tomcat 10.0.2.29 gat ...
- Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群
------------------------------------- 一.前言 二.MySQL Cluster基本概念 三.环境 四.配置 1.LB-Master及LB-Backup配置 2.M ...
- Linux下Keepalived+LVS-DR模式配置高可用负载均衡集群
一.环境说明: 操作系统:Centos-6.5_x86_64 keepalived软件安装在node2和node3机器上. 实际安装之前,先关闭keepalived节点(node ...
- Keepalived+LVS(dr)高可用负载均衡集群的实现
一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...
- Keepalived+Nginx实现高可用负载均衡集群
一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...
随机推荐
- Python 爬虫 根据属性值关键字搜索标签
# <div class='\"name\"'>客如云</div> company_name = soup.find_all('div',class_=re ...
- Docker_1 安装Docker-CE
安装 免sudo运行docker命令 ustc mirrors service failed 安装 Docker-CE 安装过程参考官网,Ubuntu中如下: ## 1. 从仓库安装 $ sudo a ...
- shell链接
5个实用的shell脚本面试题和答案: http://www.cnblogs.com/xinjie10001/p/6395945.html linux shell 逻辑运算符.逻辑表达式详细介绍: h ...
- linux(centos、ubuntu)网卡配置文件不生效
今天遇到个问题,服务器上ifcfg配置了eth0文件,但是通过ifcfg命令检查发现网卡IP配置并未生效. 然后通过如下配置修正: ubuntu: # vim /etc/default/grub在”G ...
- c# 的传递参数值传递与传递引用的区别,ref与out区别
值传递 C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效. 但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会 ...
- 正则表达式 (python 2)
Python提供re模块,包含所有正则表达式的功能.由于Python的字符串本身也用\转义,所以要特别注意: s = 'ABC\\-001' # Python的字符串# 对应的正则表达式字符串变成:# ...
- 在IIS7上导出所有应用程序池的方法 批量域名绑定
在IIS7+上导出所有应用程序池的方法:%windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml ...
- easyui学习笔记6—基本的Accordion(手风琴)
手风琴也是web页面中常见的一个控件,常常用在网站后台管理中,这里我们看看easyui中基本的手风琴设置. 1.先看看引用的资源 <meta charset="UTF-8" ...
- CSAPP buffer lab记录——IA32版本
CSAPP buffer lab为深入理解计算机系统(原书第二版)的配套的缓冲区溢出实验,该实验要求利用缓冲区溢出的原理解决5个难度递增的问题,分别为smoke(level 0).fizz(level ...
- bzoj1818 [Cqoi2010]内部白点
Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变黑,直到不存在内部白点为止.你的任务是统计最后网格 ...