• 利用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服务自动启动

  • 相关阅读:
    [leetcode] 17. 电话号码的字母组合
    C++17 Fold Expressions
    多线程----NSOperation
    CGD---1--开辟并发新线程
    彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题(转)
    ios 内存使用陷阱 和imageNamed 、imageWithContentsOfFile:(转)
    (转)unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法
    ios开发种证书
    使用CAShapeLayer与UIBezierPath画出想要的图形
    定位子字符串的位置
  • 原文地址:https://www.cnblogs.com/saville/p/1931401.html
Copyright © 2020-2023  润新知