在Linux中,IPVS管理员(ipvsadmin)是一个非常重要的工具,它可以帮助管理者完成对Linux网络命令的简化,并且能够帮助管理员更好的管理集群和流量转发机制。在本文中,我们将深入探究Linux IPVS管理员的相关知识。
1. IPVS概述
IPVS全称为IP Virtual Server,是Linux操作系统内置的第三层负载均衡模块。在服务器集群中,使用IPVS可以将客户端请求分发到多个后端服务节点,从而实现负载均衡和高可用。IPVS本身就是一个内核模块,不需要安装软件包,可直接在内核中编译启用,同时也支持iptables、arp等协议。
IPVS提供了三种负载均衡算法:
1.1. 轮询(Round Robin)算法
轮询是IPVS默认的负载均衡算法,它将每个客户端请求分配到下一个可用的服务器。每次分配到的服务器在分配之后向后移动一次,以实现均匀的请求分配。在服务器数量均衡的情况下,轮询算法很有效,但如果有一些服务器的性能比其他服务器高,轮询算法对于这些性能高的服务器并不公平,不能实现更佳的负载均衡效果。
1.2. 最小连接数(Least Connection)算法
IPVS还提供了最小连接数算法,该算法将新客户端请求发送到当前连接最少的服务器。此算法考虑了服务器的当前负载状态,可使其负载更加均衡。在应用程序在线交互服务器中,最小连接数算法是非常有用的。但在某些场景下,例如客户端的请求不同,对于有一些服务器的请求情况较少的情况,最小连接数算法不能很好地完成任务。
1.3. 源地址哈希(Source Hash)算法
IPVS提供了源地址哈希算法,它将 源IP地址 和服务器数量取模后的值作为选定的服务器。该算法具有动态性和灵活性,它可以避免用最小连接数算法对服务器进行硬编码,而是考虑到服务器的变化和性能,使得负载均衡更加均衡。但源地址哈希算法在客户端较多,服务器数量较少的场景下,可能出现较为明显的不均衡现象。
2. IPVS管理员(ipvsadmin)概述
除了通过IPVS内核模块来管理负载均衡,Linux系统还提供了一套用于管理IPVS的用户态工具——ipvsadmin。它是一个可以在各种基于Linux的服务器上使用的工具,通过ipvsadmin, 正在监视的服务器 群集下的 IPVS 服务管理人员可以进行各种负载均衡策略的管理,包括添加、删除、查看和修改IPVS转发条目,同时支持不同负载均衡算法的选择,可以很方便地对负载均衡的配置进行不同方式的管理。
可以对一个IPVS转发表进行操作,每个表可以为多个虚拟服务器提供服务,每个虚拟服务器可以逐一分配到多个真实服务器。IPVS管理员通过ipvsadmin程序操作IPVS内核模块,可以备份IPVS转发表、导入转发表、查看转发表等功能,从而方便管理员对集群的管理。
3. IPVS管理员(ipvsadmin)的使用实例
下面以ubuntu 18为例,说明如何使用ipvsadmin管理负载均衡。
3.1. 安装ipvsadmin
# apt-get install -y ipvsadm
3.2. 查看当前虚拟服务器配置
输入以下回车:
# ipvsadm -l
可以看到当前所有的IPVS虚拟服务器的配置情况。
3.3. 添加一个新的虚拟服务器
输入以下命令:
# ipvsadm -A -t 192.168.1.1:80 -s rr
在192.168.1.1的服务器中,创建一个负载均衡的虚拟服务器,并通过轮询算法分配请求。
3.4. 添加两个真实服务器
输入以下命令:
# ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.2 -g -w 1
# ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.3 -g -w 1
在虚拟服务器192.168.1.1上添加两个真实服务器192.168.1.2和192.168.1.3,并分别分配权重1。
3.5. 根据IP地址从一个IPVS服务器中删除一个虚拟服务器
输入以下命令:
# ipvsadm -D -t 192.168.1.1:80
3.6. 从一个IPVS服务器中删除某个真实服务器
输入以下命令:
# ipvsadm -d -t 192.168.1.1:80 -r 192.168.1.2
通过上述实例的演示,大家可以理解到IPVS管理员(ipvsadmin)的简单使用方法,这对于集群的操作管理、负载均衡算法的选择、IPVS虚拟服务器和真实服务器的添加、删除等都非常方便实现,使得集群系统的管理更加轻松便捷。
4.
IPVS管理员(ipvsadmin)本身是Linux内置的工具,通过它的使用,可以方便的管理IPVS模块,使得负载均衡更加的精确、稳定。在实践中,需要遵循负载均衡算法的选择,以及虚拟服务器和真实服务器的添加和删除规则,才能取得更好的负载均衡效果。同时,在使用ipvsadmin工具之前,也需要掌握Linux系统中的相关网络和命令操作知识,才能使用ipvsadmin完成集群管理。
相关问题拓展阅读:
- linux下的服务器双机热备份,如何做?
linux下的服务器双机热备份,如何做?
Linux上的heartbeat双机热备服务架设
【一】 安装前环境设定
两台主机硬件环境(不必完全一致):庆哗
CPU: Xeon 3G *2 (EM64T)
MEM: 2G
NIC: Intel 1G *2
eth0: 对外IP
eth1: 对内IP(HA专用)
两台主机的eth1使用双机对联线直接连接。
分区方式:
Filesystem 容量 挂载点
/dev/sda2 9.7G /
/dev/sda6 45G /Datas
/dev/sda1 99M /boot
none2.0G /dev/shm
/dev/sda3 9.7G /opt
另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。
操作系统:
RedHat Enterprise 4 Update2 (2.6.9-22 EL)
预安装软件:
@ X Window System
@ GNOME Desktop Environment
@ KDE Desktop Environment
@ Editors
@ Engineering and Scientific
@ Graphical Internet
@ Text-based Internet
@ Authoring and Publishing
@ Server Configuration Tools
@ Development Tools
@ Kernel Development
@ X Software Development
@ GNOME Software Development
@ KDE Software Development
@ Administration Tools
@ System Tools
【二】安装前亮滑网络环境设定:
node1: 主机名:servers201 ( HA01 )
eth0: 192.168.10.201 //对外IP地址
eth1: 10.0.0.201 //HA心誉键行跳使用地址
node2: 主机名:servers202 ( HA02 )
eth0: 192.168.10.202 //对外IP地址
eth1: 10.0.0.202 //HA心跳使用地址
特别注意要检查以下几个文件:
/etc/hosts
/etc/host.conf
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/nsswitch.conf
#vi /etc/hosts
node1的hosts内容如下:
127.0.0.1 localhost.localdomain localhost
192.168.10.201 servers201 HA01
10.0.0.201 HA01
10.0.0.202 HA02
192.168.10.202 server202
node2的hosts内容如下:
127.0.0.1 localhost.localdomain localhost
192.168.10.202 servers202 HA02
10.0.0.202 HA02
10.0.0.201 HA01
192.168.10.201 server201
#cat /etc/host.conf
order hosts,bind
#cat /etc/resolv.conf
nameserver 61.139.2.69 //DNS地址
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=servers201 //主机名
GATEWAY=”192.168.10.1″ //网关
GATEWAY=”eth0″ //网关使用网卡
ONBOOT=YES //启动时加载
FORWARD_IPV4=”yes” //只允许IPV4
#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.201
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
TYPE=Ethernet
IPV6INIT=no
#cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.201
NETMASK=255.255.255.0
TYPE=Ethernet
与 在上面的配置中,除了
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
要各自修改外,其他一致。
配置完成后,试试在各自主机上ping对方的主机名,应该可以ping通:
/root#ping HA02
PING HA02 (10.0.0.202) 56(84) bytes of data.
64 bytes from HA02 (10.0.0.202): icmp_seq=0 ttl=64 time=0.198 ms
64 bytes from HA02 (10.0.0.202): icmp_seq=1 ttl=64 time=0.266 ms
64 bytes from HA02 (10.0.0.202): icmp_seq=2 ttl=64 time=0.148 ms
— HA02 ping statistics —
3 packets tranitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 0.148/0.204/0.266/0.048 ms, pipe 2
【三】安装HA 与HA依赖包
rpm -Uvh libnet-1.1.2.1-1.rh.el.um.1.i386.rpm //可以不装
rpm -Uvh heartbeat-pils-2.0.4-1.el4.i386.rpm
rpm -Uvh heartbeat-stonith-2.0.4-1.el4.i386.rpm
rpm -Uvh heartbeat-2.0.4-1.el4.i386.rpm
rpm -Uvh ipvsadm-1.24-5.i386.rpm
【四】 配置 HA的各配置文件
配置心跳的加密方式:authkeys
#vi /etc/ha.d/authkeys
如果使用双机对联线(双绞线),可以配置如下:
#vi /etc/hc.d/authkeys
auth 1
1 crc
存盘退出,然后
#chmod 600 authkeys
配置心跳的监控:haresources
#vi /etc/ha.d/haresources
各主机这部分应完全相同。
server201 IPaddr::192.168.10.200 ipvsadm httpd
指定 server201调用ipvsadm启动http服务,系统附加一个虚拟IP 192.168.10.200 给eth0:0
这里如果server201宕机后,server202可以自动启动http服务,并新分配IP 192.168.10.200给server202的eth0:0
配置心跳的配置文件:ha.cf
#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1 ##使用eth1做心跳监测
keepalive 2 ##设定心跳(监测)时间时间为2秒
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694 ##使用udp端口694 进行心跳监测
auto_failback on
node server201 ##节点1,必须要与 uname -n 指令得到的结果一致。
node server202 ##节点2
ping 192.168.10.1 ##通过ping 网关来监测心跳是否正常。
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debugfile /Datas/logs/ha_log/ha-debug.log
设置ipvsadm的巡回监测
ipvsadm -A -t 192.168.10.200:80 -s rr
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.201:80 -m
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.202:80 -m
执行后进行监测:
#ipvsadm –list
如果返回结果与下相同,则设置正确。
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.200:http rr
-> server202:http Local 1 0 0
-> server201:http Masq 1 0 0
【五】 HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
系统在启动时已经自动把heartbeat 加载了。
使用http服务测试 heartbeat
首先启动httpd服务
#service httpd start
编辑各自主机的测试用html文件,放到/var/www/html/目录下。
启动node1的heartbeat,并执行这个指令进行监控: heartbeat status
【六】 防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。如果系统有使用iptables 做防火墙,应记住把这个端口打开。
#vi /etc/sysconfig/iptables
加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp –dport 694 -d 10.0.0.201 -j ACCEPT
意思是udp 694端口对 对方的心跳网卡地址 10.0.0.201 开放。
#service iptables restart
关于linux ipvsadmin的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。