#查看内核是否已经编译了IPVS
[root@~ localhost]#grep -i -C 10  'ipvs' /boot/config-3.10.0-327.el7.x86_64 
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m               #已经编译到内核
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
# IPVS transport protocol load balancing support    #IPVS负载均衡支持的传输协议

CONFIG_IP_VS_PROTO_TCP=y
# IPVS scheduler                       #IPVS算法程序
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
#安装ipvsadm
[root@~ localhost]#yum -y install ipvsadm

 

#mini主机(172.16.250.89/16);(192.168.2.130/24)作为VS;
[root@~ localhost]#yum -y install ipvsadm

 

首先配置RS:

#配置RS:192.168的主机,两台一样
[root@~ pxe99]#yum -y install httpd telnet-server tftp-server
[root@~ pxe99]#vim /var/www/html/index.html [root@~ pxe99]#cat /var/www/html/index.html <h1>RS1:192.168.2.131<h1> 
[root@
~ pxe99]#systemctl start httpd
[root@
~ pxe99]#ss -ntl|grep "80" LISTEN 0 128 :::80
#在172的网关上测试两台:
[root@
~ localhost]#curl http://192.168.2.131
<h1>RS1:192.168.2.131<h1>
[root@
~ localhost]#curl http://192.168.2.132
<h1>RS:192.168.2.132<h1>

定义集群服务:

[root@~ localhost]#yum -y install ipvsadm
[root@~ localhost]#ipvsadm -Ln       #没由集群服务
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
#-L, -l, --list:列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表
# -n, --numeric:不对ip地址进行dns查询

[root@~ localhost]#ipvsadm -A -t 172.16.254.88:80 -s rr
#-A, --add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式
#-t, --tcp-service service-address:指定虚拟服务为tcp服务。
#172.16.254.88:80  是service address用来指定涉及的虚拟服务即虚拟地址。
#-s, --scheduler scheduling-method:指定调度算法。rr表示轮询调度算法

[root@~ localhost]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.254.88:80 rr

#为虚拟服务添加后端服务器RS
[root@~ localhost]#ipvsadm -a -t 172.16.254.88:80 -r 192.168.2.131 -m
[root@~ localhost]#ipvsadm -a -t 172.16.254.88:80 -r 192.168.2.132 -m
#-a, --add-server:为虚拟服务添加一个real server(RS)
# -r, --real-server server-address:为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。
#-m, --masquerading:使用NAT模式

 

[root@~ localhost]#ipvsadm -e -t 172.16.154.88:80 -r 192.168.2.132 -m -w 2
-w weight:权重
#-e --edit-server  编辑一条虚拟服务器记录中的某条真实服务器记录
#-E --edit-service  编辑内核虚拟服务器表中的一条虚拟服务器记录

[root@~ localhost]#ipvsadm -E -t 172.16.254.88:80 -s wrr

 

#在192上:
#添加用户
[root@~ pxe99]#for i in {1..3}; do useradd user$i; echo "123456" |passwd --stdin user$i; done
[root@~ pxe99]#systemctl start telnet.socket
[root@~ pxe99]#ss -ntl|grep "23"

#在172上
[root@~ localhost]#ipvsadm -A -t 172.16.254.88:23 -s lc
[root@~ localhost]#ipvsadm -a -t 172.16.254.88:23 -r 192.168.2.131 -m -w 1
[root@~ localhost]#ipvsadm -a -t 172.16.254.88:23 -r 192.168.2.132 -m -w 2
[root@~ localhost]#
[root@~ localhost]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.254.88:23 lc
  -> 192.168.2.131:23             Masq    1      0          0         
  -> 192.168.2.132:23             Masq    2      0          0         
TCP  172.16.254.88:80 rr
  -> 192.168.2.131:80             Masq    1      0          0         
  -> 192.168.2.132:80             Masq    1      0          0