CentOS7 安装Keepalived配置nginx主从热备

CentOS7 安装Keepalived配置nginx主从热备

    • 1、keepalived是什么
    • 2、环境准备
    • 3、安装keepalived
      • 2.1 离线安装
      • 2.2 yum 安装
    • 4、配置高可用
    • 5、创建nginx检测脚本nginx_check.sh
    • 6、启动nginx和keepalived
    • 7、测试

相关资源下载地址:资源包+教程
没有积分的留言看到发

1、keepalived是什么

我们知道当tomcat宕机后nginx会自动排除宕机服务器,采用正常的tomcat访问。nginx宕机呢?
方案:提供主备nginx两台服务器,用keepalived做路由提供访问。当主nginx服务器宕机后会自动切换到备用nginx服务器上。
CentOS7 安装Keepalived配置nginx主从热备_第1张图片
CentOS7 安装Keepalived配置nginx主从热备_第2张图片

2、环境准备

三台服务器
IP 192.168.17.104 Windows7 用来测试
IP 192.168.17.129 Linux 主机
IP 192.168.17.131 Linux 从机
虚拟IP 192.168.17.50

注:实施现场虚拟ip必须保证交换机开放该ip

3、安装keepalived

2.1 离线安装

  1. 解压缩 tar -zxvf keepalived-2.0.20.tar.gz
  2. 进入到解压完的目录 cd keepalived-2.0.20
  3. ./configure --prefix=/usr/local/keepalived
  4. 编译与安装 make && make install
  5. 完成后生成 bin etc sbin share 4个文件夹,keepalived.conf配置文在/usr/local/keepalived/etc/keepalived下
  6. 创建拷贝配置文件到/etc/keepalived/中,因为keepalived默认读取该位置的配置文件 cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

注:不同版本离线文件有的缺少依赖包比较麻烦,能yum最好yum

2.2 yum 安装

yum install keepalived -y
默认安装位置为:/etc/keepalived

4、配置高可用

修改192.168.17.129 服务器的/etc/keepalived/keepalived.conf文件

global_defs {
	#notification_email {
	#	root@networkquestions.org       #定义报警邮件
	#}
	#notification_email_from warn@networkquestions.org            #定义发件人
	#smtp_server localhost               #指定smtp服务器,这里直接改为localhost
	#smtp_connect_timeout 30             #smtp连接超时时间
	router_id 192.168.17.129              #标识id,通常为 hostname,或者当前部署机器的IP
	#vrrp_skip_check_adv_addr
   #vrrp_garp_interval 0
   #vrrp_gna_interval 0
}

vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 3                            #(检测脚本执行的间隔/秒)
  weight 20                             #执行sh后,修改当前服务器权重
}

vrrp_instance VI_1 {
	state MASTER                        #设置为主服务器,备用服务器应设置为BACKUP
	interface eth0                      #定义虚拟ip绑定接口  ifconfig命令查询
	virtual_router_id 51                #VRRP组名,两个节点必须一样,指明各个节点属于同一VRRP组 
	#mcast_src_ip 192.168.17.129         #发送多播包的地址,如果不设置默认使用绑定的网卡
	priority 100                        #优先级,必须高于从服务器
	advert_int 1                        #组播信息发送间隔,检测nginx状态,两个节点设置必须一样
	authentication {                    #认证,默认即可。主从需一致。
		auth_type PASS
		auth_pass 1111
	}
	track_script {
       chk_nginx
    }
	virtual_ipaddress {
		192.168.17.50               #绑定的虚拟ip,可以绑定多个,换行填写
	}
}

192.168.17.131 安装步骤相同修改从服务器配置为

global_defs {
	#notification_email {
	#	root@networkquestions.org       #定义报警邮件
	#}
	#notification_email_from warn@networkquestions.org            #定义发件人
	#smtp_server localhost               #指定smtp服务器,这里直接改为localhost
	#smtp_connect_timeout 30             #smtp连接超时时间
	router_id 192.168.17.131              #标识id,通常为 hostname,或者当前部署机器的IP
	#vrrp_skip_check_adv_addr
   #vrrp_garp_interval 0
   #vrrp_gna_interval 0
}

vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 3                            #(检测脚本执行的间隔/秒)
  weight 20                             #执行sh后,修改当前服务器权重
}

vrrp_instance VI_1 {
	state BACKUP                        #设置为主服务器,备用服务器应设置为BACKUP
	interface eth0                      #定义虚拟ip绑定接口  ifconfig命令查询
	virtual_router_id 51                #VRRP组名,两个节点必须一样,指明各个节点属于同一VRRP组 
	#mcast_src_ip 192.168.17.131         #发送多播包的地址,如果不设置默认使用绑定的网卡
	priority 90                         #优先级,必须低于从服务器
	advert_int 1                        #组播信息发送间隔,检测nginx状态,两个节点设置必须一样
	authentication {                    #认证,默认即可。主从需一致。
		auth_type PASS
		auth_pass 1111
	}
	track_script {
       chk_nginx
    }
	virtual_ipaddress {
		192.168.17.50              #绑定的虚拟ip,可以绑定多个,换行填写
	}
}

5、创建nginx检测脚本nginx_check.sh

如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程,keepalived将虚拟 ip 绑定到 BACKUP 机器上。内容如下:

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

6、启动nginx和keepalived

keeplived启动命令:

systemctl start keepalived.service
或者
service keepalived start

启动检查:

ps -ef | grep keepalived
或者
systemctl status keepalived.service

keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp
在这里插入图片描述
CentOS7 安装Keepalived配置nginx主从热备_第3张图片

停止keepalived服务:

systemctl stop keepalived.service
或者
service keepalived stop

7、测试

主从服务器keepalived启动后通过ip a 可以查看浮动ip在哪台机器上
CentOS7 安装Keepalived配置nginx主从热备_第4张图片

  1. 关闭含有浮动ip的服务器keepalived后重新查看ip a
  2. 当前服务器浮动ip消失,另一台服务器浮动ip加载
  3. 如果只关闭nginx,keepalived的nginx_check.sh脚本会自动探活nginx,重新启动该机器的nginx,如果nginx启动成功则浮动ip映射不变。
  4. windows测试服务器可直接访问浮动ip+nginx端口号测试页面效果

你可能感兴趣的:(Nginx学习笔记,nginx,keepalived)