nginx集群(转载)

keepalived简介(百度百科
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
https://baike.baidu.com/item/Keepalived/10346758?fr=aladdin
集群的实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4个服务器
webserverone 192.168.23.250
webservertwo 192.168.23.251
nginxserverone 192.168.23.150
nginxservertwo 192.168.23.151

准备工作:
按照nginx单机版的配置,再配置nginx和web服务器
准备脚本

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

安装keepalived,配置负载均衡服务器

安装配置 
      yum -y  install   keepalived 	
主机配置
     vi /etc/keepalived/keepalived.conf

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]   #发送通知邮件时邮件源地址是谁
   smtp_server 127.0.0.1	
   smtp_connect_timeout 30 #连接smtp连接超时时间
   router_id LVS_DEVEL  #机器标识
}

#用来做健康检查的,当时检查失败时会将vrrp_instance的priority减少相应的值。

 vrrp_script chk_http_port {
           script "/usr/checknginx.sh"       #监控脚本
           interval 2                                         #监控脚本检测周期秒
           weight  10       
    }

#意思是如果script中的指令执行失败,那么相应的vrrp_instance的优先级会减少10个点。

vrrp_instance VI_1 {
    state MASTER #backup机器配置为BACKUP
    interface eth0     #绑定的网卡名称
    virtual_router_id  51  #必须与backup机器配置相同
    priority 100  #优先级,要比backup机器高至少50
    advert_int 1
    authentication {
        auth_type PASS  #授权类型,必须与backup相同
        auth_pass 1111   #授权密码,必须与backup相同
    }
    virtual_ipaddress {
        192.168.23.220    #虚拟ip地址,必须与backup相同
    }
    nopreempt   #不抢占IP,即当keepalived发生切换后,如果master服务器恢复正常后,backup不会自动重新切换回master,
                                                        #这样避免来回切换带来的系统开销,同时也避免了IP切换带来的系统不稳定性
}
备机
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1	
   smtp_connect_timeout 30
   router_id LVS_DEVEL_BAK
}
  vrrp_script chk_http_port {
           script "/usr/checknginx.sh"       #监控脚本
           interval 2                                         #监控脚本检测周期
           weight -10                                          #意思是如果script中的指令执行失败,那么相应的vrrp_instance的优先级会减少10个点。
        }
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS  #授权类型,必须与backup相同
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.23.220
    }
    nopreempt
}

启动重启:

service keepalived reload
service keepalived restart  先启动nginx服务,再启动keepalived 要用restart
                               start

猜你喜欢

转载自blog.csdn.net/weixin_44001965/article/details/86519732