1.下载
Keepalived官方下载地址: http://www.keepalived.org/download.html
本次下载的是keepalived-1.4.4.tar.gz
上传到服务器后解压到当前目录:
tar -zxvf keepalived-1.4.4.tar.gz
2.安装
进入keepalived-1.4.4目录编译并安装
#进入keepalived-1.4.4目录 cd keepalived-1.4.4 #检查依赖库是否正确 ./configure --prefix=/etc/keepalived #编译并安装 make && make install
复制文件并创建软连接
因为没有用默认安装,需自行移动文件
mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/keepalived-1.4.4/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived ln -s /home/bship/keepalived /usr/sbin/
在/etc/keepalived目录下创建Nginx启动脚本nginx_check.sh(该脚本用于检测nginx的进程)
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx -s stop #尝试重新启动nginx /usr/bin/nginx #睡眠2秒 sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点 killall keepalived fi fi
并给nginx_check.sh添加执行权限
chmod +x /etc/keepalived/nginx_check.sh
3.配置文件
这里演示配置90服务器上的Keepalived,90服务器为master主机,91,92为备机。
#进入Keepalived配置目录,进行Keepalived.conf的配置 cd /etc/keepalived
master的keepalived.conf配置如下
! Configuration File for keepalived #全局配置 删掉了邮箱部分暂时用不到 global_defs { # 负载均衡唯一标识,其实就是一个标识 router_id Nginx_90 } #vrrp_script 定时执行脚本 vrrp_script chk_nginx { # 执行脚本路径 script "/etc/keepalived/nginx_check.sh" # 执行间隔之间默认1S interval 2 # 优先级(-254~254)默认2 weight -20 } #vrrp_instance 节点信息 vrrp_instance VI_1 { #指定节点的处所状态MASTER | BACKUP state MASTER # 网卡信息 ip address查看网卡信息 interface ens192 # 让master和backup在同一个虚拟路由里,id必须相同 virtual_router_id 190 # 优先级 谁高谁将成为master priority 100 # 设置为不抢占。默认是抢占的,当高优先级的机器恢复后,会抢占低优先级的机器成为MASTER,而不抢占,则允许低优先级的机器继续成为MASTER,
#即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。 # nopreempt # 指定发送vrrp通告的时间间隔1S advert_int 1 authentication { # 认证方式 PASS(简单密码认证,推荐) | AH(IPSEC认证,不推荐) auth_type PASS # 密码最多8位 auth_pass 1111 } # 指定VIP地址,可虚拟多个VIP地址 virtual_ipaddress { 196.168.0.190 } track_script { chk_nginx } } virtual_server 196.168.0.190 443 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP }
主机和备机的配置不一致(router_id和state需要修改)
开通端口
iptables -I INPUT -p 112 -j ACCEPT
4.启动服务
分别启动master90和backup91,92
1.启动方式一
#设置开机自动启动 systemctl enable keepalived.service #取消开机自动启动 systemctl disable keepalived.service #启动服务 systemctl start keepalived.service #重启服务 systemctl restart keepalived.service #停止服务 systemctl stop keepalived.service #查看服务状态 systemctl status keepalived.service
启动方式二
#启动 service keepalived start #停止 service keepalived stop #重启 service keepalived restart
查看keepalived的启动是否正常,显示如下界面表示正常
我们通过keepalived虚拟了一个VIP的地址是196.168.0.190,我们访问这个VIP地址,成功访问到了nginx
尝试把90服务上的nginx挂掉,成功实现了切换到92服务器上,这样就实现了nginx的高可用。
通过测试master漂移到了92服务器上