nginx与keepalived实现高可用

准备四台主机

首先都关闭防火墙

systemctl stop firewalld

setenforce 0

iptables -F

 

第一台主机

#安装keepalived

[root@localhost ~]# yum -y install keepalived

#安装nginx

[root@localhost ~]# yum -y install nginx

#keepalived配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

   vrrp_skip_check_adv_addr

   vrrp_strict

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

vrrp_script check_nginx {  #引入脚本文件

       script "/shell/nginx_check.sh"

       interval 2

       weight -20

}

vrrp_instance VI_1 {

    state MASTER   #主

    interface eno16777728 #心跳网卡

    virtual_router_id 51

    priority 100 #优先级

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.200.254

    }

    track_script {

       check_nginx  #引用脚本

    }

}

安装nginx

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel

[root@localhost~]# useradd -M -s /sbin/nologin  nginx

[root@localhost~]# tar xf nginx-1.6.2.tar.gz -C /usr/src

[root@localhost~]# cd /usr/src/nginx-1.6.2

[root@localhost nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

31     keepalive_timeout  65;

 32     upstream httpd1 {

 33       server 192.168.200.14:80 weight=1;

 34       server 192.168.200.15:80 weight=2;

 35   }

 

46         location / {

 47             root   html;

 48             proxy_pass http://httpd1;

 49             proxy_set_header Host $host;

 50         }

[root@localhost ~]# nginx

第二台主机

从keepalived设置

#安装keepalived

[root@localhost ~]# yum -y install keepalived

#安装nginx

[root@localhost ~]# yum -y install nginx

______________________________________________________________

#keepalived配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

   vrrp_skip_check_adv_addr

   vrrp_strict

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

vrrp_script check_nginx {

       script "/shell/nginx_check.sh"

       interval 2

       weight -20

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface eno16777728

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.200.201

    }

    track_script {

       check_nginx

    }

}

安装nginx

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel

[root@localhost~]# useradd -M -s /sbin/nologin  nginx

[root@localhost~]# tar xf nginx-1.6.2.tar.gz -C /usr/src

[root@localhost~]# cd /usr/src/nginx-1.6.2

[root@localhost nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

31     keepalive_timeout  65;

 32     upstream httpd1 {

 33       server 192.168.200.14:80 weight=1;

 34       server 192.168.200.15:80 weight=2;

 35   }

 

46         location / {

 47             root   html;

 48             proxy_pass http://httpd1;

 49             proxy_set_header Host $host;

 50         }

[root@localhost ~]# nginx

四、nginx_check.sh shell文件,配置为周期性任务

#!/bin/bash

count="$(ps -C nginx --no-header|wc -l)"

 

if [ $count -eq 0 ];then

        systemctl restart nginx

        sleep 2

        if [ ps -c nginx --no-header|wc -l -eq 0 ];then

                systemctl stop keepalived

        fi

fi

#配置周期任务不再演示

第三台主机

首先安装nginx1

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel

[root@localhost~]# useradd -M -s /sbin/nologin  nginx

[root@localhost~]# tar xf nginx-1.6.2.tar.gz -C /usr/src

[root@localhost~]# cd /usr/src/nginx-1.6.2

[root@localhost nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

[root@localhoost nginx-1.6.2]# cd /usr/local/nginx/html/

[root@localhost html]# echo "11111" > index.html

[root@localhost html]# /usr/local/nginx/sbin/nginx

[root@localhost html]# netstat -anpt |grep nginx

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4503/nginx 

第四台

安装nginx2,同nginx1搭建方式一样

与Nginx1唯一不同的是:

[root@localhost html]# echo "22222" > index.html

测试浏览器

原文地址:https://www.cnblogs.com/liyurui/p/11641993.html