keepalived是一款服务器状态检测和故障切换的工具。在其配置文件中,可以配置主备服务器和该服务器的状态检测请求。也就是说keepalived可以根据配置的请求,在提供服务期间不断向指定服务器发送请求,如果该请求返回的状态码是200,则表示该服务器状态是正常的,如果不正常,那么keepalived就会将该服务器给下线掉,然后将备用服务器设置为上线状态。
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
一、准备
- 两台服务器(互相可以ping通)
- 都装nginx、keepalived
- 虚拟ip需要跟服务器ip在同一个网段
二、安装
-
nginx
参见我的另一篇文章
-
keepalived
yum install keepalived –y
安装之后,在 etc 里面生成目录 keepalived ,有文件 keepalived.conf
三、配置
-
keepalived主服务器配置(IP:192.168.0.6)
global_defs { notification_email { 782435839@qq.com } #定义报警邮件地址 notification_email_from 782435839@qq.com smtp_server 127.0.0.1 #邮箱服务器 smtp_connect_timeout 30 #定义超时时间 router_id vm01 #定义路由标识信息,相同局域网唯一,一般为主机名 } vrrp_script chk_http_port { script "/etc/nginxKeep/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { #指定认证方式 auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.50 // VRRP H 虚拟地址 } }
-
keepalived丛服务器配置(IP:192.168.0.7)
#跟主服务器一样 #不同点修改 router_id vm02 #定义路由标识信息,相同局域网唯一,一般为主机名 state BACKUP # 备份服务器上将 MASTER 改为 BACKUP priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
-
检测脚本
nginx_check.sh
#!/bin/bash #nginx进程是否存在 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then #尝试启动一次nginx,停止5秒后再次检测 /etc/nginx sleep 5 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then #如果启动没成功,就杀掉keepalive触发主备切换 service keepalived stop fi fi
四、测试
两台服务器启动nginx和keepalived,访问虚拟ip192.168.0.50,都可访问到
关闭主服务器nginx和keepalived,192.168.0.50依旧可以访问
备注:
- 主要配置文件的权限为题
- 主要防火墙要开放端口
- selinux可能需要关闭
补充:
查找yum安装gcc的具体位置
rpm -qa | grep gcc
查找软件安装位置
rpm -ql gcc-4.8.5-36.el7.x86_64
卸载
yum -y remove gcc