无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。

LVS 安装

下载

http://www.linuxvirtualserver.org/software/index.html

编译安装

yum install -y kernel-devel gcc gcc-c++

yum install libnl* libpopt* popt-static -y

解压完之后进入解压目录执行

make && make install

编译成功后通过ipvsadm命令验证成功。

keepalived

下载

http://www.keepalived.org/download.html

yum install curl gcc openssl-devel libnl3-devel net-snmp-devel

yum install -y libnfnetlink-devel

./configure --prefix=/usr/local/keepalived

make && make install

先配置LVS能够跑起来

VIP

172.23.26.233

DR

172.23.26.212

RS IP

172.23.26.210

172.23.26.211

212机器安装lvs

执行以下脚本

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=172.23.26.233

rs1=172.23.26.210

rs2=172.23.26.211

ifconfig eth0:0 down

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $rs1:80 -g

$ipv -a -t $vip:80 -r $rs2:80 -g

-t tcp负载

-g 集群模式DR

rr 轮训负载算法

210 211上执行以下脚本

#! /bin/bash

vip=172.23.26.233

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip 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

测试

轮训请求,测试成功

ipvs命令解释

ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]

ipvsadm -D -t|u|f virtual-service-address

ipvsadm -C

ipvsadm -R

ipvsadm -S [-n]

ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]

ipvsadm -d -t|u|f service-address -r server-address

ipvsadm -L|l [options]

ipvsadm -Z [-t|u|f service-address]

ipvsadm --set tcp tcpfin udp

ipvsadm --start-daemon state [--mcast-interface interface]

ipvsadm --stop-daemon

ipvsadm -h

命令选项解释:

有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可以。

-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。

-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。 修改定义过的集群服务

-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。

-C --clear 清除内核虚拟服务器表中的所有记录。

-R --restore 恢复虚拟服务器规则

-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式

-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器

-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录

-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录

-L|-l --list 显示内核虚拟服务器表 userver 列表;

-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)

--set tcp tcpfin udp 设置连接超时值

--start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。

--stop-daemon 停止同步守护进程

-h --help 显示帮助信息

其他的选项:

-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]

-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]

-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。通常用于将两个或两个以上的服务绑定为一个服务进行处理时使用;

-s --scheduler scheduler 使用的调度算法,有这样几个选项 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc.

-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。 持久连接;

-M --netmask netmask persistent granularity mask

-r --real-server server-address 真实的服务器[Real-Server:port]

-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式) DR模型

-i --ipip 指定LVS 的工作模式为隧道模式

-m --masquerading 指定LVS 的工作模式为NAT 模式

-w --weight weight 真实服务器的权值

--mcast-interface interface 指定组播的同步接口

-c --connection 显示LVS 目前的连接 如:ipvsadm -L -c

--timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout

--daemon 显示同步守护进程状态

--stats 显示统计信息 ipvsadm –Ln --state 总共的数量

--rate 显示速率信息 ipvsadm –Ln --rete 平均值

--sort 对虚拟服务器和真实服务器排序输出

--numeric -n 输出IP 地址和端口的数字形式

LVS解决了负载均衡的问题

但是LVS没有健康检查,即使下游的RS故障了,LVS仍然会转发到故障节点

keepalived则可以解决这个问题,而且还能解决LVS自身的单点故障问题,实现LVS的高可用

keepalived编译安装完之后执行如下操作:

mkdir /etc/keepalived

keepalived.conf拷贝上上述文件夹

cp keepalived-1.4.3/keepalived/etc/init.d/keepalived /etc/init.d/

cp keepalived-1.4.3/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

vrrp_instance VI_1 {

state BACKUP

interface eth0 #指定HA监测网络的接口

virtual_router_id 51 #虚拟路由标识,同一个vrrp_instance下,master和backup一致

priority 90

advert_int 10 #设定master与backup负载均衡之间同步检查的时间间隔,单位秒

authentication {

auth_type PASS #验证类型 PASS AH两种

auth_pass 1111 #验证密码,同一个vrrp_instance下的master与backup一致

}

virtual_ipaddress {

172.23.26.233

}

}

virtual_server 172.23.26.233 80 { #VIP

delay_loop 6 #运行情况检查时间,单位秒

lb_algo rr #设置负载调度算法

lb_kind DR #设置LVS负载均衡机制DR

net_mask 255.255.255.0

persistence_timeout 0 #会话保持时间,单位秒

protocol TCP

real_server 172.23.26.210 80 { #真实服务地址

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 172.23.26.211 80 { #真实服务地址

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

service keepalived start启动kp

这种方式启动读取的KEEPALIVE_OPTIONS参数如下:

然后在kp机器上再执行lvs_dr脚本即可

测试验证成功,能自动将包转发到活的服务上

下面测试UDP的负载均衡及HA

lvs_dr脚本如下:

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=172.23.26.233

rs1=172.23.26.210

rs2=172.23.26.211

ifconfig eth0:0 down

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -u $vip:62000 -s rr

$ipv -a -u $vip:62000 -r $rs1:62000 -g

$ipv -a -u $vip:62000 -r $rs2:62000 -g

UDP检测脚本,安装nc

nc -uvz 172.23.26.210 62000

输出Connection to 172.23.26.210 62000 port [udp/*] succeeded!说明udp检测成功

keepalived.conf配置文件如下:

vrrp_instance VI_1 {

state MASTER

interface eth0 #指定HA监测网络的接口

virtual_router_id 51 #虚拟路由标识,同一个vrrp_instance下,master和backup一致

priority 100

advert_int 10 #设定master与backup负载均衡之间同步检查的时间间隔,单位秒

authentication {

auth_type PASS #验证类型 PASS AH两种

auth_pass 1111 #验证密码,同一个vrrp_instance下的master与backup一致

}

virtual_ipaddress {

172.23.26.233

}

}

virtual_server 172.23.26.233 62000 { #VIP

delay_loop 6 #运行情况检查时间,单位秒

lb_algo rr #设置负载调度算法

lb_kind DR #设置LVS负载均衡机制DR

net_mask 255.255.255.0

persistence_timeout 0 #会话保持时间,单位秒

protocol UDP

real_server 172.23.26.210 62000 { #真实服务地址

weight 1

MISC_CHECK {

misc_path "/home/lvs/udp_check.sh 172.23.26.210 62000"

misc_timeout 10

}

}

real_server 172.23.26.211 62000 { #真实服务地址

weight 1

MISC_CHECK {

misc_path "/home/lvs/udp_check.sh 172.23.26.211 62000"

misc_timeout 10

}

}

}

自己找个UDP客户端工具或者写个UDP客户端发包测试成功

【LVS+Keepalived】 LVS+Keepalived实现tcp、udp负载均衡及HA高可用相关推荐

  1. Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)

    前奏 我们都知道 nginx 是一款优秀的反向代理服务,用过 nginx 的也应该都知道 upstream,upstream 节点一般置于 http 节点大括号中,常规在 upstream 中配置需要 ...

  2. LVS负载均衡与Keepalive高可用

    LVS负载均衡与Keepalive高可用负载均衡 一.LVS介绍 二.LVS的三种工作模式 1.NAT模式 2.TUN模式 3.DR模式 三.ipvsadm实现Apache负载均衡横 四.keepal ...

  3. LVSKeepalived—集群、负载均衡、企业高可用详解

    LVS负载均衡集群及配置 负载均衡概述 1.集群 通过集群(cluster)技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对高的收益,其任务调度则是集群系统中的核心技术. 集群搭建 ...

  4. keepalived+nginx负载均衡+ApacheWeb实现高可用

    1.Keepalived高可用软件 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,kee ...

  5. 游戏服务器高性能负载均衡,游戏服务器高可用负载均衡

    游戏服务器高可用负载均衡 内容精选 换一换 公有云提供弹性公网IP(EIP).NAT网关.弹性负载均衡(ELB)等方式连接公网.EIPEIP提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务. ...

  6. Nginx 反向代理 负载均衡 动静分离 高可用 原理

    1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...

  7. Nginx 方向代理/负载均衡/动静分离/高可用

    一,反向代理 正向代理:正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端.这里客户端是要进行 ...

  8. asp.net core 实战之 redis 负载均衡和quot;高可用quot;实现

    1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...

  9. lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析

    目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...

最新文章

  1. GDI+需要Dispose的对象(不断更新中)
  2. 死锁和活锁有什么区别?
  3. 深度探索C++ 对象模型(6)-Data member的存取
  4. C++在不使用任何算术运算符的情况下将两个数字相加(附完整源码)
  5. 从一道面试题说起—js隐式转换踩坑合集
  6. mac 配置java adb环境_MAC 配置android adb命令的环境变量
  7. js值的拷贝和值的引用_到达P值的底部:直观的解释
  8. arm linux head.s,arm-linux head.S 源代码分析
  9. 电商海报模板|psd分层海报素材轻松教你凸显你的主体产品!
  10. 【杂谈】excel列表创建后,怎么删除蓝色边框线?
  11. python语言输入中文_selenium+python 语言编写问题,在执行时无法输入中文用户名...
  12. 各位玩新浪的SAE的 请点个关注http://weibo.com/i/2062352633
  13. nfc(近距离无线通讯技术)
  14. hdu1197(十进制十六进制十二进制位数和)
  15. pwnthebox-rip
  16. 设计模式中的七大原则(代码 + 图解)
  17. Dev-C++下面的编译状态栏信息不显示
  18. java-php-python-仁爱公益网站计算机毕业设计
  19. JVM 运行时内存空间详解——元空间
  20. CRM适用于什么企业?

热门文章

  1. 985学校计算机实力排名2015,985大学名单及分档排名分析
  2. 华为云不能访问指定端口和telnet连接不了的问题
  3. 苹果年夜饭“全家桶”来了,给你不一样的新年味
  4. IOS版aplayer使用教程_lulu Mac版防火墙使用教程
  5. Kylin_麒麟介绍
  6. 女生参加UI设计培训班有没有前途
  7. vs2008简易闹钟制作
  8. 关于合泰 EEPROM 读写程序
  9. 微信小程序开发入门教程(七)
  10. python数组乘以一个字符串_一个数组乘以一个元素