CentOS+Keepalived+Nginx实现节点漂移


centos+keepalived+nginx实现节点漂移

Keepalived 简要介绍

Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。

方案规划

两台虚拟机分别装好nginx、keepalived
一台主机,一台从机。主节点提供服务,之后断掉主节点,观察备用节点是否启用

安装配置nginx

#安装nginx
yum install nginx
#关闭防火墙和selinux
systemctl stop firewalld.service
setenfore 0
#启动 Nginx
systemctl start nginx
#设置 Nginx 开机启动
systemctl enable nginx

分别访问两个nginx查看是否启动

安装 Keepalived

#解压安装
yum install keepalived -y

主节点配置:(注意网卡,vip,主从ip等配置)
vi /etc/keepalived/keepalived.conf
内容如下:

! Configuration File for keepalived
global_defs {
   #一个没重复的名字即可
   router_id keepalived_master
}
# 检测nginx是否运行
vrrp_script chk_nginx {
       script "/etc/keepalived/nginx_check.sh"
       interval 2
       weight -20
}
vrrp_instance VI_1 {
   # 此处不设置为MASTER,通过priority来竞争master
   state BACKUP
   # 网卡名字
   interface ens33
   # 同一个keepalived集群的virtual_router_id相同
   virtual_router_id 51
   # 权重,master要大于slave
   priority 100
   # 主备通讯时间间隔
   advert_int 1
   # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式
   # 本机即主节点ip
   unicast_src_ip 192.168.0.200
   unicast_peer {
               192.168.0.201   # 备节点ip
   }
   # 设置nopreempt防止抢占资源
   nopreempt
   # 主备保持一致
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   # 与上方nginx运行状况检测呼应
   track_script {
       chk_nginx
   }
   virtual_ipaddress {
       # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
       192.168.0.18
   }
}


从节点配置:(注意网卡,vip,主从ip等配置)

! Configuration File for keepalived

global_defs {
   #一个没重复的名字即可
   router_id keepalived_slave
}

# 检测nginx是否运行
vrrp_script chk_nginx {
       script "/etc/keepalived/nginx_check.sh"
       interval 2
       weight -20
}

vrrp_instance VI_1 {

   # 此处不设置为MASTER,通过priority来竞争master
   state BACKUP

   # 网卡名字
   interface ens33

   # 同一个keepalived集群的virtual_router_id相同
   virtual_router_id 51

   # 权重,master要大于slave
   priority 90

   # 主备通讯时间间隔
   advert_int 1

   # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式
   # 本机即主节点ip
   unicast_src_ip 192.168.0.201
   unicast_peer {
               192.168.0.200   # 备节点ip
   }

   # 设置nopreempt防止抢占资源
   nopreempt

   # 主备保持一致
   authentication {
       auth_type PASS
       auth_pass 1111
   }

   # 与上方nginx运行状况检测呼应
   track_script {
       chk_nginx
   }

   virtual_ipaddress {
       # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
       192.168.0.18
   }
}

启动nginx,keepalive
systemctl start keepalived
配置好输入vip:注意加端口号,我的nginx端口是8089


  目录