利用Nginx+Keepalived实现web负载均衡

去年,尝试使用了Nginx和Keepalived实现web负载均衡,现将部署心得总结一下

1.安装Linux

2. 为了确保能在Nginx 中使用正则表达式进行更灵活的配置,需要先安装Pcre。依次执行下列命令完成安装

# tar zxvf pcre-8.10.tar.gz

# cd pcre-8.10

#./configure

# make

# make install

需要将libpcre.alibpcre.la拷到.lib目录下

# mkdir /usr/local/lib/.libs

# cp /usr/local/lib/libpcre.a  /usr/local/lib/.libs/libpcre.a

# cp /usr/local/lib/libpcre.la  /usr/local/lib/.libs/libpcre.la

4.安装配置Nginx

1)安装Nginx。依次执行下列命令

# tar zxvf nginx-0.7.67.tar.gz

# cd nginx-0.7.67

# ./configure --with-pcre=/usr/local/lib/ --with-http_stub_status_module

打开/root/nginx-0.7.67/objs/makefile,删除./configure --disable-shared

# make

# make install

2)修改Nginx配置文件

       worker_processes配置为cpu核数

       events节点修改如下:

              events {

                            use epoll;

                worker_connections  20480;

}

       upstream节点修改如下,其中192.168.1.1和192.168.1.2为2台web服务器

              upstream 192.168.0.1 {

                                     ip_hash;

                                     server 192.168.1.1:80 max_fails=2 fail_timeout=60s;

                                     server 192.168.1.2:80 max_fails=2 fail_timeout=60s;

            }

       server节点修改如下:

                   server {

                            listen                  80;

                            server_name          192.168.0.1;

                            access_log  logs/web.log;  #main;

                       location / {

                                     proxy_pass http://192.168.0.1;# 反向代理

                                     proxy_set_header        X-Real-IP       $remote_addr;

                                     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                       }      

                       location  /nginxstatus {

                                     stub_status on; #Nginx 状态监控配置

                                     access_log off;

                            }

             }

3)执行/usr/local/nginx/sbin/nginx –t验证配置文件是否正确

4)执行/usr/local/nginx/sbin/nginx启动Nginx,此时可通过执行

ps –ef | grep nginx 命令查看Nginx进程,在浏览器输入

http://192.168.0.1/nginxstatus,可以查看Nginx活动状态,其中nginxstatus必须与配置文件中配置的完全一致(包括大小写)。

5)将Nginx安装成Linux服务

       1.nginx文件拷到/etc/init.d目录中 

       2.为该脚本增加启动权限

# chmod 755 /etc/init.d/nginx

3.加为系统服务,自动启动

# chkconfig --level 2345 nginx on

4.手动启动

# service nginx start

6)切割Nginx日志,避免日志文件过大

创建切割Nginx日志的shell脚本 ,修改logs_pathlogs_names两段

# !/bin/bash  
# by heui  
# Nginx logs path  
logs_path="/usr/local/nginx/logs/" 
# Nginx logs names here  
logs_names=(web)  
 
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/  
num=${#logs_names[@]}  
for((i=0;i<num;i++));do  
mv ${logs_path}${logs_names[i]}.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/${logs_names[i]}_$(date -d "yesterday" +"%Y%m%d").log  
done  
 
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

执行crontab -e

输入以下内容并保存

00 00 * * * /bin/bash /usr/local/nginx/cut_nginx_log.sh

5. 安装配置Keepalived消除Nginx单点故障

1)安装Keepalived。依次执行下列命令完成安装

# tar zxvf keepalived-1.1.20.tar.gz

# cd keepalived-1.1.20

#./configure --prefix=/usr/local/keepalived

# make

# make install

2)修改Keepalived配置文件,其中192.168.1.1为Nginx服务器

! Configuration File for keepalived

         vrrp_sync_group VGB {

           group {

                  VI_1

                       }

         }

 

         vrrp_instance VI_1 {

           state MASTER                                      #后备机改为BACKUP

           interface eth0

           virtual_router_id 51

           mcast_src_ip 192.168.2.1           priority 100                                            #后备机该值要小于主机,如50

           advert_int 1

           authentication {

                      auth_type PASS

                      auth_pass 1111

           }

           virtual_ipaddress {

                      192.168.0.1

            }

         }

3)将Keepalived安装成Linux服务。依次执行下列命令

#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ 

#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 

#mkdir /etc/keepalived 

#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 

#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

# chkconfig --level 2345 keepalived on

#service keepalived start

4)禁用iptables,否则Keepalived故障转移会失效

执行service iptables stop关闭iptables服务

执行chkconfig iptables off取消iptables服务自动启动

原文地址:https://www.cnblogs.com/saville/p/1931401.html