一、LVS+Keepalived高可用部署

一、keepalived节点部署

  1、安装keepalived

yum install keepalived ipvsadm -y
mkdir -p /opt/ytd_scripts/keepalived
cat>/opt/ytd_scripts/keepalived/UDP_CHECK.sh<<EOF
#!/bin/bash
/usr/bin/nc -uz -w1 $ $ | grep succeeded >/dev/null
exit $?
EOF
cp -rp /etc/keepalived/keepalived.conf{,.bak}

  2、更改keepalived.conf

  注意:加权平均时,2个节点不要设置成1

    1、master节点配置
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
10.100.62.66
}
} ###zuul-####
virtual_server 10.100.62.66 {
delay_loop
lb_algo wrr
lb_kind DR
persistence_timeout
protocol TCP real_server 10.100.62.43 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
} real_server 10.100.62.44 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
} ###zuul--udp####
virtual_server 10.100.62.66 {
delay_loop
lb_algo wrr
lb_kind DR
persistence_timeout
protocol UDP real_server 10.100.62.43 {
weight MISC_CHECK {
misc_path "/opt/ytd_scripts/keepalived/UDP_CHECK.sh 10.100.62.43 8080"
misc_timeout
}
} real_server 10.100.62.44 {
weight
MISC_CHECK {
misc_path "/opt/ytd_scripts/keepalived/UDP_CHECK.sh 10.100.62.44 8080"
misc_timeout
}
}
}

/etc/keepalived/keepalived.conf

    2、slave节点配置
state MASTER -> state BACKUP
priority -> priority

  3、节点开启转发功能

echo  > /proc/sys/net/ipv4/ip_forward

二、验证keepalived

  1、启动keepalived并设置自启

systemctl enable keepalived
systemctl start keepalived
systemctl status keepalived

  2、关掉master节点,验证VIP是否到slave上

#在master上执行
systemctl stop keepalived
ip a|grep 'VIP' #在slave上执行
ip a|gep 'VIP'

三、两台RS上为ens160:0绑定VIP地址、抑制ARP广播

  若不绑定循环网卡,将lo网卡换成需要绑定网卡(例如:ens160)

  1、在RS上写相应脚本

#!/bin/bash
#description: Config realserver VIP=10.100.62.66 /etc/rc.d/init.d/functions case "$1" in
start)
/sbin/ifconfig ens160: $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev ens160:
echo "" >/proc/sys/net/ipv4/conf/ens160/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/ens160/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null >&
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig ens160: down
/sbin/route del $VIP >/dev/null >&
echo "" >/proc/sys/net/ipv4/conf/ens160/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/ens160/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit
esac exit

realserver.sh

  2、在RS上执行脚本

sh realserver.sh start

二、LVS+Keepalived学习链接

一、使用LVS实现负载均衡原理及安装配置详解

  https://www.cnblogs.com/liwei0526vip/p/6370103.html

二、LVS自动化添加及删除ipvsadm和后端服务器健康状态检测脚本

  1、LVS director 负载均衡器增加IPVSADM脚本

#!/bin/bash
#chkconfig: -
#description: this script to add lvs IP VIP=192.168.0.254
DIP=192.168.0.100
RIP1=192.168.0.101
RIP2=192.168.0.102
PORT=
SCHELE=wrr
LOCKFILE=/var/lock/subsys/ipvsadm case $ in
start)
#增加vip地址
/sbin/ifconfig eth0: $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:
#清除防火墙规则
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
#开启ip转发功能
echo > /proc/sys/net/ipv4/ip_forward
#清除ipvsadm 规则
/sbin/ipvsadm -C
#增加ipvsadm direcotor规则
/sbin/ipvsadm -A -t $VIP:$PORT -s $SCHELE
#增加realserver 规则
/sbin/ipvsadm -a -t $VIP:$PORT -r $RIP1 -g
/sbin/ipvsadm -a -t $VIP:$PORT -r $RIP2 -g
#增加ipvsadm 锁文件
/bin/touch $LOCKFILE
;;
stop)
if [ ! -e $LOCKFILE ];then
echo "the ipvsadm is stopped..."
else
#删除vip地址
/sbin/ifconfig eth0: down
#关闭ip转发
echo > /proc/sys/net/ipv4/ip_forward
#清除ipvsadm 规则
/sbin/ipvsadm -C
#删除锁文件
/bin/touch $LOCKFILE
fi
;;
status)
if [ ! -e $LOCKFILE ];then
echo "the ipvsadm is stopped..."
else
echo "the ipvsadm is running..."
fi
;;
*)
echo "Usage;$0:{start|stop|status}"
;;
esac

director.sh

  2、LVS 增加 real server脚本

#!/bin/bash
#chkconfig: -
#description: this script to add real server
#
VIP=192.168.0.254
case $ in
start)
#arp_ignore: 定义接收到ARP请求时的响应级别;1表示仅在请求的目标地址配置请求到达的接口上的时候,才给予响应
#arp_announce:定义将自己地址向外通告时的通告级别:2表示仅向与本地接口上地址匹配的网络进行通告;
echo >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/lo/arp_announce
echo >/proc/sys/net/ipv4/conf/all/arp_announce
#增加VIP地址到lo:0接口,增加路由条目:目的地址为VIP,由lo:0接口响应(即:源地址为VIP作为响应报文给客户端) /sbin/ifconfig lo: $VIP broadcast $VIP netmask 255.255.255.255 up && /sbin/route add -host $VIP dev lo: #新建一个锁文件,前面执行成功则建立锁文件
if [ $? -eq ];then
/bin/touch /var/lock/subsys/ipvsreal
else
echo "fail to add vip address and route."
fi
;;
stop)
#恢复arp响应级别
echo >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/lo/arp_announce
echo >/proc/sys/net/ipv4/conf/all/arp_announce
#剔除VIP地址(路由地址自动删掉)
loip=`/sbin/ifconfig lo: |grep $VIP`
if [ ‘$loip‘ == ‘‘ ];then
echo "VIP address not found."
else
/sbin/ifconfig lo: down && rm -rf /var/lock/subsys/ipvsreal
if [ $? -eq ] ;then
echo "VIP address had been deled."
else
echo "VIP address del failly."
exit
fi
fi
;;
status)
if [ ! -e /var/lock/subsys/ipvsreal ];then
echo "LVS-DR real server stoped."
else
echo "LVS-DR real server is running."
fi
;;
*)
echo "Usage: $0 {start | stop |status}"
exit
;;
esac

Realserver.sh

  3、RS健康状态检查脚本

#!/bin/bash
#chkconfig: -
#description: check health real server or not
#设置变量:VIP, director端口, 本地地址, real sever IP数组,状态数组(1表示正常,0表示异常),权重数组,real server 服务地址,LVS 类型,状态检测次数,日志
VIP=192.168.0.254
CPORT=
FAIL_BACK=127.0.0.1
RS=("192.168.0.101" "192.168.0.102")
declare -a RSSTATUS
RW=("" "")
PPORT=
TYPE=g
CHKLOOP=
LOG=/var/log/ipvsmonitor.log
#当real server 恢复时,增加 real server 到 director 中
addrs(){
ipvsadm -a -t $VIP:$CPORT -r $:$PPORT -$TYPE -w $
[ $? -eq ] && return || return
}
#当real server 不可用时,删除director中ipvsadm 条目
delrs(){
ipvsadm -d -t $VIP:$CPORT -r $:$PPORT
[ $? -eq ] && return || return
}
#real server 状态检测
checkrs(){
local I=
while [ $I -le $CHKLOOP ];do
if curl --connect-timeout http://$1 &>/dev/null;then
return
fi
let I++
done
return
}
#初始化状态数组,当ipvsadm 中条目有real server IP规则时 状态为1;当realserver 在ipvsadm 条目中缺失时 状态为0
initstatus(){
local I
local COUNT=
for I in ${RS[*]};do
if ipvsadm -L -n |grep "$I:$PPORT" &>/dev/null;then
RSSTATUS[$COUNT]=
else
RSSTATUS[$COUNT]=
fi
let COUNT++
done
}
#调用初始化函数
initstatus
#定义死循环
while :;do
let COUNT=
#逐个遍历 real server
for I in ${RS[*]};do
#检测real server 正常与否
if checkrs $I ;then
#当检测到real 正常但ipvsadm中没有real server 条目时增加 real server 条目
if [ ${RSSTATUS[$COUNT]} -eq ];then
addrs $I ${RW[$COUNT]}
[ $? -eq ]&& RSSTATUS[$COUNT]= && echo "`date +%F%H:%M:%S`, $I is back." >>$LOG
fi
else
#当检测到real server 异常时,删除在 ipvsadm 中异常的realserver 条目
if [ ${RSSTATUS[$COUNT]} -eq ];then
delrs $I
[ $? -eq ]&& RSSTATUS[$COUNT]= && echo "`date +%F%H:%M:%S`, $I is gone." >>$LOG
fi
fi
let COUNT++
done #每个五秒钟遍历一次
sleep
done

check_health.sh

三、LVS + Keepalived 实现高可用、负载均衡 Web 集群

  https://www.cnblogs.com/wangxiaoqiangs/p/5736210.html

LVS+Keepalived高可用部署的更多相关文章

  1. Mysql双主热备+LVS+Keepalived高可用部署实施手册

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

  2. LVS+Keepalived 高可用环境部署记录(主主和主从模式)

    之前的文章介绍了LVS负载均衡-基础知识梳理, 下面记录下LVS+Keepalived高可用环境部署梳理(主主和主从模式)的操作流程: 一.LVS+Keepalived主从热备的高可用环境部署 1)环 ...

  3. Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】

    1.环境说明: 系统版本:Ubuntu 14.04 LVS1物理IP:14.17.64.2   初始接管VIP:14.17.64.13 LVS2物理IP:14.17.64.3   初始接管VIP:14 ...

  4. LVS+Keepalived 高可用群集部署

    LVS+Keepalived 高可用群集部署 1.LVS+Keepalived 高可用群集概述 2.LVS+Keepalived高可用群集部署 1.LVS+Keepalived 高可用群集概述: LV ...

  5. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

  6. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  7. 1. lvs+keepalived 高可用群集

    一. keepalived 工具介绍 1.专为lvs 和HA 设计的一款健康检查工具 2.支持故障自动切换 3.支持节点健康状态检查 二.  keepalived 实现原理剖析 keepalived ...

  8. 22.LVS+Keepalived 高可用群集

    LVS+Keepalived 高可用群集 目录 LVS+Keepalived 高可用群集 keepalived工具介绍 Keepalived实现原理剖析 VRRP(虚拟路由冗余协议) VRRP 相关术 ...

  9. 高可用群集HA介绍与LVS+keepalived高可用群集

    一.Keepalived介绍 通常使用keepalived技术配合LVS对director和存储进行双机热备,防止单点故障,keepalived专为LVS和HA设计的一款健康检查工具,但演变为后来不仅 ...

随机推荐

  1. js for in 获得遍历数组索引和对象属性

    for in 遍历对象属性 获取的是对象的属性名 var person ={ name:"admin", age:"21", address:"sha ...

  2. SQLServer2008 导出数据库表结构和数据

    很多朋友问到sql server数据库”生成脚本”,只导出了数据库的sql脚本,而表里的数据依然没有导出来.很简单,看教程: 注:我这里用的SQLServer2008,其它版本应该差不多. 一.选中要 ...

  3. 网页使用思源字体 CSS

    在知乎上再次看到这门字体的提问,想想中文字体过得多么艰辛,中文软件过得多么艰辛. 思源字体 2014年7月,Adobe与Google宣布推出一款新的开源字体思源黑体, 有七种字体粗细(ExtraLig ...

  4. C# Hashtable

    哈希表(Hashtable) 在.NET Framework中,Hashtable 是 System.Collections 命名空间提供的一个容器,用于处理和表现类似 key-value 的键值对, ...

  5. POJ 1456 - Supermarket - [贪心+小顶堆]

    题目链接:http://poj.org/problem?id=1456 Time Limit: 2000MS Memory Limit: 65536K Description A supermarke ...

  6. UIScrollView的一些关系

    contentInsets和contentoffset以及contentSize 可见范围: contentSize + contentInsets 也就是(contentSize.width+con ...

  7. angular 表单元素的使用总结

    工作中form表单元素最常用的是input,问题没有太多,现在总结下select ,radio组,checkbox的使用 1 select 常用的使用方式,如下 var Cityis = [{id:0 ...

  8. express 写一个简单的web app

    之前写过一个简单的web app, 能够完成注册登录,展示列表,CURD 但是版本好像旧了,今天想写一个简单的API 供移动端调用 1.下载最新的node https://nodejs.org/zh- ...

  9. python fabric实现远程操作和部署示例

    https://www.jb51.net/article/48434.htm 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多.修复bug什么的,测试,提交版本 ...

  10. 动态SQL详解

    动态SQL 在之前用户所编写的PL/SQL程序时有一个最大的特点:就是所操作的数据库对象(例如:表)必须存在,否则创建的子程序就会出问题,而这样的操作在开发之中被称为静态SQL操作,而动态SQL操作可 ...