keepalived安装使用

1. keepalived安装

1.1 官网下载地址.

1.2 安装依赖

 yum -y install libnl libnl-devel

1.3 解压,配置,安装

 tar -zxvf keepalived-2.0.18.tar.gz
 cd keepalived-2.0.18
 ./configure --prefix=/usr/local/keepalived --sysconf=/etc
 make && make install

2. keepalived双机主备配置

2.1 配置主节点

 vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   #路由id:当前安装节点的标识符,全局唯一
   router_id keep_101
}

# 计算机节点
vrrp_instance VI_1 {
    # 当前节点为主节点 MASTER/BACKUP
    state MASTER
    interface ens33
    # 虚拟的路由id,保证主备一致
    virtual_router_id 51
    # 权重,谁的优先级高,在MASTER挂掉后成为MASTER
    priority 100
    #主备之前同步检查时间间隔 默认1s
    advert_int 1
    # 权限主备之间一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   #虚拟ip
    virtual_ipaddress {
        192.168.191.99
    }
}

启动主节点keepalived

 /usr/local/keepalived/sbin/keepalived

看下进程是否启动成功

 ps -ef |grep keepalived

2.2 配置备节点

 vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   #路由id:当前安装节点的标识符,全局唯一
   router_id keep_102
}

# 计算机节点
vrrp_instance VI_1 {
    # 当前节点为主节点 MASTER/BACKUP
    state BACKUP
    interface ens33
    # 虚拟的路由id,保证主备一致
    virtual_router_id 51
    # 权重,谁的优先级高,在MASTER挂掉后成为MASTER
    priority 100
    #主备之前同步检查时间间隔 默认1s
    advert_int 1
    # 权限主备之间一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   #虚拟ip
    virtual_ipaddress {
        192.168.191.99
    }
}

启动主节点keepalived

 /usr/local/keepalived/sbin/keepalived

看下进程是否启动成功

 ps -ef |grep keepalived

2.3 查看主备IP地址

 ip addr

主节点,本机ip地址:192.168.191.101,虚拟ip :192.168.191.99
keepalived主节点IP地址
备节点,本机ip:192.168.191.102,没有虚拟ip
keepalived备节点IP地址

2.4 验证keepalived虚拟ip切换

将主节点的keepalived的进程杀死,再查看IP地址情况
主节点
备节点
虚拟ip已经切换到备节点机器,再将主节点机器keepalived程序启动,则虚拟ip会回到主节点机器
主节点

3. keepalived双机热备

3.1 主节点配置文件

主节点配置: 
global_defs { 
	router_id keep_171 
}
vrrp_instance VI_1 { 
	state MASTER 
	interface ens33 
	virtual_router_id 51 
	priority 100 
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	}
	virtual_ipaddress { 
		192.168.191.99 
	} 
}

vrrp_instance VI_2 { 
	state BACKUP 
	interface ens33 
	virtual_router_id 52 
	priority 80 
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	}
	virtual_ipaddress { 
		192.168.191.98 
	} 
}

3.2 备节点配置文件

备用节点配置 
global_defs { 
	router_id keep_172 
}
vrrp_instance VI_1 { 
	state BACKUP 
	interface ens33 
	virtual_router_id 51 
	priority 80 
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	}
	virtual_ipaddress { 
		192.168.191.99 
	} 
}

vrrp_instance VI_2 { 
	state MASTER 
	interface ens33 
	virtual_router_id 52 
	priority 100 
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	}
	virtual_ipaddress { 
		192.168.191.98 
	} 
}

4. 将keepalived 注册为系统服务

 cd  /opt/soft/keepalived/keepalived-2.0.18/keepalived/etc
 cp  init.d/keepalived /etc/init.d/
 cp  sysconfig/keepalived /etc/sysconfig/
 systemctl  daemon-reload
 systemctl  enable keepalived

5. 配置nginx自动重启

5.1 检查nginx的脚本

 vi /etc/keepalived/check_nginx_alive_or_not.sh 
#!/bin/bash 
A=`ps -C nginx --no-header |wc -l` 
# 判断nginx是否宕机,如果宕机了,尝试重启 
if [ $A -eq 0 ];then 
	/usr/local/nginx/sbin/nginx 
	# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机 
	sleep 3 
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then 
		killall keepalived 
	fi 
fi
chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

5.2 keepalived 的配置文件

! Configuration File for keepalived
global_defs {
   #路由id:当前安装节点的标识符,全局唯一
   router_id keep_101
}
# 执行的脚本
vrrp_script check_nginx_alive { 
	script "/etc/keepalived/check_nginx_alive_or_not.sh" 
	interval 2 # 每隔两秒运行上一行脚本 
	weight 10 # 如果脚本运行失败,则升级权重+10 
}

# 计算机节点
vrrp_instance VI_1 {
    # 当前节点为主节点 MASTER/BACKUP
    state MASTER
    interface ens33
    # 虚拟的路由id,保证主备一致
    virtual_router_id 51
    # 权重,谁的优先级高,在MASTER挂掉后成为master
    priority 100
    主备之前同步检查时间间隔 默认1s
    advert_int 1
    # 主备之间一致
    authentication {
        auth_type PASS
        auth_pass 1111
	}
	# 追踪 nginx 脚本 
	track_script { 
		check_nginx_alive 
	}
   #虚拟ip
    virtual_ipaddress {
        192.168.191.99
    }
}

6. 整合fdfs

6.1 安装fdfs和nginx中添加fdfs模块

链接

6.2 修改检查nginx脚本

#!/bin/bash
#查询ngxin进程的数量
ngc=`ps -C nginx --no-header |wc -l`
#nginx的pid所在目录
ngd="/var/run/nginx"
#nginx的pid文件路径
ngp="/var/run/nginx/nginx.pid"
#查询 fdfs_trackerd 进程的数量
fdfsc=`ps -C fdfs_trackerd  --no-header |wc -l`
#虚拟机重启会删除/var/run/nginx 这个目录,导致nginx.pid丢失,需要重新创建
#判断nginx的pid所在目录是否存在,不存在则创建
if [[ ! -d "$ngd" ]]; then
 echo "nginx的pid目录不存在"
 mkdir /var/run/nginx
fi

#判断nginx的pid是否存在,不存在则创建
if [[ ! -f "$ngp" ]]; then
 echo "nginx的pid文件不存在"
 touch /var/run/nginx/nginx.pid
fi

#nginx集成fdfs后,需要依赖fdfs服务,否则启动nginx会只有master没有worker,无法正常使用
#判断fdfs是否存在,不存在则不执行
if [ $fdfsc -gt 0 ];then
    # 判断nginx是否宕机,如果宕机了,尝试重启
    if [ $ngc -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
        sleep 3
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                killall keepalived
        fi
    fi
else
  echo "fdfs_trackerd 服务不存在"
fi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值