第十八章 Linux集群架构

18.1 集群介绍

第十八章 Linux集群架构

18.2 keepalived介绍

第十八章 Linux集群架构

18.3 用keepalived配置高可用集群(上)

第十八章 Linux集群架构

准备两台机器

一个为mater   另一个为backup

两台机器都关闭防火墙

两台机器都安装上nginx,为了下一步实验用

两台机器都安装keepalived

yum install -y keepalived

设定vip为100

master上的配置文件

cat /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.93.100
    }

    track_script {
        chk_nginx
    }

}
master上监控脚本

/usr/local/sbin/check_ng.sh

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl  start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi
脚本赋755权限

systemctl start  keepalived  启动服务

18.4 用keepalived配置高可用集群(中)

第十八章 Linux集群架构

backup 配置文件

/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.93.100
    }

    track_script {
        chk_nginx
    }

}

监控脚本

/usr/local/sbin/check_ng.sh
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

脚本赋755权限

systemctl start  keepalived  启动服务

18.5 用keepalived配置高可用集群(下)

第十八章 Linux集群架构

18.6 负载均衡集群介绍

第十八章 Linux集群架构

18.7 LVS介绍

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构

18.8 LVS的调度算法

第十八章 Linux集群架构

18.9 LVS NAT模式搭建(上)

第十八章 Linux集群架构

第十八章 Linux集群架构第十八章 Linux集群架构

第十八章 Linux集群架构

centos1安装 ipvsdam

yum install -y ipvsdam

centos1 网卡配置

第十八章 Linux集群架构

dir 编写配置脚本

/usr/local/sbin/lvs_nat.sh

#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.93.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.188.110:80 -s rr 
$IPVSADM -a -t 192.168.188.110:80 -r 192.168.93.128:80 -m -w 1
$IPVSADM -a -t 192.168.188.110:80 -r 192.168.93.130:80 -m -w 1

18.10 LVS NAT模式搭建(下)

centos2的网关设为dir

第十八章 Linux集群架构

centos3的网关设为dir

第十八章 Linux集群架构

第十八章 Linux集群架构

第十八章 Linux集群架构
第十八章 Linux集群架构

课堂串讲

18.1 集群介绍
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群

18.1 集群介绍

  • 集群根据功能划分为两大类:高可用负载均衡
    • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务
      实现高可用的开源软件有:heartbeatkeepalived
    • 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2。实现负载均衡的开源软件有LVSkeepalivedhaproxynginx,商业的有F5Netscaler

18.2 keepalived介绍

在这里我们使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,不太稳定。建议以后使用高可用使用keepalived实现。
keepalived通过VRRP(Virtual Router Redundancy Protocl)来实现高可用。其中文叫虚拟路由冗余协议。在这个协议里会将多台功能相同的路由器(机器)组成一个小组,这个小组里会有1个master角色和N(N>=1)个backup角色。master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的mater。
Keepalived主要有三个模块,分别是corecheckvrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。

18.3/18.4/18.5 用keepalived配置高可用集群

先准备两台机器做高可用集群 一般使用高可用都是针对机器上的服务的 这里以Nginx服务为例子,就是针对Nginx来实现高可用 企业上一般会让Nginx作为负载均衡来使用,当他出现单点故障时,就会导致后端的web机器访问不了, Nginx使用高可用是很有必要的。
192.168.80.102为master 192.168.80.104为backup

步骤

1.两台机器上分别安装keepalived

1
[[email protected] ~]# yum install -y keepalived

2.两台机器上分别安装好针对的服务,这里是Nginx

master上之前编译安装过Nginx
backup为了区别用master 这里使用yum安装

1
2
[[email protected] ~]# yum install -y epel-release
[[email protected] ~]# yum install -y nginx

 

3.master上编辑keepalived配置文件

我们可以先把自动的配置文件清空 才自定义编辑

1
2
[[email protected] ~]# > /etc/keepalived/keepalived.conf  ##清空内容
[[email protected] ~]# vim /etc/keepalived/keepalived.conf

 

输入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
global_defs {
   notification_email {
[email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 38003800
    }
    virtual_ipaddress {
        192.168.80.66
    }

    track_script {
        chk_nginx
    }

}

 

内容在 第十八章 Linux集群架构https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf
keepalived配置文件路径在/etc/keepalived/keepalived.conf

参数 含义
global_defs 全局定义
notification_email 出现问题时给邮箱发邮件
notification_email_from 又哪个邮箱发邮件
vrrp_script chk_nginx 检查Nginx服务是否正常 指定检查脚本的路径
interval 3 检查间断为3秒
state MASTER 定义master
interface 指定网卡发送VRRP包
virtual_router_id 定义路由群的id
priority 定义权重
authentication 定义认证
auth_type 认证类型
auth_pass 认证密码
virtual_ipaddress 定义虚拟ip(vip)此IP用来访问此虚拟路由群的,就是把master和backup看作一台机器单个IP
chk_nginx 加载检查脚本

4.master上编写检查Nginx脚本

1
[[email protected] ~]# vim /usr/local/sbin/check_ng.sh

输入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

 

内容在 第十八章 Linux集群架构https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh
脚本上systemctl stop keepalived关闭keepalived服务是为了启动backup上的keepaliveed时候 不会出现“脑裂”现象。即master和backup的keepaliveed各自抢占资源,如VIP,外部访问时候出现两台机器同个ip。

5.更改检查脚本的权限

1
[[email protected] ~]# chmod 755 /usr/local/sbin/check_ng.sh

6.master上启动keepalived服务

1
[[email protected] ~]# systemctl start keepalived

测试

master上停止Nginx服务看是否自动开启

1
2
3
4
5
[[email protected] ~]# service nginx start
Starting nginx (via systemctl):                            [  确定  ]

[[email protected] ~]# ps aux |grep nginx
root      2720  0.0  0.0 112720   964 pts/0    R+   23:19   0:00 grep --color=auto nginx

 

发现没有启动Nginx,这里是防火墙问题

1
2
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl stop firewalld

 

现在看到Nginx是自动开启的

1
2
3
4
5
[[email protected] ~]# ps aux |grep nginx
root      3387  0.0  0.1  45888  1284 ?        Ss   23:22   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    3391  0.0  0.4  48380  4168 ?        S    23:22   0:00 nginx: worker process
nobody    3392  0.0  0.3  48380  3916 ?        S    23:22   0:00 nginx: worker process
root      3394  0.0  0.0 112720   968 pts/0    R+   23:22   0:00 grep --color=auto nginx

 

ip add查看VIP

keepalived日志在/var/log/messages中看到

7.为了让实验成功 两台机器都关闭防火墙

1
2
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl stop firewalld

8.backup上编辑keepalived配置文件

1
2
[[email protected] ~]# > /etc/keepalived/keepalived.conf
[[email protected] ~]# vim /etc/keepalived/keepalived.conf

输入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
global_defs {
   notification_email {
[email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.80.66
    }

    track_script {
        chk_nginx
    }

}

 

内容在 第十八章 Linux集群架构https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf
这里和master上的不一样的地方是state BACKUPpriority 90 backup的权重比主少

9.backup上编写检查Nginx脚本

1
[[email protected] ~]# vim /usr/local/sbin/check_ng.sh

输入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

 

内容在 第十八章 Linux集群架构https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh
和主上的区别在于 systemctl start nginx 是由于从机器上使用yum安装的

10.修改backup上的脚本权限并启动keepalived服务

1
2
[[email protected] ~]# chmod 755 /usr/local/sbin/check_ng.sh
[[email protected] ~]# systemctl start keepalived

测试

master上之前设置了默认虚拟主机 更改主页内容
第十八章 Linux集群架构
backup主页的地址在/usr/share/nginx/html/index.html 并更改主页内容
第十八章 Linux集群架构
同时查看vip是加载maser的主页的
第十八章 Linux集群架构
模拟master机器宕机,直接把maser上的keepalied服务给停掉 早看看vip是否给了backup

1
[[email protected] ~]# systemctl stop keepalived

 

留意backup

1
2
3
4
5
6
7
8
9
[[email protected] ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:71:e1:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.104/24 brd 192.168.80.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.80.66/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7e09:37c4:bc0a:504a/64 scope link
       valid_lft forever preferred_lft forever

 

看到vip已经来到了backup上,再用浏览器看看
第十八章 Linux集群架构
再把maser上的keepalived启动 发现vip又回到了主上

1
2
3
4
5
6
7
8
9
10
[[email protected] ~]# systemctl start keepalived

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:06:17:0b brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.102/24 brd 192.168.80.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.80.66/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::c25c:7f22:5b19:4d48/64 scope link
       valid_lft forever preferred_lft forever

 

18.6 负载均衡集群介绍
18.7 LVS介绍
18.8 LVS调度算法
18.9/18.10 LVS NAT模式搭建

18.6 负载均衡集群介绍

负载均衡主流开源软件LVSkeepalivedhaproxynginx等。
其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用。
其实keepalived的负载均衡功能其实就是lvs,lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种。但是nginx可以实现根据目录来区分后端的服务器等更为灵活的功能。
相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更加灵活,能实现更多的个性化需求。

18.7 LVS介绍

LVS是由国人章文嵩开发的。其流行度不亚于apache的httpd,是基于TCP/IP做的路由和转发,稳定性和效率很高。
LVS最新版本基于Linux内核2.6,有好多年不更新了。
LVS有三种常见的模式:NATDRIP Tunnel
LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs

NAT模式

这种模式借助iptables的nat表来实现
用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
rs需要设定网关为分发器的内网ip
用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈,一般请求量在10台以下。
在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源。
第十八章 Linux集群架构

IP Tunnel模式

这种模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip
客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
rs接收数据包后,会还原原始数据包,这样目标IP又变回为vip,因为所有rs上配置了这个vip,此时它会认为用户请求的就是它自己。
这个模式下的rs都会独立的公网IP来回复用户的请求,可以减少分发器的压力。
第十八章 Linux集群架构

DR模式

这种模式,也需要有一个公共的IP配置在分发器和所有rs上,也就是vip
和IP Tunnel不同的是,它会把数据包的MAC地址修改为rs的MAC地址
rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己。
此模式下rs配置公网IP来返回用户请求。
第十八章 Linux集群架构

总结

综上所述,nat模式就是做iptables路由转发 IP Tunnel模式实际上是更改目标IP DR模式更改目标MAC地址

18.8 LVS调度算法

名称 缩写 含义
轮询 Round-Robin rr 平均分发用户请求
加权轮询 Weight Round-Robin wrr 带权重的轮询
最小连接 Least-Connection lc 分发用户给连接数少的机器上
加权最小连接 Weight Least-Connection wlc 带权重的最小连接
基于局部性的最小连接 Locality-Based Least Connections lblc  
带复制的基于局部性最小连接 Locality-Based Least Connections with Replication lblcr  
目标地址散列调度 Destination Hashing dh  
源地址散列调度 Source Hashing sh  

18.9/18.10 LVS NAT模式搭建

准备工作

准备三台机器 一台作分发器,两台作rs
分发器:kun03 内网:192.168.80.102 外网:192.168.218.128
rs1:kun05 内网:192.168.80.104 网关:192.168.80.102
rs2:kun06 内网:192.168.80.105 网关:192.168.80.102

kun03上添加外网网卡 选择仅主机模式
第十八章 Linux集群架构

第十八章 Linux集群架构

编辑外网网卡配置

1
2
3
4
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[[email protected] network-scripts]# vim !$
vim ifcfg-ens37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
#UUID=75aabb45-9fbe-45d6-800e-fa2d04f72e13
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.218.128
#GATEWAY=192.168.80.2
NETMASK=255.255.255.0
DNS1=119.29.29.29
1
2
3
[[email protected] network-scripts]# ifdown ens37 && ifup ens37
成功断开设备 'ens37'。
连接已成功**(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)

可以ping通
第十八章 Linux集群架构

kun05和kun06上设置网关为192.168.80.102

1
2
3
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=192.168.80.102

 

1
2
3
4
5
6
7
[[email protected] ~]# systemctl restart network

[[email protected] ~]# route -n   ##查看网关
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.80.102  0.0.0.0         UG    100    0        0 ens33
192.168.80.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

三台机器上关闭firewalld

1
2
3
4
5
6
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# setenforce 0
[[email protected] ~]# vim /etc/selinux/config

SELINUX=disbaled

各自下载iptables 并清空规则和保存

1
2
3
4
[[email protected] network-scripts]# yum install -y iptables-services
[[email protected] network-scripts]# systemctl start iptables    ##启动iptables
[[email protected] network-scripts]# iptables -F   ##清空规则
[[email protected] network-scripts]# service iptables save   ##保存空规则

步骤

1.在分发器上安装ipvsadm工具

在kun03上

1
[[email protected] ~]# yum install -y ipvsadm

 

ipvsadm工具实现lvs功能

2.在分发器上编辑脚本

1
[[email protected] ~]# vim /usr/local/sbin/lvs_nat.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.80.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.218.128:80 -s rr -p 3
$IPVSADM -a -t 192.168.218.128:80 -r 192.168.80.104:80 -m -w 1
$IPVSADM -a -t 192.168.218.128:80 -r 192.168.80.105:80 -m -w 1

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -j MASQUERADE让同网段的网实现上网
ipvsadm -C清除lvs规则
-A 增加规则
-t 指定分发器外网IP
-s 指定算法
-p 指定rs上的超时时间
-m 指NAT模式
-w 指定权重

3.执行脚本

1
[[email protected] ~]# sh /usr/local/sbin/lvs_nat.sh

测试

两台rs上安装Nginx
之前在kun05机器上yum了安装过Nginx 现在在kun06上安装

1
2
[[email protected] ~]# yum install -y epel-release
[[email protected] ~]# yum install -y nginx

 

设置两台rs的主页,做一个区分

1
2
3
[[email protected] ~]# vim /usr/share/nginx/html/index.html

kun05

 

1
2
3
4
[[email protected] ~]# > /usr/share/nginx/html/index.html
[[email protected] ~]# vim !$

kun06
1
[[email protected] ~]# service nginx start  ##启动Nginx

在分发器上使用curl命令访问公网ip

1
2
3
4
5
6
7
8
[[email protected] ~]# curl 192.168.218.128
kun06
[[email protected] ~]# curl 192.168.218.128
kun05
[[email protected] ~]# curl 192.168.218.128
kun06
[[email protected] ~]# curl 192.168.218.128
kun05

 

使用浏览器访问
第十八章 Linux集群架构
第十八章 Linux集群架构

ipvsadm -ln 可以查看ipvsadm分发数据的情况

[[email protected] ~]# 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.218.128:80 rr
  -> 192.168.80.104:80            Masq    1      0          6         
  -> 192.168.80.105:80            Masq    1      1          4

扩展:

VRRP协议

https://blog.****.net/u013920085/article/details/21184143

keepalived邮件告警

http://blog.51cto.com/6764097/1954158

https://blog.****.net/HzSunshine/article/details/62052398

LVS 三种模式图解

http://blog.51cto.com/jiekeyang/1839583

LVS算法 DH

http://blog.51cto.com/lovvvve/1141713

arp_ignore和arp_announce

https://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html