共计 5916 个字符,预计需要花费 15 分钟才能阅读完成。
LVS 介绍
LVS 核心 ipvs
Ipvs(IP Virtual Server) 是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义了。Ipvs 具体实现是由 ipvsadm 这个程序来完成,因此判断一个系统是否具备 ipvs 功能,只需要察看 ipvsadm 程序是否被安装。察看 ipvsadm 程序最简单的办法就是在任意路径执行命令 ipvsadm。
学习 LVS+Keepalived 必须阅读的三个文档。
1、《Keepalived 权威指南》下载见 http://www.linuxidc.com/Linux/2012-05/60951.htm
2、《LVS 手册》http://www.linuxidc.com/Linux/2016-03/129233.htm
3、《Red_Hat_Enterprise_Linux-5-Virtual_Server_Administration-zh-CN》http://www.linuxidc.com/Linux/2016-03/129234.htm
[root@LVS-DR-Backup ~]# ipvsadm(已安装)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@LVS-DR-Backup ~]# ipvsadm(未安装)
-bash: ipvsadm: command not found
安装 lvs
1、下载 ipvsadm,wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
2、创建一个连接文件,其命令为:ln -s /usr/src/kernels/2.6.32-573.el6.x86_64/ /usr/src/linux 注意一定要与当前的运行的内核相一致,因为 /usr/src/kernels 目录下可多个目录。如果不创建这个连接文件,在编译时会出错,从而不能继续进行安装。
3、解包。tar zxf ipvsadm-1.26.tar.gz
4、编译并安装。cd ipvsadm-1.26; make;make install
5、检验 ipvsadm 是否被正确安装:a. 执行 ipvsadm,看是否有如上的输出。b. 检查当前加载的内核模块,看是否存在 ip_vs 模块。
1 [root@LVS-DR-Backup ~]# lsmod|grep ip_vs
2 ip_vs 126534 0
3 libcrc32c 1246 1 ip_vs
4 ipv6 335589 137 ip_vs(注:只有执行 ipvsadm 以后,才会在内核加载 ip_vs 模块,也不能以查进程的方式判断 ipvs 是否运行。)
LVS 客户端
不需要安装软件,只运行一个脚本就可以,脚本如下:
#!/bin/bash
VIP= 此处设置你的 vip 地址
. /etc/rc.d/init.d/functions
case “$1” in
start)
action ” start LVS of REALServer” /bin/true
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
action “close LVS Directorserver” /bin/true
echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce
echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
esac
keepalived 介绍
1、keepalived 是 lvs 的扩展项目,因此它们之间具备良好的兼容性。
2、通过对服务器池对象的健康检查,实现对失效机器 / 服务的故障隔离。
3、负载均衡器之间的失败切换 failover,是通过 VRRPv2(Virtual Router Redundancy Protocol)stack 实现的。
keepalived 内部结构图
在这个结构图里,处于下端的是内核空间,它包括 ipvs 和 NETLINK 两个部分。Ipvs 的作用在前面的章节已经做过描述,不再重复叙述;netlink 提供高级路由及其他相关的网络功能,如果我们在负载均衡器上启用 netfilter/iptable, 将会直接影响它的性能。出于图形上方的组件为用户空间,由它来实现具体的功能,下面选取几个重要的来做说明:
1、WatchDog 负责监控 checkers 和 VRRP 进程的状况。
2、Checkers 负责真实服务器的健康检查 healthchecking,是 keepalived 最主要的功能。换句话说—可以没有 VRRP Stack, 但健康检查 healthchecking 是一定要有的。
3、VRRP Stack 负责负载均衡器之间的失败切换 FailOver. 如果只用一个负载均衡器,则 VRRP 不是必须的。
4、IPVS wrapper 用来发送设定的规则到内核 ipvs 代码。
5、Netlink Reflector 用来设定 vrrp 的 vip 地址等。
安装 keepalived(因为比较简单,不做详细介绍)
1、下载最新稳定版 http://www.keepalived.org/software/keepalived-1.2.23.tar.gz
2、解包 tar zxf keepalived-1.2.23.tar.gz
3、切换目录 cd keepalived-1.2.23
4、安装依赖包 yum install -y libnfnetlink-devel openssl-devel
5、配置并编译安装./configure;make ; make install
6、拷贝相应文件到 /etc 下,命令如下:
1 cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
2 cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
3 cp /usr/local/sbin/keepalived /usr/sbin/
4 mkdir /etc/keepalived -p
5 cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
7、启动并查看 keepalived
[root@LVS-DR-Backup script]# /etc/init.d/keepalived start
正在启动 keepalived:[确定]
[root@LVS-DR-Backup script]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.100:https rr persistent 50
-> 192.168.201.100:https Masq 1 0 0
TCP 10.10.10.2:connlcli rr persistent 50
-> 192.168.200.2:connlcli Masq 1 0 0
-> 192.168.200.3:connlcli Masq 1 0 0
TCP 10.10.10.3:connlcli rr persistent 50
-> 192.168.200.4:connlcli Masq 1 0 0
-> 192.168.200.5:connlcli Masq 1 0 0
[root@LVS-DR-Backup script]#
8、至此安装完成,下一章,keepalived.conf 详解。
参考:http://www.keepalived.org/documentation.html
附:lvs 和 keepalived 一键安装脚本
#!/bin/bash
# Filename :Install_lvs.sh
# Description : 安装 lvs+keepalived 软件脚本
# 参数设置
Toolsdir=/home/test/tools
IPVSADM=ipvsadm-1.26
Kernel=uname -r
KEEPALIVED=keepalived-1.2.23
# 定义安装 ipvsadm 函数
function IPvsadm(){
cd ${Toolsdir}
# 下载 ipvsadm 软件
[! -f ${IPVSADM}.tar.gz ] && wget http://www.linuxvirtualserver.org/software/kernel-2.6/${IPVSADM}.tar.gz
# 安装依赖包
yum install -y popt libnl-devel popt-static
# 解压并安装 ipvsadm
tar zxf ${IPVSADM}.tar.gz
if [$? == 0];then
cd ${IPVSADM}
ln -s /usr/src/kernel/${Kernel}/ /usr/src/linux
make
if [$? == 0];then
make install
if [$? == 0];then
echo “IPVSADM INSTALL SUCCESSFUL.”
else
echo “make install error.”
eixt 0
sleep 5
fi
else
echo “make error.”
exit 1
fi
else
echo “tar error.”
exit 2
fi
}
# 定义安装 keepalived 函数
function Keepalived(){
# 下载软件
cd ${Toolsdir}
[! -f ${KEEPALIVED}.tar.gz ] && wget http://www.keepalived.org/software/${KEEPALIVED}.tar.gz
# 安装依赖包
yum install -y libnfnetlink-devel openssl-devel
# 安装 keepalived
tar zxf ${KEEPALIVED}.tar.gz
if [$? == 0];then
cd ${KEEPALIVED}
./configure
if [$? == 0];then
make
if [$? == 0];then
make install
if [$? == 0];then
echo “Keepalived install successful.”
else
echo “make install error”
fi
else
echo “make error.”
fi
else
echo “configure error.”
fi
else
echo “tar error”
fi
# 拷贝配置文件
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived -p
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# 开启内核转发
sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g’ sysctl.conf
sysctl -p
}
IPvsadm
Keepalived
Linux 下 HAProxy+Keepalived 双机高可用方案 http://www.linuxidc.com/Linux/2016-02/128566.htm
Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm
Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm
CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm
Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm
Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-08/134791.htm