keepalived 虚拟IP安装与使用

keepalived

注: 使用虚拟机进行安装与配置
主:192.168.1.106
备:192.168.1.104
  • 官网下载地址

https://www.keepalived.org/download.html

安装

#添加依赖
yum -y install libnl libnl-devel


#解压
tar -zxvf keepalived-2.0.18.tar.gz

#进入解压后的 keepalived目录
#执行配置
./configure --prefix=/usr/local/keepalived --sysconf=/etc

#编译
make 

#安装
make install


安装后配置文件和启动命令所在目录

# 启动命令
/usr/local/keepalived/sbin/keepalived

# 配置文件
/etc/keepalived

主备

主节点配置文件(Keepalived.conf)

#全局配置
global_defs {
  #路由id: 当前安装keepalived的节点主机标识符,保证全局唯一
	router_id keep_106
}


#虚拟路由器名称,在一个keepalived可以启多个虚拟路由器,每个虚拟路由器的名字都不一样
vrrp_instance VI_1 {
		#表示状态是MASTER主机还是备用机BACKUP
    state MASTER
    #该实例绑定的网卡  centos 使用ifconfig命令查看虚拟机所使用的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 51
    #权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
    priority 100
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        #预共享密钥,同一个虚拟路由器的多个keepalived节点必须一样
        auth_pass 1111
    }
    
    #虚拟出来的ip,主备节点要保持一致,可以有多个(vip)
    virtual_ipaddress {
        192.168.1.160
    }
 
}

备节点

glbal_defs {
   #路由id: 当前安装keepalived的节点主机标识符,保证全局唯一
   router_id keep_104
}

vrrp_instance VI_1 {
    #该状态表示是MASTER主机,还是备用机
    state BACKUP
    #该实例绑定的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 51
    #权重
    priority 80
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出来的ip,可以有多个
    virtual_ipaddress {
        192.168.1.160
    }
}

启动和关闭

# 使用命令行启动
/usr/local/keepalived/sbin/keepalived

#查看是否启动
ps -ef|grep keepalived


# 关闭
kill 对应pid



# 可将keepalived 注册成系统服务

# 进入解压后的keepalived目录中,将以下两个文件分别拷贝到 /etc/init.d/ /etc/sysconfig/
/opt/soft/keepalived-2.0.18/keepalived/etc

# 拷贝
cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/

# 重新服务的配置文件
systemctl daemon-reload


# 可以操作keepalived服务了(如果之前已经启动了keepalived进程,需要先将之前使用keepalived命令启动的进程先杀死)

# 启动
systemctl stop keepalived.service

# 关闭
systemctl start  keepalived.service

# 重启
systemctl restart  keepalived.service
  • 启动前可执行 ip addr 查询当前内网ip
    在这里插入图片描述

  • 启动后执行 ip addr 查询,效果如下(当前网卡新增了一个内网ip)
    在这里插入图片描述

可能遇到的问题

主备节点都启动后,将主节点关闭后,如果没有进行虚拟ip的漂移,请检查防火墙是否关闭

双主热备配置(互为主备,充分利用系统资源)

主节点1

glbal_defs {
   #路由id:当前安装节点中唯一
   router_id keep_106
}

vrrp_instance VI_1 {
    #该状态表示是MASTER主机,还是备用机
    state MASTER
    #该实例绑定的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 51
    #权重
    priority 100
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出来的ip,可以有多个
    virtual_ipaddress {
        192.168.1.160
    }
}

vrrp_instance VI_2 {
    #该状态表示是MASTER主机,还是备用机
    state BACKUP
    #该实例绑定的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 52
    #权重
    priority 80
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出来的ip,可以有多个
    virtual_ipaddress {
        192.168.1.161
    }
}

主节点2

glbal_defs {
   #路由id:当前安装节点中唯一
   router_id keep_104
}

vrrp_instance VI_1 {
    #该状态表示是MASTER主机,还是备用机
    state BACKUP
    #该实例绑定的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 51
    #权重
    priority 80
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出来的ip,可以有多个
    virtual_ipaddress {
        192.168.1.160
    }
}

vrrp_instance VI_2 {
    #该状态表示是MASTER主机,还是备用机
    state MASTER
    #该实例绑定的网卡
    interface ens33
    #保证主备节点一致即可
    virtual_router_id 52
    #权重
    priority 100
    #主备之间同步检查时间间隔,单位秒
    advert_int 2
    #认证权限密码,防止非法节点进入
    authentication {
        auth_type PASS
        auth_pass 1111
      }
    #虚拟出来的ip,可以有多个
    virtual_ipaddress {
        192.168.1.161
    }
}   

其它

设置虚拟机静态IP

#编辑网卡(编辑对应的网卡文件名称,这里我使用的是ens33网卡,可以使用 ifconfig命令查看当前所使用的网卡)配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33


#修改ip类型为静态ip
BOOTPROTO=static
#静态ipid
IPADDR=192.168.1.104
#网段
NETMASK=255.255.255.0
#网关地址(可以从宿主机中获取)
GATEWAY=192.168.1.1
#DNS地址
DNS1=192.168.1.1


#重启network服务
systemctl network restart

keepalived 整合nginx高可用

  • 脚本
#!/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
  • 配置(将以下配置加入 keepalived.conf )

    #全局配置
    global_defs {
      #路由id: 当前安装keepalived的节点主机标识符,保证全局唯一
    	router_id keep_106
    }
    
    # 要运行的脚本
    vrrp_script check_nginx_alive {
      # 脚本文件所在目录
    	script "/etc/keepalived/chece_nginx_alive_or_not.sh"
    	# 每隔两秒运行上一行脚本
    	interval 2
    	# 如果脚本运行失败,则升级权重+10
    	weight 10
    }
    
    
    
    #虚拟路由器名称,在一个keepalived可以启多个虚拟路由器,每个虚拟路由器的名字都不一样
    vrrp_instance VI_1 {
    		#表示状态是MASTER主机还是备用机BACKUP
        state MASTER
        #该实例绑定的网卡  centos 使用ifconfig命令查看虚拟机所使用的网卡
        interface ens33
        #保证主备节点一致即可
        virtual_router_id 51
        #权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
        priority 100
        #主备之间同步检查时间间隔,单位秒
        advert_int 2
        #认证权限密码,防止非法节点进入
        authentication {
            auth_type PASS
            #预共享密钥,同一个虚拟路由器的多个keepalived节点必须一样
            auth_pass 1111
        }
        
        #添加脚本运行配置
        track_script {
        	# 追踪nginx脚本
    			check_nginx_alive
    		}
        
        #虚拟出来的ip,主备节点要保持一致,可以有多个(vip)
        virtual_ipaddress {
            192.168.1.160
        }
     
    }
    
    
    
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值