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