linux复盘:集群构架基础keepalived+nginx

keepalived+nginx

准备:linux

两台虚拟机两个ip131和133,131做为master,133做为backupnginx

下载keeplived和nginx,为啥要为nginx服务实现高可用,在生产环境中,不少企业把nginx当作负载均衡的分发器,它绝对不能出现故障,因此为它实现高可用vip=100vim

下载:bash

两台机器都执行yum install -y keepalived负载均衡

两台机器都安装nginx,其中131上已经编译安装过nginxless

133上须要yum安装nginx: yum install -y nginxspa

开始配置backup131:日志

设置vip=100,在keeplived中定义,两台机器主从,主挂了从起来启动nginx提供服务,那么从nginx时访问那个ip,解析ip解析到哪儿,从起来从的ip是什么,须要定义共有ipcode

vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.188.100
    }
    track_script {
        chk_nginx
    }
}

131上nginx编辑监控脚本:router

vim  /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#若是进程为0,则启动nginx,而且再次检测nginx进程数量,
#若是还为0,说明nginx没法启动,此时须要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

脚本中最后关闭主的keepalived是为了防止出现脑裂,当主的keepalived停了从的服务会自动起来,若是住的keepalived没有被杀死从的keepalived也起来了,会致使主从争抢资源争抢vip由于都监听vip,域名访问时不知道访问那个机器会出现紊乱,此状况不容许发生。

chmod 755 /usr/local/sbin/check_ng.sh 这里的这个文件本身定义

systemctl start  keepalived 131启动服务

查看是否启动:

ps aux | grep keep 启动起来了

ps aux | grep nginx 也启动了

/etc/init.d/nginx stop 如今手动停掉nginx服务

继续查看nginx服务是否会自动加载看nginx日志,less /var/log/messages

开始配置backp133:

首先检查主从防火墙,selinux和firewalld等关闭掉

selinux永久关闭 vi /etc/selinux/config selinux修改此处为disabled,reboot重启生效

关闭firewalld:
systemctl disable firewalled 先暂停,不让开机启动

systemctl stop firewalld 关闭服务

关闭iptables:
systemctl disable iptables

systemctl stop iptables

配置133keepalived文件:

vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {
    state BACKUP                   #修改第一处,变成从
    interface ens33
    virtual_router_id 51
    priority 90                     #权重90,其余地方都不变
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.188.100
    }
    track_script {
        chk_nginx
    }
}

编写133nginx监控脚本

vim  /usr/local/sbin/check_ng.sh
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#若是进程为0,则启动nginx,而且再次检测nginx进程数量,
#若是还为0,说明nginx没法启动,此时须要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

此时关闭131nginx会自动重启

此时访问100会访问到131上去,这里并无负载均衡

关闭131的keepalived,133的keepalived启动进入工做状态

相关文章
相关标签/搜索