第十九周

1、简述lvs四种集群特点及使用场景。

lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑
出的RS的RIP和PORT实现转发
(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统
第十九周_第1张图片
lvs-dr:操纵封装新的MAC地址

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报
文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标
MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标
IP/PORT均保持不变
(1) Director和各RS都配置有VIP
(2) 确保前端路由器将目标IP为VIP的请求报文发往Director
在前端网关做静态绑定VIP和Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;
RIP的网关不能指向DIP,以确保响应报文不会经由Director
(4)RS和Director要在同一个物理网络
(5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往
Client
(6)不支持端口映射(端口不能修败)
(7)RS可使用大多数OS系统
第十九周_第2张图片
lvs-tun:在原请求IP报文之外新加一个IP首部

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文
之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标
RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)
(1) DIP, VIP, RIP都应该是公网地址
(2) RS的网关一般不能指向DIP
(3) 请求报文要经由Director,但响应不经由Director
(4) 不支持端口映射
(5) RS的OS须支持隧道功能

lvs-fullnat:修改请求报文的源和目标IP

lvs-fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP
(1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,
RIP的网关一般不会指向DIP
(2) RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还
要将其发往Client
(3) 请求和响应报文都经由Director
(4) 支持端口映射
注意:此类型kernel默认不支持

2、描述LVS-DR工作原理,并配置实现。

vip:192.168.0.11

lvs:192.168.0.12

rs1:192.168.0.13

rs2:192.168.0.14

rs1,rs2安装:

yum -y install httpd
#rs1
echo server1 > /var/www/html/index.html
#rs2
echo server2 > /var/www/html/index.html

vi rs.sh
##################################
#!/bin/bash
vip=192.168.0.11
mask='255.255.255.255'
dev=lo:1
dir=/proc/sys/net/ipv4/conf/
case $1 in
start)
     echo 1 > ${dir}all/arp_ignore
     echo 1 > ${dir}lo/arp_ignore
     echo 2 > ${dir}all/arp_announce
     echo 2 > ${dir}lo/arp_announce
     ifconfig $dev $vip netmask $mask #broadcast $vip up
     echo 'The RS Server is Ready!'
     ;;
stop)
     ifconfig $dev down
     echo 0 > ${dir}all/arp_ignore
     echo 0 > ${dir}lo/arp_ignore
     echo 0 > ${dir}all/arp_announce
     echo 0 > ${dir}lo/arp_announce
     echo 'The RS Server is Canceled!'
     ;;
*)
     echo "Usage:$(basename $0) start|stop"
     exit 1
     ;;
esac
#运行
sh rs.sh start

lvs安装:

#添加vip
ifconfig eth0:1 192.168.0.11 broadcast 192.168.0.254 netmask 255.255.255.255 up
#或者
ip a a 192.168.0.11/24 dev eth0
#配置lvs规则
yum -y install ipvsadm
#使用轮询算法,便于测试
ipvsadm -A -t 192.168.0.11:80 -s rr -p
ipvsadm -a -t 192.168.0.11:80 -r 192.168.0.13
ipvsadm -a -t 192.168.0.11:80 -r 192.168.0.14
#查看
ipvsadm -Ln

脚本安装

#!/bin/bash
vip='192.168.0.11'
iface=‘lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.0.13'
rs2='192.168.0.14'
scheduler='wrr'
type='-g'
case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler -p
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop“
exit 1
esac

测试:

while :;do curl 192.168.0.11;sleep 0.5;done

3、实现LVS+Keepalived高可用。

HA Cluster 配置准备:
(1) 各节点时间必须同步
ntp, chrony
(2) 确保iptables及selinux不会成为阻碍
(3) 各节点之间可通过主机名互相通信(对KA并非必须)
建议使用/etc/hosts文件实现
(4) 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信(对KA
并非必须)

vip:192.168.0.10
keepalived server1:192.168.0.11
keepalived server2:192.168.0.12
real server1:192.168.0.13
real server2:192.168.0.14

1.安装keepalived

yum -y install keepalived

2.keepalived配置文件

vi /etc/keepalived/keepalived.conf
#################################################################
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1 #主机名
   vrrp_mcast_group4 224.100.100.100 #多播地址
}

vrrp_instance VI_1 {
    state MASTER #从为BACKUP
    interface eth0
    virtual_router_id 66
    priority 100 #从为80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.10/24 dev eth0 label eth0:1
    }
}

#lvs配置
virtual_server 192.168.0.10 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
   # persistence_timeout 50  #持久连接
    protocol TCP

    #sorry_server 192.168.200.200 1358

    real_server 192.168.0.13 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.0.14 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

3.可添加日志
将keepalived设置自定义输出

vi /etc/sysconfig/keepalived
#修改
KEEPALIVED_OPTIONS="-D -S 6"

配置自定义输出日志

vi /etc/rsyslog.conf
#添加
local6.*                                                /var/log/keepalived.log

你可能感兴趣的:(第十九周)