Nginx+keepalived做双机热备加tomcat负载均衡
2014-03-10 17:05
357 查看
Nginx+keepalived做双机热备加tomcat负载均衡
环境说明: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[code]tar -zxvf pcre-8.10.tar.gz cd pcre-8.10 ./configure make make install2.安装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-dev3.修改配置文件为以下内容:
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 successful5.优化内核参数
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=94500000915000000927000000 net.ipv4.tcp_max_orphans=3276800 net.ipv4.ip_local_port_range=102465535保存退出后执行
sysctl -p6.切割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 install3.安装keepalived
tar -zxvf keepalived-1.1.19.tar.gz cd keepalived-1.1.19 ./configure --prefix=/usr/local/keepalived make make install4.修改配置文件为以下内容:vim /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration Filefor 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 5if["$(ps -ef | grep "nginx: master process"| grep -v grep )"==""] then killall keepalived fi fi5.启动keepalived
/usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf注:备机的keepalived的安装和上面一样,只要把配置文件改为以下(把MASTER改为BACKUP)
! Configuration Filefor 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.51MASTER机器上日志会显示
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
相关文章推荐
- Nginx+keepalived做双机热备-keepalived安装
- CentOS6.5下keepalived+nginx实现双机热备
- keepalived+nginx双机热备(HA高可用,单主从非双主,双主配置文件需要把ip配两个相反的,nginx负载均衡需要参考下文末尾超链接)
- Nginx+keepalived双机热备(主从模式)
- nginx+keepalived实现双机热备高可用性
- keepalived+nginx实现双机热备
- keepalived+nginx实现双机热备的高可用
- Nginx+keepalived双机热备(主从模式)
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
- nginx+keepalived实现双机热备
- Nginx+keepalived双机热备
- keepalived+nginx实现双机热备
- Nginx+keepalived做双机热备加tomcat负载均衡
- nginx+keepalived 双机热备
- Nginx+keepalived双机热备(主从模式)
- Nginx+Keepalived高可用负载均衡双机热备
- nginx+keepalived实现双机热备
- nginx+keepalievd,实现负载均衡和故障点切换。keepalived双机热备。
- keepalived+nginx实现双机热备
- nginx + keepalived 双机热备