LVS调度算法参考

RR:轮询
WRR :加权轮询
DH :目标地址哈希
SH:源地址hash
LC:最少连接
WLC:加权最少连接,默认
SED:最少期望延迟
NQ:从不排队调度方法
LBLC:基于本地的最少连接
LBLCR:带复制的基于本地的最少连接  

ipvsadm命令参考

ipvsadm -A|E -t|u virutal-service-address:port [-s scheduler]
#-A:添加虚拟服务器记录
#-E:修改虚拟服务器记录
#-t:tcp服务
#-u:udp服务
#-s:调度算法,默认wlc ipvsadm -D -t|u|f virtual-service-address
#-D:删除虚拟服务器记录 ipvsadm -C
#-C:清空lvs规则 ipvsadm -R
#-R:重载lvs配置 ipvsadm -S [-n] > ipvs.save
#-S:保存lvs配置
#-n:不解析地址 ipvsadm -a|e -t|u service-address:port -r real-server-address:port [-g|i|m] [-w weight]
#-a:添加真实服务器记录
#-e:修改真实服务器记录
#-r:对应的真实服务器地址
#-g:指定lvs工作模式为DR,默认
#-i:指定lvs工作模式为tunnel
#-m:指定lvs工作模式为NAT
#-w:手工指定权重 ipvsadm -d -t|u|f service-address -r server-address
#-d:删除真实服务器记录 ipvsadm -Ln [options]
#-L:显示lvs运行状态
#-n:不解析地址
#-c:显示ipvs连接
#--stats:统计数据
#--rate:速率
#--exact:精确值 ipvsadm -Z [-t|u|f service-address]
#-Z:清空lvs计数器 ipvsadm -h
#-h:显示帮助信息

NAT模型

NAT模型可以做端口映射

1.首先在两台真实服务器上安装http服务
2.开启lvs服务器的转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
3.配置lvs服务
#定义一个lvs服务,指定vip和端口,指定调度方式为轮询
~]# ipvsadm -A -t VIP:PORT -s rr
#添加第一台真实服务器,并指定为NAT模型
~]# ipvsadm -a -t VIP:PORT -r RIP1:PORT -m
#添加第二台真实服务器,并指定为NAT模型
~]# ipvsadm -a -t VIP:PORT -r RIP2:PORT -m
#查看ipvs定义的规则
~]# ipvsadm -L -n

DR模型 

三台服务器的所有ip地址都指向路由器的网关接口,DR模式不能做端口映射,也就是lvs服务器的端口和RS服务器端口必须对应

arp_announce:arp通告
    0:全部通告(默认)
    1:尽量避免通告非本网段地址
    2:不通告非本网段地址

arp_ignore:arp应答
    0:有的话就应答(默认)
    1:不在请求的接口就不应答

1.RS服务器添加vip到lo口,并关闭lo口和其他接口的arp通告和应答,添加vip路由到lo口,下面是相应脚本,只需要更改对应vip即可

#!/bin/bash
#description:start realserver
vip=192.168.159.111
source /etc/rc.d/init.d/functions
case $1 in
start)
echo "Start Realserver"
ip addr add $vip/32 dev lo
ip route add $vip/32 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)
echo "Stop Realserver"
ip addr del $vip/32 dev lo
ip route del $vip/32
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 2.在RS上开启相应服务
~]# systemctl start nginx 3.在lvs服务器上添加vip到eth0:0口,并开启转发功能 #添加vip
~]# ip addr add vip/32 dev eth0:0 #开启转发
~]# echo 1 > /proc/sys/net/ipv4/ip_forward #添加路由
~]# ip route add vip/32 dev eth0:0 4.添加ipvs记录,DR模式不能做端口映射
~]# ipvsadm -A -t VIP:80 -s rr
~]# ipvsadm -a -t VIP:80 -r RIP1 -g
~]# ipvsadm -a -t VIP:80 -r RIP2 -g

keepalived:配置文件不能有中文注释!停止keepalived使用systemctl kill keepalived

[root@localhost roles]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
#notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
#}
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
} vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.88
}
}

注释,不要复制下面的内容,请复制上面的内容对应更改

global_defs {                   #全局配置
router_id mmm #路由器标识,全局唯一
} vrrp_instance VI_1 { #高可用实例1
state MASTER #状态为主节点
interface eno16777736 #使用哪块网卡
virtual_router_id 51 #虚拟路由器标识,同一个高可用内要相同
priority 100 #优先级,主节点要高于备用节点
advert_int 1 #监听时间间隔
authentication { #认证功能
auth_type PASS #明文认证
auth_pass 1111 #认证密码
}
virtual_ipaddress { #虚拟出来的ip地址
192.168.1.30
}
} 
#备节点不一样的字段为
#router_id nnn
#state BACKUP
#priority 99
#interface视网卡而定  

Keepalived+lvs  

RS节点同样需要做lvs DR模型的配置

1.RS服务器添加vip到lo口,并关闭lo口和其他接口的arp通告和应答,添加vip路由到lo口,下面是相应脚本,只需要更改对应vip即可

#!/bin/bash
#description:start realserver
vip=192.168.159.111
source /etc/rc.d/init.d/functions
case $1 in
start)
echo "Start Realserver"
ip addr add $vip/32 dev lo
ip route add $vip/32 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)
echo "Stop Realserver"
ip addr del $vip/32 dev lo
ip route del $vip/32
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 2.在RS上开启相应服务
~]# systemctl start nginx  

主节点

! Configuration File for keepalived

global_defs {
router_id master
vrrp_mcast_group 224.0.0.7
} vrrp_instance DR1 {
state MASTER
interface ens33
virtual_router_id 77
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.159.111
}
}
virtual_server 192.168.159.111 8888 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
sorry_server 192.168.159.130 8888
real_server 192.168.159.132 8888 {
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 8888
}
}
real_server 192.168.159.133 8888 {
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}  

备节点

! Configuration File for keepalived

global_defs {
router_id slave
vrrp_mcast_group 224.0.0.7
} vrrp_instance DR1 {
state BACKUP
interface ens33
virtual_router_id 77
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.159.111
}
}
virtual_server 192.168.159.111 8888 { #虚拟地址组,就是上面虚拟出来的ip加上业务端口
delay_loop 6 #健康检查周期,单位为秒
lb_algo rr #调度算法
lb_kind DR #调度模型
persistence_timeout 0 #同一ip在多少秒内发来的请求都送给同一realserver
protocol TCP
sorry_server 192.168.159.130 8888 #当realserver都挂掉的时候,将请求发送给谁
real_server 192.168.159.132 8888 { #rs1的检查
TCP_CHECK { #检查方法,有HTTP_GET,SSL_GET,TCP_CHECK
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试时间间隔
connect_port 8888 #连接端口
}
}
real_server 192.168.159.133 8888 {
HTTP_GET {
url { #检查方法
path / #请求路径
status_code 200 #返回状态码为200代表正常
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

  

  

  

 

lvs和keepalived的更多相关文章

  1. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  2. 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...

  3. RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

    原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写, ...

  4. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】

    CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡   一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2 ...

  5. LVS结合keepalived配置测试

     LVS/DR + keepalived配置 注意:前面虽然我们已经配置过一些操作,但是下面我们使用keepaliave操作和之前的操作是有些冲突的,所以若是之前配置过DR,请首先做如下操作:   三 ...

  6. LVS,Keepalived,HAproxy区别与联系

    LVS,Keepalived,HAproxy区别与联系 LVS 全称Linux Virtual Server,也就是Linux虚拟服务器,由章文嵩(现就职于于淘宝,正因为如此才出现了后来的fullna ...

  7. 虚拟机 搭建LVS + DR + keepalived 高可用负载均衡

    一:环境说明:   LVS-DR-Master:    10.3.0.82   LVS-DR-Backup:    10.3.0.70   VIP:                10.3.0.60  ...

  8. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  9. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  10. RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡(转)

    一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...

随机推荐

  1. spring core:@AliasFor的派生性

    spring对Annotation的派生性应用可谓炉火纯青,在spring core:@Component的派生性讲过支持层次上派生性,而属性上派生的需求则借助了@AliasFor,它是从spring ...

  2. 传入sql语句,执行完提取内容赋值到控件上

    class procedure DBTools.FillStrings(ComboBoxEh: TDBComboBoxEh; sql: string; Default: Boolean = False ...

  3. 吴裕雄--天生自然java开发常用类库学习笔记:SortedSet接口

    import java.util.SortedSet ; import java.util.TreeSet ; public class TreeSetDemo05{ public static vo ...

  4. codeforces 586B:Laurenty and Shop

    B. Laurenty and Shop time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. 【ABP】从零开始学习ABP_入门介绍

    本文介绍自己入坑ABP的过程,一些ABP的相关文章.QQ群,以及ABP Zero示例项目的运行. 背景 作为一个半路出家学习编程的新人,之前工作中也断断续续写过一些代码,但底层核心一直没机会学习,所以 ...

  6. 《新标准C++程序设计》3.5(C++学习笔记8)

    常量对象和常量成员函数 一.常量对象 如果希望某个对象的值初始化后就再也不被改变,则定义该对象时可以在前面加const关键字,使之成为常量对象. class CDemo { private: int ...

  7. 文献阅读报告 - Social Ways: Learning Multi-Modal Distributions of Pedestrian Trajectories with GANs

    文献引用 Amirian J, Hayet J B, Pettre J. Social Ways: Learning Multi-Modal Distributions of Pedestrian T ...

  8. 对于python 3.x与python2.x中新型类的继承特性总结

    (1)一般性继承特性 """ 该文件对于python 3.x 及python 2.x的New-style 类的一般性继承特性进行了说明和测试. (1)实例的继承特性:搜寻 ...

  9. OpenCV学习日志:计算机视觉资源汇总

    1.1 重要会议 (1)机器视觉重要会议 CVPR:Conferenceon Computer Vision and Pattern Recognition, IEEE, 五星 ICCV:Intern ...

  10. tableau创建蜘蛛图

    tableau官方案例2:创建起点和终点的路径地图 (spider Maps) 源数据样式: 应用:交通图  步骤及注意: 将Line Group (Path ID)维度放入标记卡详细信息 默认的为聚 ...