Linux-centos下安装lvs+keepalived高可用

时间:2021-01-20 10:01:21

一、图示

Linux-centos下安装lvs+keepalived高可用

二、简介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直接发往客户端;
不支持端口映射;

Linux-centos下安装lvs+keepalived高可用

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,换行即可
        }
   }
6.关闭防火墙
  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)。