LVS + Keeplaved 配置

一.  LVS集群组成

LVS ( Linux Virtual Server ) 集群由3部分组成,最前端是负载均衡层( Load Balancer ),中间是服务器群组层 ( Server  Array ) ,底端是数据共享层 ( Share Storage )

 

1.  LVS集群有三种配置模式DR、TUN、NAT

VS/NAT  即 Virtual Server via Nitwork Address Translation   网络地址翻译技术实现虚拟服务器

VS/TUN 即  Virtual Server via IP Tunneling                           通过IP隧道技术实现虚拟服务器

VS/DR    即 Virtual SErver via  Direct Routing                       直接路由技术实现虚拟服务器

2.  LVS 调度算法

http://sbexr.rabexc.org/latest/sources/ac/22ff6f9bd1bf8c.html

静态调度
1. rr    Round Robin                 轮询调度
2. wrr   weight                      加权            以权重之间的比例实现在各主机之间进行调度
3. sh    source hashing              源地址散列      主要实现会话绑定,能够将此前建立的session信息保留
4. dh    Destination hashing         目标地址散列     把同一个IP地址的请求,发送给同一个server
5. mh    maglev hashing scheduling   磁悬浮哈希调度

动态调度
1. lc    Least-Connection                                  最少连接
2. wlc   Weighted Least-Connection Scheduling              加权最少连接
3. sed   Shortest Expected Delay                           最短期望延迟
4. nq    never queue                                       永不排队(改进的sed)
5. lblc  Locality-Based Least Connection                   基于局部性的最少连接
6. lblcr Locality-Based Least Connections withReplication  带复制的基于局部性最少链接
7. fo    weighted failover scheduling                      加权故障转移调度算法
8. ovf   weighted overflow scheduling                      加权溢出调度

ip_vs_fo  found in Linux kernels: 3.18–3.19, 4.0–4.18, 4.19-rc+HEAD
ip_vs_ovf found in Linux kernels: 4.3–4.18, 4.19-rc+HEAD
ip_vs_mh  found in Linux kernels: 4.18, 4.19-rc+HEAD

二.  通过Keepalived搭建LVS高可用集群

     地址规划

主负载调度器 Director Server            Hostname DR1
eth1:  192.168.12.130
eth1:1 192.168.12.200   Virtual IP
eth2:  10.10.10.11

备负载调度器 Director Server            Hostname DR2
eth1:  192.168.12.131
eth1:1 192.168.12.200  Virtual IP
eth2   10.10.10.12

Real server 1                            Hostname rs1
eth1  192.168.12.132
eth2  10.10.10.13

Real server 2                            Hostname rs2
eth1  192.168.12.133
eth2  10.10.10.14

1. 在DR1和DR2服务器安装keepalived   ipvsadm ( IPVS管理软件 )

yum -y install keepalived  ipvsadm

chkconfig   --level  2345  keepalived on

systemctl enable keepalived

 

在DR1和DR2打开ip_forward

cat <<EOF >>  /etc/sysctl.conf
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.conf
 

 

2. 配置独立日志      安装完默认日志路径为 /var/log/message 

vim /etc/sysconfig/keepalived

修改 KEEPALIVED_OPTIONS="-D -d -S 0"

或用命令修改   sed  -i  's/KEEPALIVED_OPTIONS=.*/KEEPALIVED_OPTIONS="-D -d -S 0"/'  /etc/sysconfig/keepalived

 

修改配置文件  /etc/rsyslog.conf  

cat   >> /etc/rsyslog.conf << EOF

#keepalived -S 0

local0.* /var/log/keepalived.log

EOF

重启日志服务 service rsyslog restart      检查 /var/log/keepalived.log 文件是否存在

3. 加载ipvs相关内核模块

touch /etc/sysconfig/modules/ipvs.modules
chmod 755 /etc/sysconfig/modules/ipvs.modules

cat << EOF > /etc/sysconfig/modules/ipvs.modules 
#!/bin/bash
ipvs_modules_dir="/usr/lib/modules/\`uname -r\`/kernel/net/netfilter/ipvs"
for i in \`ls \$ipvs_modules_dir | sed  -r 's#(.*).ko.*#\1#'\`; do
    /sbin/modinfo -F filename \$i  &> /dev/null
    if [ \$? -eq 0 ]; then
        /sbin/modprobe \$i
    fi
done
EOF


sh /etc/sysconfig/modules/ipvs.modules

查看内核支持的ipvs模块
grep -i ip_vs /boot/config-`uname -r`

查看内核已加载的ipvs模块
lsmod | grep ip_vs

 

4. 配置 Keepalived

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc     # 设置报警邮件,每行一个
     failover@firewall.loc    # 需要开启本机sendmail服务
     sysadmin@firewall.loc
   }
   notification_email_from Keepalived@localhost   # 设置邮件发送地址
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL        # 表示Keepalived 服务器的一个标识.发邮件时显示在邮件主题中的信息
}
# vrrp 实例定义部分
vrrp_instance VI_1 {
    state MASTER              # 指定Keepalived 角色,BACKUP表示备用
    interface eth1            # 指定 HA监测网络的接口
    virtual_router_id 51      # 虚拟路由标识,同一个 vrrp_instancd下, MASTER AND BACKUP 必须是一致的
    priority 100              # 定义优先级,数字越大,优先级越高 在同一个 vrrp_instancd下.  MASTER 优先级必须大于 BACKUP
    advert_int 1              # 主备同步检查时间间隔,时间为秒
    authentication {          # 设置验证类型和密码
        auth_type PASS        # 设置验证类型 主要有 PAS S和 AH 两种
        auth_pass 1111        # 设置验证密码 在同一个 vrrp_instancd下
    }
    virtual_ipaddress {
        192.168.12.200        # 虚拟IP,可以设置多个,每行一个
    }
}
# 虚拟服务器定义部分
virtual_server 192.168.12.200 80 {
    delay_loop 6              # 设置运行情况检查时间,单位为秒
    lb_algo rr                # 设置负载调度算法 rr 即轮询算法
    lb_kind DR                # 设置 LVS 负载均衡机制  NAT  TUR  DR
    nat_mask 255.255.255.0
    persistence_timeout 50    # 会话保持时间 注释掉此行才会轮询. 这个选项对动态网页非常有用,为集群session 共享提供了很好的解决方案, 有了这个会话保持功能,用户的
                              # 请求会被一直发到某个服务节点, 直到超过这个会话保持时间. 需要注意的是这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态
                              # 页面时, 如果在50秒内没有执行任何操作, 那么接下来的操作会被分发到另外的节点, 但是如果用户一直在动态页面, 则不受50秒时间限制

    protocol TCP              # 指定转发协议 TCP UDP两种

    real_server 192.168.12.132 80 {
        weight 3                      # 权重 数字越大, 权重越高
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3            # 重试次数
            delay_before_retry 3      # 重试间隔
        }
    }

    real_server 192.168.12.133 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 

配置完成后将此文件复制到备用 Director Server , 进行以下修改即可

 将 state  MASTER 改为 state BACKUP

 priority 100 更改为一个较小的值,这里改为80

 

5. 配置 Real server

在 LVS 的 DR 和 TUN 模式下,用户的访问请求到达 Real Server 后, 是直接返回给用户的, 不再经过前端的 Director Server ,因此 ,需要在每个Real server 节点上增加虚拟的 VIP 地址,

这样数据才能直接返回给用户.增加 VIP 地址的操作可以通过创建脚本的方式来实现.

创建文件 /etc/init.d/lvsrs  

touch   /usr/bin/lvsrs
chmod 755  /usr/bin/lvsrs
vi  /usr/bin/lvsrs 

脚本内容如下

#!/bin/bash
# description : Start Real Server

VIP=192.168.12.200
. /etc/rc.d/init.d/functions
case "$1" in
     start)
     echo " Start LVS of Real Server "
     /usr/sbin/ip addr add ${VIP}/28 dev lo
     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)
     /usr/sbin/ip addr del ${VIP}/28 dev lo
     echo " close LVS Director server "
     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

 

6. 启动 Keepalived + LVS 集群

在主 备Director Server 上分别启动 Keepalived 服务

/etc/init.d/keepalived  start

在两个 Real server 上执行如下脚本 

/etc/init.d/lvsrs start

 

转载于:https://my.oschina.net/direnjie/blog/626144

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值