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月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...
随机推荐
- SpringIOC初始化过程源码跟踪及学习
Spring版本 4.3.2,ssm框架 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 web.xml <!--配置获取项目的根路径,java类中使用System.getProperty ...
- 图形与动画在Android中的实现
public class MyView extends View{ Bitmap myBitmap; Paint paint; public MyView(Context context, Attri ...
- Manjaro Linux 添加源及输入法
生成可用的中国镜像站列表 sudo pacman-mirrors -i -c China -m rank 勾选相应的镜像站 ,看自己的喜好 如中科大:http://mirrors.ustc.edu.c ...
- 吴裕雄--天生自然java开发常用类库学习笔记:foreach及Enumeration接口
import java.util.Vector; import java.util.Enumeration; public class EnumerationDemo01{ public static ...
- springboot - 返回xml error 从自定义的 ErrorController
1.概览 2.在<springboot - 返回JSON error 从自定义的 ErrorController>基础上,做如下调整: 1).新增Attribute类和Error类 pac ...
- Idea 打开多profile注意事项
Maven项目经常会有多个profile,可以方便在编译时指定profile. 如果有多个profile,idea 在打开工程后默认配置可能会有些问题. 例如: 最近在编译一个项目:https://g ...
- 《TensorFlow实战Google深度学习框架》笔记——TensorFlow入门
一.Tensorflow计算模型:计算图 计算图是Tensorflow中最基本的一个概念,Tensorflow中的所有计算都被被转化为计算图上的节点. Tensorflow是一个通过计算图的形式来描述 ...
- spring-@ResponseBody返回时的编码处理
下面是一个解决方案 @RequestMapping(value = "/queryall", method = GET, produces = "application/ ...
- 09.swoole学习笔记--进程事件
<?php //进程数组 $workers=[]; //创建进程的数据量 $worker_num=; //创建启动进程 ;$i<$worker_num;$i++){ //创建单独新进程 $ ...
- 138-PHP static后期静态绑定(一)
<?php class test{ //创建test类 public function __construct(){ self::getinfo(); //后期静态绑定 } public sta ...