欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用LVS和keepalived实现高效负载均衡的集群系统

最编程 2024-08-10 21:43:11
...

今天稍微了解了LVS 的原理和使用,在网络上找到不少好文章,稍微加以处理并在这里备份:

原理介绍:Linux Virtual Server

关于:http://www.linuxvirtualserver.org/about.html

The mission of the Linux Virtual Server project is to build a high-performance and highly available server for Linux using clustering technology, which provides good scalability, reliability and serviceability.

Currently, the major work of the LVS project is to develop advanced IP load balancing software (IPVS), application-level load balancing software (KTCPVS), cluster management components. These components make the LVS framework illustrated in the following figure.

  • IPVS: is an advanced IP load balancing software implemented inside the Linux kernel. The IPVS code was already included into the standard Linux kernel 2.4 and 2.6.
  • KTCPVS: implements application-level load balancing inside the Linux kernel, currently under development.

一.检查内核是否支持LVS

备注:2.4.23以后版本的内核已经支持LVS,只需要直接使用,不需要进行内核的下载和更新工作。

二.检查内核是否支持lvs的ipvs模块

[root@wjb10000 ~]# modprobe -l|grep ipvs

modprobe: invalid option -- 'l'

备注:参数l无效,查了很多资料。好像现在没有这个参数了,可以改用下面这个命令查看内核是否支持lvs的ipvs模块

[root@wjb10000 ~]# find /lib/modules/$(uname -r)/ -iname "**.ko*" | cut -d/ -f5-

....................前面省略...................

kernel/net/netfilter/ipvs/ip_vs.ko

kernel/net/netfilter/ipvs/ip_vs_dh.ko

kernel/net/netfilter/ipvs/ip_vs_ftp.ko

kernel/net/netfilter/ipvs/ip_vs_lblc.ko

kernel/net/netfilter/ipvs/ip_vs_lblcr.ko

kernel/net/netfilter/ipvs/ip_vs_lc.ko

kernel/net/netfilter/ipvs/ip_vs_nq.ko

kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko

kernel/net/netfilter/ipvs/ip_vs_rr.ko

kernel/net/netfilter/ipvs/ip_vs_sed.ko

kernel/net/netfilter/ipvs/ip_vs_sh.ko

kernel/net/netfilter/ipvs/ip_vs_wlc.ko

kernel/net/netfilter/ipvs/ip_vs_wrr.ko

....................后面省略...................

看到有输出以上内容,说明内核支持lvs了,无需再编译内核了。

当然也可以进入文件夹列出:

三.查看ipvsadm 程序是否被安装

[root@wjb10000 ~]# ipvsadm

-bash: ipvsadm: command not found

输出以上信息表明未安装ipvsadm程序。下面通过yum的方式安装ipvsadm程序,不用考虑软件之间的依懒性。

[root@wjb10000 ~]# yum -y install ipvsadm

[root@wjb10000 ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

安装完ipvsadm之后输出的信息。说明ipvsadm安装成功。

我们简要查看ipvsadm的信息,可以获取到更多有意思的事情:

可以发现,它确实已经加入到内核之中了,并一直有新的版本释出。https://kernel.org/pub/linux/utils/kernel/ipvsadm/

四.配置 IPVS (资源来源自网络未验证,只供参考

1.开启IP转发功能

[root@wjb10000 /]#echo 1 >/proc/sys/net/ipv4/ip_forward   

默认是0,关闭ip转发;这里需要开启,所以设置值为1。

2.配置重定向

[root@wjb10000 /]#echo "0" >/proc/sys/net/ipv4/ip_forward

[root@wjb10000 /]#echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects

[root@wjb10000 /]#echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects

[root@wjb10000 /]#echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects

3.清除ipvsadm表

[root@wjb10000 /]#ipvsadm -C

4.使用ipvsadm安装LVS服务实例:

ipvsadm -A -t vip:端口号 -s rr

5.增加二台内部web服务器

ipvsadm -a -t vip:端口号 -r web1服务器IP:端口号 -m -w 1

ipvsadm -a -t vip:端口号 -r web2服务器IP:端口号 -m -w 1


ipvsadm使用指南

1.名词解释

virtual-service-address(VIP):虚拟服务器的 ip  地址

real-service-address(RIP):是指真实服务器的 ip  地址

scheduler:调度方法

2.ipvsadm的用法和格式如下

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

3.命令选项

-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

显示内核虚拟服务器表,输出对应文件/proc/net/ip_vs

-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秒。

-r --real-server server-address

真实的服务器[Real-Server:port]

-g --gatewaying

指定LVS的工作模式为直接路由模式(也是LVS默认的模式)

-i --ipip

指定LVS的工作模式为隧道模式

-m --masquerading

指定LVS的工作模式为NAT模式

-w --weight weight

真实服务器的权值

--mcast-interface interface

指定组播的同步接口

-c --connection

显示LVS目前的连接。如:ipvsadm -L –,输出对应文件/proc/net/ip_conn

--timeout

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

--daemon

显示同步守护进程状态

--stats

显示统计信息,输出对应文件/proc/net/ip_vs_stats

--rate 

显示速率信息输出对应文件/proc/net/ip_vs_stats

--sort

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

--numeric -n

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

原文链接:http://blog.51cto.com/wjb10000/1789332

 扩展参考链接:https://www.cnblogs.com/liwei0526vip/p/6370103.html

扩展链接2:https://www.cnblogs.com/bananaaa/p/7929796.html

KeepAlived介绍:http://m.elecfans.com/article/700023.html