linux lvs公网ip,Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive...

负载均衡集群介绍

b239ef71f4160ef87f1f933793c24294.png

LVS介绍

fc84dae22802d81055e2ebd3ef01542f.png

1.LVS NAT模式:(,目标ip转发。适用于小型集群,机器数量不多10台左右)

4079b28b12e66749df198af4c8af478d.png

2.LVS IP Tunnel模式(将目标ip进行更改)

2940d47ba66ac28c669474ebb3f502ba.png

(在这个模式下的rs机器都是配置有公网ip)

3.LVS DR模式(把数据包的MAC地址修改)

919b8d619892696cbabb311174e1f784.png

NAT模式适合小型集群,机器在10台左右。其优势是节省公网ip。 IP TUNNEL和DR

相差不大,能使用在较大的集群模式下,但是每台rs服务器都要配置有公网ip,这样会比较浪费公网ip,费钱。

LVS的调度算法

aa10c86ebcfda94ddf57d2831fb46ce8.png

常用的算法是前四种:rr 、wrr 、 lc 、wlc。

LVS NAT模式搭建

准备工作:

b52976b2b060f3c921589237468140a9.png

1.准备三台机器(我是从第二台直接克隆的)

(1)修改第三台克隆机的ip

959877d9627222c5135ca9da27f1230f.png

修改完重启服务:

e50b3993c514d24303ce92ec4f4938cb.png

(2)修改克隆集主机名:

hostnamectl set-hostname cansheng3

2.将分发器,也叫调度器(简写为dir)机器(133)添加多一块网卡:

(因为之前已经配置有了ens37)

89cf9173c33d5e4bea219a4fc3729e0c.png

这个ens37的网卡是仅主机模式

5a45b09db9f8a780df07be1611ac8833.png

同时查看到这个网卡的子网ip网段是192.168.243.0

5747762cdd7c88a98d976a05b94b36af.png

(1)所以对这个ens37设置ip:

vim /etc/sysconfig/network-scripts/ifcfg-ens37

9d8457dae1b72944acff47d0cf62ca22.png

修改完后重启网络服务:

systemctl  restart network

f388441cd14cdda55dcccf9a7b03bf35.png

(2)检测ip是否能ping通:(在window的终端下测试)

ping 192.168.243.144

0601f889e4da7f3d6c0da9e888089a20.png

3.修改两台rs(真实服务器)网关(要和dir分发器的内网一致)

06f74ba74788707b7f6024a52a12b577.png

vim /etc/sysconfig/network-scripts/ifcfg-ens33

4c486f82173f4685c95e7a9a4913a73b.png

!!当这两台机器rs的网关修改成dir内网的ip时则不能上网。

修改完后重启服务和查看网关

systemctl restart network

route -n

84979231363371addae6aa78b00419a3.png

4.三台机器上都执行执行

(1)systemctl stop firewalld;

systemc disable firewalld

(2)yum install -y iptables-services

(3)systemctl start  iptables

(4)iptables -F;

(5)service iptables save

关闭selinux

vim /etc/selinux/config

e32c9cded77296b58499b38f9c28e8f4.png

(如果在使用yum下载的时候发现很慢,则先吧rpel改了名字再下载,需要用到rpel

再把名字改回来

ef898026f1a0a33ffee270c30d311a38.png

mv /etc/yum.repos.d/epel.repo  /etc/yum.repos.d/epel.repo1

)

开始 NAT模式搭建

1.只要在分发器dir上安装ipvsadm  (实现lvs功能的重要工具)

yum install -y ipvsadm

2d5def43c287a2fc057b8156ca4cdb02.png

2.在dir上编写脚本,vim /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.136.0/24  -j MASQUERADE  //实现让同网段的内网实现上网

# director设置ipvsadm

IPVSADM='/usr/sbin/ipvsadm'

$IPVSADM -C   //清空ipvsadm规则

$IPVSADM -A -t 192.168.243.144:80 -s lc -p 3  //添加一个规则,并指定调度算法为lc ,-p指定超时时间(单位秒,建议不加)

$IPVSADM -a -t 192.168.243.144:80 -r 192.168.136.134:80 -m -w 1 //-m:表示NAT模式;-i:ip Tunnel;-g:DR模式-w:表示权重

$IPVSADM -a -t 192.168.243.144:80 -r 192.168.136.135:80 -m -w 1  //-a:添加rs;-t:TCP

(-p的设置会是请求在指定的时间内请求在同一台rs上)

f0bb1e8e47093647047924a3d08ff875.png

写完脚本执行一下:

sh /usr/local/sbin/lvs_nat.sh

(执行脚本任何输出表示正确)

NAT模式效果测试

1bdfff2faf0c6929002a79b0d6995c2b.png

1. 两台rs上都安装nginx,并开启服务

2.设置两台rs的主页,做一个区分,也就是说直接curl两台rs的ip时,得到不同的结果

A:对rs1机器操作

> /usr/share/nginx/html/index.html (清空文件内容)

vim /usr/share/nginx/html/index.html

a839f3bc56278793e6b6961134e41be5.png

B:对rs2机器操作:

> /usr/share/nginx/html/index.html (清空文件内容)

vim /usr/share/nginx/html/index.html

3fa5c585e05c6b36a05be727bce592dd.png

3. 浏览器里访问192.168.243.144,多访问几次看结果差异

浏览器中输入公网ip

b1cdaef71aac4c1626c16b8ad35f4ca3.png

使用curl测试:curl 192.168.243.144

126d0d2cbd4d56b16f36e24eb69b5469.png

(可看出请求均衡在两台rs上)

使用命令 ipvadm -ln 可以看到相应的规则

cd8c6d45c3a487f2d045bfaf95cb6f6a.png

DR模式搭建

(在生产环境中,使用较多的是DR模式,但是使用公网ip资源大。

在生产中也可以搭建一个内网,使用一个公网ip,映射到公网的VIP上,从而减少公网资金支出

)

准备工作

008b41834953bf64a169b9f9c1bc2d8e.png

把上面实验的两台rs的网关修改回来

0e4e83186ab09b700f254f55aee777a2.png

DR模式搭建

1c507ec0028b6bbe91b98c75547dfbb1.png

1.dir上编写脚本 vim /usr/local/sbin/lvs_dr.sh //内容如下

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/usr/sbin/ipvsadm

vip=192.168.136.200

rs1=192.168.136.134

rs2=192.168.136.135

#注意这里的网卡名字

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

92047b1494d23ce41c15db0b3f7597a8.png

执行脚本:sh /usr/local/sbin/lvs_dr.sh

3551ad6a4c1d1d4ac7f75f2adc8e5aa8.png

(这个提示是正常的。因为我们执行了ifdown 和ifup)

2.两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh//内容如下

#/bin/bash

vip=192.168.136.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地址给客户端

#参考文档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

1e536b66b0f4dc3358ed806c3d9cc856.png

两台rs都执行脚本: sh /usr/local/sbin/lvs_rs.sh

检测VIP

ip addr

8e02a9ad2da4452a3c41256057dc10f1.png

3.测试:

17c7b85f5f603ed8d05a02dc1e8a5e16.png

测试最好是用另外一台不同ip网段的虚拟机测试最好。

(当我们的访问量很大时,自然起到均衡的作用。)

keepalived+ lvs

(在LVS架构中,NAT和DR模式,当后端的RS宕机时,调度器依然会把请求转发到宕机的RS上。使用keepalived可以解决此问题,keepalived能实现高可用和负载均衡)

e568b67401a52e714e6cf39a6f6f8cbf.png

52299546d1b9c868d3dad57fd6c8567f.png

一般的情况下,使用这个keepalived做负载均衡,首先就是要做高可用再做负载均衡

所以最少要准备四台机器:两台做keepalived,两台作为真实机器

(本次实验用三台机器

dir(安装keepalived)136.133

rs1 136.134

rs2 133.135

vip 133.200

)

步骤

(在实验之前,我们甚至是不需要使用ipvsadm 即可ipvsadm -c 卸载)

1. 编辑keepalived配置文件:

vim /etc/keepalived/keepalived.conf  (先把之前内容清空)

/内容请到https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/lvs_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 aminglinux

}

virtual_ipaddress {      #虚拟ip:VIP

192.168.136.200

}

}

virtual_server 192.168.136.200 80 {  #端口根据具体监控的端口确定

#(每隔10秒查询realserver状态)

delay_loop 10

#(lvs 算法)

lb_algo wlc

#(DR模式)

lb_kind DR

#(同一IP的连接60秒内被分配到同一台realserver)

persistence_timeout 60

#(用TCP协议检查realserver状态)

protocol TCP

real_server 192.168.136.134 80 {

#(权重)

weight 100

TCP_CHECK {

#(10秒无响应超时)

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.136.135 80 {

weight 100

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

添加完内容后: 启动keepalived服务

systemctl start keepalived

697be21ddabafa37b60dff16a45afa3e.png

2.其他两台真实机器rs的nginx服务要启动起来

systemctl start nginx

同时也要把之前的vip清空掉:systemctl restart network

3.使用 ipvsadm -ln :可以查看到设定的VIP和两台rs机器

6179770341b8be067bea75ea3eed72bf.png

此时我们尝试着把气筒一台或两台rs机器的nginx服务停止,可以发现

keepalived会把宕机的rs机器踢出,这样就可以保证到,当rs真实服务器

宕机后,请求不在发送到其上。

(1)停掉rs1机器后的效果:

7c38838782d25ab4ae79f7e4f0f4b862.png

(2)把两台的rs机器都停了

3355a65a8b1618ac29d42566d9304a3a.png

当我们把rs机器再次启动的时候,keepalived会自动的把负载的机器添加回来

!!!!使用keepalived+LVS DR需要注意的事项.

(1)两台rs上,依然要执行/usr/local/sbin/lvs_rs.sh脚本

两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh//内容如下

#/bin/bash

vip=192.168.136.200

#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端

ifdown lo

ifup lo

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up //命令行下添加ip。临时添加,重启失去

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

分别在dir上和两个rs上执行这些脚本

(2)在dir分发器需执行

a99744641fc2ef4593e80f6aea01d32d.png

执行:echo 1 >/proc/sys/net/ipv4/ip_forward

浏览器测试:

2f85f9756e996d968491b7d253dfed19.png

2da9be90616533636b7f8cc462506e71.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lvsLinux Virtual Server)是一种基于Linux的负载均衡技术,而keepalived是一种用于实现高可用性的软件。它可以通过检测服务器的状态来决定是否要将流量转发到某个服务器上。引用和给出了两种安装和配置keepalived的方法,你可以根据这些引用中提供的步骤来安装和配置keepalived。在安装和配置完成后,你可以使用ipvsadm命令来管理LVS策略,其中可以包括负载均衡和高可用性设置。引用中给出了一个keepalived配置文件的示例,你可以根据自己的需求进行修改和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [LVS+Keepalived详解](https://blog.csdn.net/u011328843/article/details/122057738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [LVS(DR模式负载均衡)+Keepalives(高可用模式)](https://blog.csdn.net/baidu_39076057/article/details/93460816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值