keepalived java_Java-keepalived

KeepAlived

keepalived可以用来对Java应用进行故障切换,保障通讯的连续性。我这里单独使用,来做服务的双主备份(即一台服务挂掉了,另一台服务主动接管)。还可以搭配负载均衡。

主要原理是使用VRRP虚拟路由协议,将同一个网段的地址虚拟出一个ip,对外直接连这个ip,内部通过优先级竞选方式确定具体哪个ip上对应的服务提供服务。

安装:

ubuntu直接 $sudo apt-get install keepalived 可以安装。

其他可以编译源码安装

$cd /usr/local/

// 安装依赖

$yum install -y libnl*$yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh

// 可以选择版本下载$wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz

$tar -zxvf keepalived-1.3.5.tar.gz

$sudo rm -rf keepalived-1.3.5.tar.gz$cd keepalived-1.3.5$./configure --prefix=/usr/local/keepalived

$make && make install

配置

本机环境为Ubuntu,配置文件目录在/etc/keepalived/ 下,编辑修改配置文件。

假设我想用 192.168.10.20  192.268.10.30做两台真实的项目备份的ip,20是主 30是备。虚拟出的漂移ip定位192.168.10.40(要保证没有被占用).

先配置20服务器

$sudo vim /etc/keepalived/keepalived.conf

// 将配置文件修改为下面这样,默认文件还有其他项,已注释掉。

! Configuration File for keepalived

global_defs {

#不同服务器起这里配置不同,不必写ip但是要区分开。比如30上的配置可以改为30。

router_id 192.168.10.20

}

#定义监控脚本

vrrp_script check_bash {

script "/etc/keepalived/keepalive_check.sh"  # 脚本位置

interval 5  # 脚本执行间隔

weight -20   # 若脚本执行结果返回非0,则减去自身权重

}

#配置虚拟ip的实例

vrrp_instance VI_1 {

state MASTER # 20为主服务,30为备份,可以填BACKUP

interface wlp2s0 # ifconfig查看到的网卡

# notify_master  /root/notify_master.sh #每次主被切换会执行的脚本

# notify_backup  /root/notify_backup.sh

virtual_router_id 10  #虚拟路由ip 取值分为1-255 不同服务器要取值相同,建议为当前网段 10

#   nopreempt  # 不竞争

priority 100  # 权重 master权重为100 取值1-255

advert_int 1  # master backup检测间隔

authentication {

auth_type PASS  #VRRP认证方式,主备必须一致

auth_pass 1111   #(密码)

}

virtual_ipaddress {

192.168.10.40/24  # 飘移ip

}

track_script {      #自定义的执行脚本,主要看脚本的返回结果 大括号前这里有空格 否则脚本不执行

check_bash

}

}

自定义脚本内容: $sudo cat /etc/keepalived/keepalive_check.sh

#!/bin/bash

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

#       echo "nginx not found!!!";

exit 1;

fi

if [ `netstat -lnt|grep 3306|wc -l` -eq 0 ];then

#       echo "mysql not found!!!";

exit 1;

fi

if [ `netstat -lnt|grep 8088|wc -l` -eq 0 ] || [ `netstat -lnt |grep 8089 |wc -l` -eq 0 ];then

#       echo "syncSignServer 8088||8089  not found!!!";

exit 1;

fi

#echo "nginx mysql java all running~~";

exit 0;

java 项目依赖于nginx和mysql,项目端口是8088和8089.这里如果任何一个应用检测不到,说明这台服务器上的java服务不可用,ip需要切换到其他服务器。脚本执行非0后,自身权重减少20,备份服务器权重初始值是90,此时备份权重高于20服务器,备份升级为主。虚拟ip40漂移到30上。

可以通过 ip addr查看虚拟ip漂移到哪个服务上了。

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet127.0.0.1/8scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128scope host

valid_lft forever preferred_lft forever2: wlp2s0: mtu 1500 qdisc mq state UP group default qlen 1000inet192.168.10.20/24 brd 192.168.10.255scope global dynamic noprefixroute wlp2s0

valid_lft 5536sec preferred_lft 5536sec

inet192.168.10.40/24scope global secondary wlp2s0 // 这里说明漂移ip在20服务器上。客户端只要链接40,会默认转发到真实的20服务器上。

valid_lft forever preferred_lft forever

inet6 fe80::7c02:b0a1:4b79:5277/64scope link noprefixroute

valid_lft forever preferred_lft forever

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值