一、图示
二、简介Lvs(Linux Virtual Server)
Ipvs : 嵌入到linux的内核
IPVsadm:管理应用程序
四种静态:
rr:轮循
wrr:
dh:
sh:
动态调度方法:
lc: 最少连接
active*256+inactive
谁的小,挑谁
wlc: 加权最少连接
(active*256+inactive)/weight
sed: 最短期望延迟
(active+1)*256/weight
nq: never queue
LBLC: 基于本地的最少连接
DH:
LBLCR: 基于本地的带复制功能的最少连接
默认方法:wlc
类型:
NAT:地址转换
DR: 直接路由
TUN:隧道
NAT:
集群节点跟director必须在同一个IP网络中;
RIP通常是私有地址,仅用于各集群节点间的通信;
director位于client和real server之间,并负责处理进出的所有通信;
realserver必须将网关指向DIP;
支持端口映射;
realserver可以使用任意OS;
较大规模应该场景中,director易成为系统瓶颈;
VIP: 虚拟服务器地址
DIP: 转发的网络地址
RIP: 后端真实主机(后端服务器)
CIP:客户端IP地址
DR:
集群节点跟director必须在同一个物理网络中;
后端服务器(真实服务器)可以使用公网地址,实现便捷的远程管理和监控;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
不支持端口映射;
TUN:
集群节点可以跨越Internet;
RIP必须是公网地址;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
realserver网关不能指向director;
只有支持隧道功能的OS才能用于realserver;
不支持端口映射;
三、配置Lvs
1.准备三台虚拟机,分别为
node5 192.168.13.135(RS,real server)
node6 192.168.13.136(RS,real server)
node7 192.168.13.137(DR,转发服务器)
2.为转发器node7增加eth0的虚拟ip(需要向外通信)
ifconfig eth0:1 192.168.13.100/24 (通过命令修改不会永久有效,重启就失效)
3.为real server配置虚拟ip,但是此虚拟ip不向外通告,即隐藏
a)首先修改响应、通告级别
在node5、node6下分别设置
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce(all是指除eth0以外的所有)
b)绑定lo的虚拟ip(不向外通信,lo即为本机通信)
在node5、node6下分别设置
ifconfig lo:1 192.168.13.100 netmask 255.255.255.255 broadcast 192.168.13.100
配置错的子网掩码也是为其不向外通信,广播地址也设为自身
c)在RS(node5和node6)上添加路由
route add -host 192.168.13.100 dev lo:1
注:1)proc文件为内核映射文件
2)arp_ignore: 定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应;
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上(MAC)地址匹配的网络进行通告;
4.准备完毕,开始搭建(以下已安装httpd为例,安装tomcat或nginx都可)
a)首先在三台虚拟机上添加主机名和ip地址映射
vi /etc/hosts
192.168.13.135 node5
192.168.13.136 node6
192.168.13.137 node7
b)安装启动httpd(node5和node6下)
yum -y install httpd
service httpd start
此时可以通过浏览器访问node5或node6
如果想要修改访问页面,命令:vi /var/www/html/index.html编辑即可
c)在DR上使用ipvsadm添加集群服务
ipvsadm -A -t 192.168.13.100:80 -s wlc
ipvsadm -a -t 192.168.13.100:80 -r 192.168.13.135 -g -w 1
ipvsadm -a -t 192.168.13.100:80 -r 192.168.13.136 -g -w 1
5.搭建完毕,通过浏览器访问
访问虚拟ip 192.168.13.100,即可以访问node5和node6下服务里的内容
此时内容就是node5和node6直接返回给我们的内容,而不是DR返回的
四、配置Lvs+Keepalived(高可用)
1.再准备一台虚拟机作为DR,防止一台DR因故障而整个服务无法工作
node5 192.168.13.135(RS,real server)
node6 192.168.13.136(RS,real server)
node7 192.168.13.137(DR,转发服务器)
node8 192.168.13.138(DR,转发服务器)(node8可由node7克隆得到)
2.配置四台虚拟机的hosts文件
3.在node7和node8中安装keepalived
yum install keepalived
4.删除node7和node8的虚拟ip,因为此时虚拟ip由keepalived来创建
ifconfig eth0:1 down
5.编辑keepalived的配置文件(node7为主机。node8为备机,state要改为BACKUP)
! Configuration File for keepalived #全局配置 global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个 120734657@qq.com } notification_email_from XXX@XXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识 } vrrp_instance VI_1 { state MASTER #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 1111 } virtual_ipaddress { #设置vip 192.168.13.100/24 #可以多个虚拟IP,换行即可 } } |
service iptables stop
7.查看是否创建好虚拟ip
通过ifconfig查询
注:如果ifconfig没有显示虚拟ip,不要紧(有时不出现),用命令ipvsadm -Ln查看,如
果有内容增加就成功了。
应该为:
TCP 192.168.13.100:80 wlc persistent 50
--> 192.168.13.135:80 Route 1 0 0
--> 192.168.13.136:80 Route 1 0 0
8.此时搭建成功,即可通过浏览器访问(192.168.13.100)。