- 浏览: 506295 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
环境说明:
nginx1: 192.168.2.47 nginx2: 192.168.2.48 tomcat1: 192.168.2.49 tomcat2: 192.168.2.50 vip: 192.168.2.51
一.Nginx配置
1.安装Nginx所需pcre库
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz
tar - zxvf pcre- 8.10 .tar .gz cd pcre- 8.10 ./ configure make make install
2.安装Nginx
wget http://nginx.org/download/nginx-0.8.52.tar.gz
groupadd www useradd - g www www tar zxvf nginx- 0.8.52.tar .gz cd nginx- 0.8.52/ ./ configure -- user= www -- group= www -- prefix=/ usr/ local/ nginx -- with- http_stub_status_module -- with- http_ssl_module make make install
注:如果出现以下错误
./ configure: error: SSL modules require the OpenSSL library. Centos 需要安装openssl- devel Ubuntu则需要安装: sudo apt- get install libssl- dev
3.修改配置文件为以下内容:
user www www; worker_processes 2 ; pid logs/ nginx.pid ; worker_rlimit_nofile 51200 ; events { use epoll; worker_connections 51200 ; } http { include mime.types ; default_type application/ octet- stream; keepalive_timeout 120 ; server_tokens off; send_timeout 60 ; tcp_nodelay on; upstream tomcats { server 192.168.2.50: 8080 ; server 192.168.2.49: 8080 ; #ip_hash; #在没有做共享session的情况下ip_hash可以解决session问题 } server { listen 80 ; server_name 192.168.2.48; location / { proxy_pass http: //tomcats; proxy_set_header Host $host; proxy_set_header X- Real- IP $remote_addr; proxy_set_header X- Forwarded- For $proxy_add_x_forwarded_for; } log_format access_log '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' ; access_log / usr/ local/ nginx/ logs/ access.log access_log; } }
4.测试配置文件
/ usr/ local/ nginx/ sbin/ nginx - t
如果出现以下情况
/ usr/ local/ nginx/ sbin/ nginx: error while loading shared libraries: libpcre.so .0: or directory
解决方法:
sudo ln - s / usr/ local/ lib/ libpcre.so .0 / usr/ lib/ libpcre.so .0
/usr/local/nginx/sbin/nginx -t
显示以下信息为正确的
the configuration file / usr/ local/ nginx/ conf/ nginx.conf syntax is ok configuration file / usr/ local/ nginx/ conf/ nginx.conf test is successful
5.优化内核参数
vim /etc/sysctl.conf在最后添加
net.ipv4 .tcp_max_syn_backlog = 65536 net.core .netdev_max_backlog = 32768 net.core .somaxconn = 32768 net.core .wmem_default = 8388608 net.core .rmem_default = 8388608 net.core .rmem_max = 16777216 net.core .wmem_max = 16777216 net.ipv4 .tcp_timestamps = 0 net.ipv4 .tcp_synack_retries = 2 net.ipv4 .tcp_syn_retries = 2 net.ipv4 .tcp_tw_recycle = 1 net.ipv4 .tcp_tw_reuse = 1 net.ipv4 .tcp_mem = 94500000 915000000 927000000 net.ipv4 .tcp_max_orphans = 3276800 net.ipv4 .ip_local_port_range = 1024 65535
保存退出后执行
sysctl -
p
6.切割Nginx日志脚本
#!/ bin/ bash PATH_LOGS= "/usr/local/nginx/logs" YEAR= `date - d "-1 days" + "%Y" ` MONTH= `date - d "-1 days" + "%m" ` mkdir - p $PATH_LOGS/ $YEAR/ $MONTH mv $PATH_LOGS/ access.log $PATH_LOGS/ $YEAR/ $MONTH/ access_$( date - d "-1 days" + "%Y%m%d" ) .log kill - USR1 `cat $PATH_LOGS/ nginx.pid `
把该脚本加到crontab每天00点执行
注:备机的Nginx和以上安装步骤一样
二.安装配置Keepalived
1.下载所需要的软件
wget http://keepalived.org/software/keepalived-1.1.19.tar.gz
wget http://rpm5.org/files/popt/popt-1.16.tar.gz
2.安装popt
编译keepalived时需要popt,否则会报以下错误:
configure: error: Popt libraries is required
tar - zxvf popt- 1.16 .tar .gz cd popt- 1.16 ./ configure make make install
3.安装keepalived
tar - zxvf keepalived- 1.1.19.tar .gz cd keepalived- 1.1.19 ./ configure -- prefix=/ usr/ local/ keepalived make make install
4.修改配置文件为以下内容:
vim /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Nginx { script "/root/scripts/monitor_nginx.sh" #根据自己的实际路径放置monitor_nginx.sh interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1234 } track_script { Monitor_Nginx } virtual_ipaddress { 192.168.2.51 } }
注:monitor_nginx.sh为监控nginx进程的脚本,内容如下
#!/ bin/ bash if [ "$(ps -ef | grep " nginx: master process"| grep -v grep )" == "" ] then / usr/ local/ nginx/ sbin/ nginx sleep 5 if [ "$(ps -ef | grep " nginx: master process"| grep -v grep )" == "" ] then killall keepalived fi fi
5.启动keepalived
/ usr/ local/ keepalived/ sbin/ keepalived - D - f / usr/ local/ keepalived/ etc/ keepalived/ keepalived.conf
注:备机的keepalived的安装和上面一样,只要把配置文件改为以下(把MASTER改为BACKUP)
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Nginx { script "/root/scripts/monitor_nginx.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP #改为BACKUP interface eth0 virtual_router_id 51 priority 100 #比MASTER数值要低 advert_int 1 authentication { auth_type PASS auth_pass 1234 } track_script { Monitor_Nginx } virtual_ipaddress { 192.168.2.51 } }
三.测试步骤
1. 访问VIP看是否能够正常访问后端的tomcat
2. 停止其中一个tomcat看是否能将访问转到另一台上
3. 停止两台nginx上任何一个nginx进程看监控进程脚本是否会自动启动nginx
4. 停止任何一台nginx上的keepalived进程看另一台是否接管vip
比如停止Master上的keepalived,例如如下killall keepalived,查看BACKUP机器是否已经接管,如果BACKUP接管后,BACKUP机器日志会是出下情况
tail /var/log/syslog
Keepalived_vrrp: VRRP_Instance( VI_1) Transition to MASTER STATE Keepalived_vrrp: VRRP_Instance( VI_1) Entering MASTER STATE Keepalived_vrrp: VRRP_Instance( VI_1) setting protocol VIPs. Keepalived_vrrp : VRRP_Instance( VI_1) Sending gratuitous ARPs on eth0 for 192.168.2.51
MASTER机器上日志会显示
Keepalived_vrrp: Terminating VRRP child process on signal Keepalived_vrrp: VRRP_Instance( VI_1) removing protocol VIPs.
现在把MASTER上的Keepalived重新启动,会看到MASTER重新接管VIP,并对外提供服务,BACKUP仍旧回到BACKUP STATE,如果不是这种情况,请检查配置文件和步骤.
现在的BACKUP日志如下:
Keepalived_vrrp: VRRP_Instance( VI_1) Received higher prio advert Keepalived_vrrp: VRRP_Instance( VI_1) Entering BACKUP STATE Keepalived_vrrp: VRRP_Instance( VI_1) removing protocol VIPs.
Master日志如下:
Keepalived_vrrp: VRRP_Script( Monitor_Nginx) succeeded Keepalived_vrrp: VRRP_Instance( VI_1) Transition to MASTER STATE Keepalived_vrrp: VRRP_Instance( VI_1) Entering MASTER STATE Keepalived_vrrp: VRRP_Instance( VI_1) setting protocol VIPs. Keepalived_vrrp : VRRP_Instance( VI_1) Sending gratuitous ARPs on eth0 for 192.168.2.51
发表评论
-
Spring + iBatis 的多库横向切分简易解决思路2
2011-12-26 16:43 2023Table of Contents I. 向Co ... -
Spring + iBatis 的多库横向切分简易解决思路
2011-12-26 16:36 11341.引言 笔者最近在做一个互联网的“类SNS” ... -
tomcat端口被长时间连接,CPU使用率高的原因分析
2011-11-20 23:50 1034tomcat使用的是电脑的80端口。 当客户端访问的 ... -
JVM Java HeapSpace到达临界值的高CPU问题
2011-11-10 19:27 1070本周有同事反馈,IDC环 ... -
java profile【cpu负载过高】
2011-11-10 17:58 1103问题描述: cpu负载陡增,内存占用情况稳定。(在多cpu ... -
mongodb查询
2011-09-03 13:42 1023#查询 查询 name = "bruce&qu ... -
MySQL 6.0 集群(cluster)+复制(replicate)
2011-05-05 02:08 1459http://www.net5 . 简介 本 ... -
centos下MySQL主从同步配置
2011-05-05 00:38 1017一、环境 主机: ... -
HadHoop分布式框架配置(二)
2011-03-16 21:42 1124我们假定,你已经下 ... -
HadHoop分布式框架简介(一)
2011-03-16 21:42 1442分布式系统基本原理 分布式系统被设计成可以存 ... -
Linux网管日记(9):Linux的前世今生
2011-03-13 16:00 8501.Linux的前世 地球人 ... -
网络管理员日记(8)里应外合:Linux下的后门和日志工具
2011-03-13 15:59 1059攻入Linux系统后,很多入侵者往往就开始得意忘形了。这其中还 ... -
Linux网络管理员日记(7)更上一层楼:Linux服务器的安全实践
2011-03-13 15:58 960网络安全实践中,防火 ... -
Linux网络管理员日记(6)Linux邮件服务器的安装和安全
2011-03-13 15:57 1460四、更简单高效:Linux 邮件服务器的安装和安全 在 ... -
Linux管理员日记(5) 更简单高效:Linux邮件服务器的安装和安全
2011-03-13 15:54 1127在网络管理员的日常工作中,邮件服务器扮演着一个非常重要的角色, ... -
Linux管理日记(4)——免费而稳定:Web服务器和FTP服务器的安装
2011-03-13 15:53 1221为什么要采用Linux操作系统作为网络服务器?答案是:稳定性高 ... -
Linux管理员日记连载(3)简单易操作:类似Windows控制面板的Webmin
2011-03-13 15:52 1185安装完Linux操作系统后 ... -
Linux管理员日记连载(2)——Linux系统下的设备和文件配置
2011-03-13 15:51 962新建一个虚拟机后,除 ... -
Linux管理员日记(1)——Linux服务器傻瓜式安装完全手册
2011-03-13 15:50 1939内容简介 从桌面到服务器,从 ... -
Samba服务器的安装配置和应用
2011-03-12 14:34 1108随着计算机网络的发展 ...
相关推荐
Nginx+keepalived双机热备(主从模式),根据文档操作,本人部署和测试过,可运行
Nginx+keepalived+tomcat实现性负载均衡
nginx+keepalive主从 双机热备 + 自动切换解决方案 就可实现负载均衡及高可用集群
Nginx负载均衡+keepalived双机热备
本片详细记录了Nginx+keepalived双机热备(主从模式)高可用集群方案-完整部署过程,讲解十分到位,可作为线上实操手册。特在此分享,希望能帮助到有用到的朋友。
keepalived+nginx双机热备+负载均衡 非抢占模式,支持虚拟IP切换,tomcat负载均衡配置等服务,可以动态自动切换
redhat6.4+nginx+keepalived__实现双机热备和负载均衡
应用nginx和keepalived进行双机环境的搭建。解决nginx集群部署时的单点故障问题。
Nginx++Keepalived+Tomcat负载 均衡 &动 静 分 离。配置
nginx+keepalive主从 双机热备 + 自动切换解决方案
Nginx+KeepAlived+Tomcat负载架构 这个可以实现tomcat集群,并且可以使服务器主备机进行切换。如果其中一台机器当机,会自动切换到另一台机器。客服端感受不到服务器当掉。非常实用。
nginx+php+mysql+heartbeat配置双机热备文档.pdf
Nginx+keepalived+tomcat实现性负载均衡
运行结果图片在文档里面
通过nginx+keepalived+tomcat实现服务器负载均衡的高可用方案,解决传统负载均衡服务器宕机后无法自行切换从而导致雪崩效应的场景
本文档详细介绍了如何利用keepalived实现Nginx的高可用和负载均衡的步骤,且已经在生产环境中部署验证通过
nginx+keepalived使用文档.nginx+keepalived使用文档.
Linux下搭建Nginx+Keepalived+Redis+Tomcat实现session共享 、负载均衡、高可用
CentOS系统安装配置Nginx+keepalived实现负载均衡