nginx结合keepalived实现高可用

前言

为了知足系统的高可用,通常都须要搭建集群。当主机挂掉的时候,咱们的系统还能够继续提供服务。当咱们使用nginx做为反向代理和动静分离服务器的时候,也是如此。实现系统的高可用性,是咱们程序员关注的重点。本文介绍了nginx结合keepalived实现主从模式搭建高可用集群。nginx

前提知识

本文不做过多的nginx相关配置介绍,默认读者已经了解nginx的相关知识。程序员

keepalived的介绍

Keepalived的做用是检测服务器的状态,若是有一台web服务器宕机,或工做出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其余服务器代替该服务器的工做,当服务器工做正常后Keepalived自动将服务器加入到服务器群中,这些工做所有自动完成,不须要人工干涉,须要人工作的只是修复故障的服务器。web

系统架构图

实现步骤

1.环境配置

1.1 安装nginx

安装相关依赖

yum install pcre-devel zlib zlib-devel openssl openssl-devel
复制代码

上传解压压缩包

tar zxvf nginx-1.12.2.tar.gz
复制代码

建立目录,检测配置

mkdir -p /usr/local/nginx
./configure --prefix=/usr/local/nginx
复制代码

预编译和安装

make && make install
复制代码

启动、中止相关命令

cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s start
复制代码

1.2 安装keepalived

yum install -y keepalived
复制代码

2.主机配置

修改keepalived配置文件

vim /etc/keepalived/keepalived.conf
复制代码

修改的内容以下

#新增的配置
vrrp_script chk_http_port {
    script "/shell/nginx_check.sh" #脚本地址
    interval 2 #检测脚本执行的间隔
    weight 2 #比重
}

vrrp_instance VI_1 {
    state MASTER #主服务器为MASTER,从服务器为BACKUP
    interface eth0 #网卡
    virtual_router_id 51 #主、备机的virtual_router_id必须相同
    priority 100 #主、备机不一样的优先级,主机优先级较大,备机值较小,默认是100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟IP地址
    virtual_ipaddress {
        192.168.126.88
    }
}
复制代码

建立编写脚本文件

mkdir /shell/nginx_check.sh
vim /shell/nginx_check.sh
复制代码

脚本文件内容以下

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                killall keepalived
        fi
fi
复制代码

3.从机配置

修改keepalived配置文件

vrrp_instance VI_1 {
    state BACKUP #主服务器为MASTER,从服务器为BACKUP
    interface eth0 #网卡
    virtual_router_id 51 #主、备机的virtual_router_id必须相同
    priority 50 #主、备机不一样的优先级,主机优先级较大,备机值较小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟IP地址
    virtual_ipaddress {
        192.168.126.88
    }
}
复制代码

4.启动服务

启动

service keepalived start
复制代码

查看虚拟IP地址

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff
    inet 192.168.126.100/24 brd 192.168.126.255 scope global eth0
    inet 192.168.126.88/32 scope global eth0
    inet6 fe80::20c:29ff:fe4f:31ce/64 scope link 
       valid_lft forever preferred_lft forever
复制代码

5.关闭防火墙测试

关闭防火墙

service iptables stop
#查看防火墙是否开机自启动
chkconfig --list | grep iptables
chkconfig iptables off
复制代码

登录虚拟IP地址查看

http://192.168.126.88/
复制代码
相关文章
相关标签/搜索