debian下配置keepalived ha

   2023-02-10 学习力0
核心提示:抄袭自http://blog.51yip.com/server/1417.html,做了一些修改可以参考http://blog.linuxphp.org/archives/1615/ 备注:NAT模式在rs机器上不需要做关于ip之类的任何配置,以下为DR模式,ip tunnerl模式也需要在rs上配置vip和router,ip tunnel和DR模式不允许

抄袭自http://blog.51yip.com/server/1417.html,做了一些修改

可以参考http://blog.linuxphp.org/archives/1615/

 

备注:NAT模式在rs机器上不需要做关于ip之类的任何配置,以下为DR模式,ip tunnerl模式也需要在rs上配置vip和router,ip tunnel和DR模式不允许改变后端的端口。

 

服务器介绍

Master        192.168.1.11        //lvs主服务器
BACKUP        192.168.1.12        //lvs从服务器
VIP           192.168.1.8         //VIP
WEB1-Real     192.168.1.104       //RS服务器
WEB2-Real     192.168.1.108       //RS服务器

VIP不需要用ifconfig手工配置,配置好keepalived以后,keepalived会自动给你配置好

 

模式:

配置keepalived的两个主机会自动根据配置把VIP绑定到相关网卡
两个RS主机上需要手工绑定VIP,添加路由表

原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。

 

在lvs的master和slave上安装ipvsadm和keepalived

然后配置/etc/keepalived/keepalived.conf,额,debian下其实也有sample文件的,在/usr/share/doc/keepalived/下面,复制出来改改

global_defs {
    router_id LVS_DEVEL                 #负载均衡器标识,同一网段内,可以相同
}

vrrp_sync_group VGM {                   #定义一个vrrp组
    group {
        VI_1
    }

    #这里似乎也支持脚本
    # notify_master /path/to/to_master.sh
    # notify_backup /path_to/to_backup.sh
    # notify_fault "/path/fault.sh VG_1"

}

vrrp_instance VI_1 {                    #定义vrrp实例
    state BACKUP                        #主LVS是MASTER,从的BACKUP,一般都设置为BACKUP,并且priority高的设置为nopreempt(不抢占)
    interface eth0                      #LVS监控的网络接口,笔记本测试的时候可以用wlan0,具体看自己的机器
    virtual_router_id 51                #同一实例下virtual_router_id必须相同
    priority 150                        #定义优先级,数字越大,优先级越高,MASTER必须高于BACKUP
   nopreempt advert_int 1
#MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #验证类型和密码 auth_type PASS auth_pass 1111 }
virtual_ipaddress { #虚拟IP
192.168.1.8 } } virtual_server 192.168.1.8 11111 { #定义虚拟服务器 delay_loop 2 #健康检查时间,单位是秒 lb_algo rr #负载调度算法,这里设置为rr,即轮询算法 lb_kind DR #LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选 persistence_timeout 60 #会话保持时间,指客户端往服务器发包时,在这个时间段内服务器把这些请求转发到同一个rs上,单位是秒,测试直接改成0 protocol TCP #转发协议类型,有tcp和udp两种 real_server 192.168.1.104 11111 { #定义WEB服务器 weight 100 #权重 TCP_CHECK { #通过tcpcheck判断RealServer的健康状态 connect_timeout 2 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 11111 #检测端口 } } real_server 192.168.1.108 11111 { weight 100
#这里支持任意脚本,很强大
#notify_down "xxxx.sh your_param"
#notify_up "xxxx.py"
TCP_CHECK { connect_timeout
2 nb_get_retry 3 delay_before_retry 3 connect_port 11111 } } }

从服务器只要改二个地方就行了,priority的权重调小一点,state改成BACKUP,注意realserver的connect_timeout字段

 

下面配置real server的配置脚本

gvim /etc/init.d/rs-lvs,并且chmod +x

#!/bin/bash

VIP=192.168.1.8

source /lib/lsb/init-functions

case "$1" in
start)
 ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
 route add -host $VIP dev lo:0

 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
 echo 1 >/proc/sys/net/ipv4/ip_forward

 sysctl -p >/dev/null 2>&1
 echo "RealServer Start OK"
 ;;
stop)
 ifconfig lo:0 down
 route del $VIP >/dev/null 2>&1

 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 0 >/proc/sys/net/ipv4/ip_forward

sysctl -p >/dev/null 2>&1
echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0

这个脚本如果是windows下scp到linux主机,需要vim以后set ff=unix,然后保存

 

在lvs主机

sudo invoke-rc.d keepalived restart

 

 rs主机

sudo invoke-rc.d rs-lvs start

 

如何查看VIP在哪个lvs主机上

 

ip a
看eth0,应该能看到192.168.1.8这个VIP

 

附上一个在rs执行的tunnel模式的脚本,lvs主机上lb_kind改成TUN

#!/bin/bash

VIP=192.168.1.8

source /lib/lsb/init-functions

case "$1" in
start)
 ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
 route add -host $VIP dev tunl0

 echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
 echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce
 echo 0 >/proc/sys/net/ipv4/conf/tunl0/rp_filter
 echo 1 >/proc/sys/net/ipv4/conf/tunl0/forwarding

 echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
 echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
#all的rp_filter非常重要,不然rs收不到
 echo 0 >/proc/sys/net/ipv4/conf/all/rp_filter
 echo 1 >/proc/sys/net/ipv4/ip_forward

 sysctl -p >/dev/null 2>&1
 echo "RealServer Start OK"
 ;;
stop)
 ifconfig tunl0 down
 route del $VIP >/dev/null 2>&1

 echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
 echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
 echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
 echo 0 >/proc/sys/net/ipv4/ip_forward

sysctl -p >/dev/null 2>&1
echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 【树莓派】树莓派(Debian)- root用户无法使用SSH登录
    【树莓派】树莓派(Debian)- root用户无法使用
    在树莓派4B上安装了最新的Debian64位系统默认账户密码:pi/raspberryroot/    ------无密码(通过sudo passwd root修改root密码后)问题root修改密码后还是无法登录解决这个系统默认不允许root使用SSH登录登录root用户su 打开配置文件 nano /etc/ssh/sshd_
    03-08
  • windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian一、前提1、在控制面板-程序-启用与关闭Windows功能中,勾选“适用于Linux的Windows子系统”  2、首先需要创建一个文件夹,用来存放子系统,在需要的位置创建即可,文件夹名任意3、手动下载Windows子系统发行版包,
    03-08
  • Debian 环境安装新版 nginx
    Debian 环境安装新版 nginx
    在 Debian 系统中,我们可以通过 apt-get 安装系统自带的 nginx,这样安装的 nginx 版本略旧。Nginx 官网提供了一些编辑绎好的 deb 安装包,我们只需更新安装源,就可以通过 apt-get 来安装最新的稳定版 Nginx 了。 加载安装源并导入key$ echo deb http://ng
    03-08
  • 使用apt-mirror建立本地debian仓库源
     先介绍一下环境:主机:Win7虚拟机:VirtualBox + Debian7由于软件源的体积比较大,所以我又给虚拟机添加了一块50GB的虚拟硬盘(给虚拟机添加虚拟硬盘的方法参见:http://www.cnblogs.com/pengdonglin137/p/3366589.html , 其中介绍了如何在Vmware和Virtua
    03-08
  • Debian其实有提供附带了各种桌面的安装镜像
    我之前试着装Debian,但它的安装程序我感觉很难用,装上去了之后也有许许多多的问题,比如中文不显示。今天我发现带Live CD的Debian镜像有带了各个桌面的版本,于是我就试着下载KDE版本的Debian。由于我房间的WLAN质量不佳,用500kb/s的速度下了几个小时,那
    02-10
  • Debian镜像使用帮助 Debian镜像下载
    Debian镜像使用帮助 Debian镜像下载
    http://mirrors.163.com/.help/debian.html
    02-10
  • Debian 11 安装Nvidia闭源驱动
    目录通过APT安装Nvidia驱动为Nvidia驱动注册Secure Boot参考文档本人的系统是Debian11,最近一阵子在捣鼓用apt安装英伟达的闭源驱动,同时支持Secure Boot,查阅了Debian Wiki之类的资料之后,在这里整理一下。通过APT安装Nvidia驱动首先,需要确保你的Debian
    02-10
  • Debian时区和时间自动同步
    时区和时间自动同步(1)时间设置及其同步#date  -s 07/26/2005 //2005年7月26日    //修改系统日期时间为当前正确时间#date -s 11:12:00     //11点12分0秒#vim /etc/default/rcS  //设定 BIOS 时间使用 UTC 时区将选项 UTC 的值设定成 yes
    02-10
  • debian/ubuntu系统vi无法删除字符的解决办法
    之前在 Linux 下操作,一直使用的是 Centos 系统,使用 vi 编辑命令一直很顺畅。 最近,入手了一台 debian 操作系统的 vps。在操作 vi 命令时,发现当输入 i 要进行文件编辑时,上下左右的光标无法移动,屏幕上总会出现字符,而且 backspace 只能后退,无法
    02-10
  • Debian安装JAVA环境 debian安装jdk11
     http://blog.csdn.net/gongora/archive/2009/05/15/4190469.aspxDebian官方没有维护专门的Java软件包,所以不能直接用apt-get工具来安装。在Debian系统中要安装Java,有两种方式,一种是用传统方式;一种是Debian方式。1. 传统方式在 sun 下载了最新的 JDK
    02-10
点击排行