lvs和keepalived
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的更多相关文章
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写, ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】
CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2 ...
- LVS结合keepalived配置测试
LVS/DR + keepalived配置 注意:前面虽然我们已经配置过一些操作,但是下面我们使用keepaliave操作和之前的操作是有些冲突的,所以若是之前配置过DR,请首先做如下操作: 三 ...
- LVS,Keepalived,HAproxy区别与联系
LVS,Keepalived,HAproxy区别与联系 LVS 全称Linux Virtual Server,也就是Linux虚拟服务器,由章文嵩(现就职于于淘宝,正因为如此才出现了后来的fullna ...
- 虚拟机 搭建LVS + DR + keepalived 高可用负载均衡
一:环境说明: LVS-DR-Master: 10.3.0.82 LVS-DR-Backup: 10.3.0.70 VIP: 10.3.0.60 ...
- 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 ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡(转)
一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...
随机推荐
- tools.logback
https://logback.qos.ch/manual/index.html Logback is built upon three main classes: Logger, Appender ...
- P1044 火星数字
P1044 火星数字 转跳点:
- GNS3 模拟icmp目标不可达
目标不可达: R1 : conf t int f0/0 no shutdown ip add 192.168.1.1 255.255.255.0 end R2 f0/0: conf t int f0/ ...
- CocosCreator - 向上传递事件(冒泡)
/** * 分发事件到事件流中. * this.node.dispatchEvent(new cc.Event.EventCustom("name",是否向上传递)) * ...
- 这26个为什么,让初学者理解Python更简单!
为什么Python使用缩进来分组语句? 为什么简单的算术运算得到奇怪的结果? 为什么浮点计算不准确? 为什么Python字符串是不可变的? 为什么必须在方法定义和调用中显式使用“self”? 为什么不 ...
- JQuery去实现校验用户名
JQuery 是什么? javascript 的代码框架. 有什么用? 简化代码,提高效率. 核心 write less do more , 写得更少,做的更多. load //找到这个元素, 去执行 ...
- kafka的编程模型
1.kafka消费者编程模型 分区消费模型 组(group)消费模型 1.1.1.分区消费架构图,每个分区对应一个消费者. 1.1.2.分区消费模型伪代码描述 指定偏移量,用于从上次消费的地方开始消费 ...
- 日期月份是英文转成数字——oracle
update table01 set F_DATE = to_char(to_date(F_DATE, 'dd-month-yy', 'NLS_DATE_LANGUAGE=AMERICAN'), 'y ...
- oracle获取排序第一的数据
一:按照某字段排序(时间,总数等),获取第一条 select a.* FROM ( select * from ( select t.*,row_number() over(partition by ...
- POJ 2251 Dungeon Master(三维空间bfs)
题意:三维空间求最短路,可前后左右上下移动. 分析:开三维数组即可. #include<cstdio> #include<cstring> #include<queue& ...