负载均衡集群 之 LVS (2) DR模式搭建 和 keepalived+lvs
2018-04-01 00:00
1406 查看
4. LVS DR模式搭建
为什么不使用IP TUNNEL模式呢?在生产环境中用的比较多的情况就是DR模式,NAT模式用的也不是太多,因为我们也说到了NAT的瓶颈问题。
如果规模在10台以内访问量不是很大且硬件配置+网络环境都可以的话建议使用NAT模式,可以节省公网IP,因为公网IP的成本也比较高。
另外一种方案就是搭建内网的LVS,全部的server均使用内网IP,我们使用一个公网IP端口映射到内网VIP的80端口即可,从而达到节省IP资源。
4.1 准备工作
三台模拟服务器主机名 | IP地址 | 角色 |
---|---|---|
yt-01 | 192.168.2.131 | Director |
yt-02 | 192.168.2.132 | Real server 1 |
yt-03 | 192.168.2.133 | Real server 2 |
192.168.2.200 | VIP |
4.2 确保每台机器已经安装了ipvsadm服务
[root@yt-01 ~]# yum install -y ipvsadm [root@yt-02 ~]# yum install -y ipvsadm [root@yt-03 ~]# yum install -y ipvsadm
4.3 在Director上面编写脚本
[root@yt-01 ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/usr/sbin/ipvsadm vip=192.168.2.200 rs1=192.168.2.122 rs2=192.168.2.123 #注意这里的网卡名字 ifdown ens33 ifup ens33 ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev ens33:2 $ipv -C $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1
4.4 运行DR上lvs_dr脚本
[root@yt-01 ~]# sh /usr/local/sbin/lvs_dr.sh 成功断开设备 'ens33'。 成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
4.5 每台Real Server上也编写脚本
[root@yt-02 ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash vip=192.168.2.200 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 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
4.6 每台Real Server上运行脚本
[root@yt-02 ~]# sh /usr/local/sbin/lvs_rs.sh [root@yt-03 ~]# sh /usr/local/sbin/lvs_rs.sh # 查看一下每台real server的router -n [root@zhdy-02 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.2 0.0.0.0 UG 100 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.2.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo # 查看IP是否已经绑在lo卡上 [root@yt-02 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.168.2.200/32 brd 192.168.2.200 scope global lo:0
4.7 测试
测试前一定要全部关闭iptables# systemctl stop firewalld # systemctl disable firewalld
修改2个RS的nginx主页内容,以便区分
[root@yt-02 ~]# echo "rs1rs1" >/usr/share/nginx/html/index.html [root@yt-03 ~]# echo "rs2rs2" >/usr/share/nginx/html/index.html
用浏览器测试VIP,多试几次
[root@zhdy-01 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.200:80 wrr -> 192.168.2.122:80 Route 1 1 9 -> 192.168.2.123:80 Route 1 1 8
5. keepalived + LVS
LVS有个关键的点,也是致命点。所有的请求都会通过Director去转发到Real server 如果Director宕机,我们的所有服务均会被停止掉。所以我们会把keepalived放在这儿,实现DR的高可用,这样就会完美的解决问题!完整架构需要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived本身也有负载均衡的功能,所以本次实验可以只安装一台keepalived。
5.1 准备工作
主机名 | IP地址 | 角色 |
---|---|---|
yt-01 | 192.168.2.131 | Director,安装keepalived |
yt-02 | 192.168.2.132 | Real server 1 |
yt-03 | 192.168.2.133 | Real server 2 |
无 | 192.168.2.300 | VIP |
5.2 配置director
[root@yt-01 ~]# yum install -y keepalived # 自定义Keepalived配置文件 [root@yt-01 ~]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { #备用服务器上为 BACKUP state MASTER #绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下 interface ens33 virtual_router_id 51 #备用服务器上为90 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.2.300 } } virtual_server 192.168.2.300 80 { #(每隔10秒查询realserver状态) delay_loop 10 #(lvs 算法) lb_algo wlc #算法(DR模式) lb_kind DR #(同一IP的连接60秒内被分配到同一台realserver) persistence_timeout 0 #(用TCP协议检查realserver状态) protocol TCP real_server 192.168.2.132 80 { #(权重) weight 100 TCP_CHECK { #(10秒无响应超时) connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.1682.133 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } # 启动Keepalived服务 [root@yt-01 ~]# systemctl start keepalived 查看网卡信息: [root@yt-01 ~]# ip add 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:be:0e:17 brd ff:ff:ff:ff:ff:ff inet 192.168.2.131/24 brd 192.168.2.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.2.300/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::592f:39cc:1b50:1d07/64 scope link valid_lft forever preferred_lft forever #虚拟IP(VIP)在ens33网卡上 # 查看ipvsadm规则 [root@director ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.300:80 wlc -> 192.168.2.132:80 Route 100 0 0 -> 192.168.2.133:80 Route 100 0 0
5.3 配置Real Server
# 编辑路由转发脚本 [root@yt-02 ~]# vim /usr/local/sbin/lvs_rs.sh #/bin/bash vip=192.168.2.300 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 #参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html 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 # 运行脚本 [root@yt-02 ~]# sh /usr/local/sbin/lvs_rs.sh RS3上同上
配置完成
5.4 测试
在浏览器访问VIP:192.168.2.300,刷新网页,访问结果由RS1、RS2交替回复,停掉任意一台RS服务器,网页不会中断。5.5 Keepalived+LVS作用
Keepalived搭建高可用保证LVS中director宕机后服务器不瘫痪(用多台Director)如果只使用LVS,那么当LVS架构中某个real server宕机后,director仍然会继续向其发送请求,添加Keepalived后会自动将宕机的real server清除出rs列表。
相关文章推荐
- Keepalived+LVS-DR模式高可用负载均衡集群的搭建
- 高可用负载均衡集群Keepalived+lvs-DR模式的搭建
- LVS+Keepalived负载均衡集群之DR模式
- LVS+keepalived DR模式配置高可用负载均衡集群
- Linux集群架构(LVS DR模式搭建、keepalived + LVS)
- LVS集群、DR模式搭建、Keepalived+LVS DR
- 用keepalived+lvs_dr搭建高可用的负载均衡集群
- LVS/DR + keepalived搭建负载均衡集群
- apache+inotify-tools+keepalived+lvs-DR模式配置高可用负载均衡集群
- Keepalived+LVS-DR模式配置高可用负载均衡集群
- 【Linux集群架构】LVS DR模式搭建和keepalived + LVS
- Keepalived+LVS-DR模式配置高可用负载均衡集群
- Keepalived+LVS-DR模式配置高可用负载均衡集群
- LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)
- Linux下Keepalived+LVS-DR模式配置高可用负载均衡集群
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务(DR模式
- 负载均衡(LVS DR模式搭建,DR只用一个公网ip,Keepalived+LVS DR)
- centos6.5里搭建LVS+Keepalived(DR模式)集群
- LVS-DR模式的配置及Heartbeat+Ldirectord+DR高可用负载均衡集群的搭建
- 使用keepalived搭建高可用的LVS-DR集群 推荐